更新时间:2024-10-11 GMT+08:00

Tez

Tez是Apache最新的支持DAG(有向无环图)作业的开源计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能。如果 Hive这样的项目使用Tez而不是MapReduce作为其数据处理的骨干,那么将会显著提升它们的响应时间,Tez构建在YARN之上,能够不需要做任何改动地运行MapReduce任务。

MRS将Tez作为Hive的默认执行引擎,执行效率远远超过原先的MapReduce的计算引擎。

有关Tez的详细说明,请参见:https://tez.apache.org/

Tez和MapReduce间的关系

Tez采用了DAG来组织MapReduce任务(DAG中一个节点就是一个RDD,边表示对RDD的操作)。它的核心思想是把将Map任务和Reduce任务进一步拆分,Map任务拆分为Input-Processor-Sort-Merge-Output,Reduce任务拆分为Input-Shuffer-Sort-Merge-Process-output,Tez将若干小任务灵活重组,形成一个大的DAG作业。

图1 Hive基于MapReduce提交任务和基于Tez提价任务流程图

Hive on MR任务中包含多个MapReduce任务,每个任务都会将中间结果存储到HDFS上——前一个步骤中的reducer为下一个步骤中的mapper提供数据。Hive on Tez任务仅在一个任务中就能完成同样的处理过程,任务之间不需要访问HDFS。

Tez和Yarn间的关系

Tez是运行在Yarn之上的计算框架,运行时环境由Yarn的ResourceManager和ApplicationMaster组成。其中ResourceManager是一个全新的资源管理系统,而ApplicationMaster则负责MapReduce作业的数据切分、任务划分、资源申请和任务调度与容错等工作。此外,TezUI依赖Yarn提供的TimelineServer实现Tez任务运行过程呈现。