我想知道是什么让Apache Tez的hive比map reduce的Hive快得多。我不能理解DAG的概念。
任何人都有很好的参考资料来理解Apache TEZ的体系结构。
发布于 2014-11-25 22:25:48
Hadoop Summit的演示文稿(幻灯片35)讨论了DAG方法与MapReduce范式的优劣:
http://www.slideshare.net/Hadoop_Summit/murhty-saha-june26255pmroom212
本质上,它将允许更高级别的工具(如Hive和Pig)在作业开始之前定义它们的整体处理步骤(又称工作流,又称有向循环图)。DAG是完成作业(配置单元查询、Pig作业等)所需的所有步骤的图形。因为整个作业的步骤可以在执行时间之前计算出来,所以系统可以利用在“内存”中缓存中间作业结果的优势。然而,在MapReduce中,MapReduce阶段之间的所有中间数据都需要写入HDFS (磁盘),从而增加了延迟。
YARN还允许容器重用于Tez任务。例如,每个服务器被分成多个“容器”,而不是“映射”或“减少”插槽。对于作业执行中的任何给定点,这允许Tez根据需要将整个集群用于map阶段或reduce阶段。而在YARN之前的Hadoop v1中,map插槽(和reduce插槽)的数量是在平台级别固定/硬编码的。更好地利用所有可用的群集资源通常会带来更快的速度
发布于 2014-12-02 13:35:33
Apache Tez代表了传统MapReduce的替代方案,它允许作业满足快速响应时间和an级极限吞吐量的需求。
像Hive和Pig这样的高级数据处理应用需要一个执行框架,能够以高效的方式表达其复杂的查询逻辑,然后高性能地执行它,该框架由Tez管理。Tez通过将数据处理建模为数据流图而不是单个作业来实现这一目标。
…图中的顶点表示应用逻辑,而边表示数据的移动。丰富的数据流定义API允许用户以直观的方式表达复杂的查询逻辑,它自然适合于由更高级别的声明性应用程序生成的查询计划,如Hive和Pig...数据流管道可以表示为将运行整个计算的单个Tez作业。Tez负责将此逻辑图扩展为任务的物理图并执行它。
Apache Tez博客文章中的Data processing API描述了一个用于表示数据处理的DAG的简单Java API。该API有三个组件
·DAG。这定义了整个工作。用户为每个数据处理作业创建一个DAG对象。
·顶点。它定义了用户逻辑以及执行用户逻辑所需的资源和环境。用户为作业中的每个步骤创建一个Vertex对象,并将其添加到DAG。
·边缘。这定义了生产者和消费者顶点之间的连接。用户创建Edge对象,并使用它连接生产者和消费者顶点。
由Tez定义的边缘属性使其能够实例化用户任务,配置它们的输入和输出,适当地调度它们,并定义如何在任务之间路由数据。Tez还允许通过指定用户指南、数据大小和资源来定义每个顶点执行的并行性。
Data routing :定义任务之间的数据路由◦一对一:来自第i个生产者任务的数据路由到第i个消费者任务。
Broadcast:来自生产者任务的数据路由到所有消费者任务。
Scatter-Gather:生产者任务将数据分散到分片中,消费者任务收集分片。来自所有生产者任务的第i个分片路由到第i个消费者任务。
调度。定义何时调度消费者任务◦顺序:消费者任务可以在生产者任务完成后调度。Concurrent:消费者任务必须与生产者任务协同调度。
持久化数据源:定义任务输出的生命周期/可靠性◦持久化:任务退出后输出可用。输出可能会在以后丢失。Persisted-Reliable:输出被可靠地存储,并且将始终可用Ephemeral:输出仅在生产者任务运行时可用。
此Apache Tez Design Doc中提供了有关Tez架构的其他详细信息。
发布于 2014-08-29 08:27:16
我还没有使用Tez,但我已经读到过它。我认为让Hive比Tez运行得更快的主要两个原因是:
您可以在此处找到帮助您更好地理解Tez的链接列表:http://hortonworks.com/hadoop/tez/
https://stackoverflow.com/questions/25521363
复制相似问题