深入理解Tez

什么是Tez

MapReduce(下面简称MR)的缺点很明显,性能比较弱,效率不高。 原因在于它只能把Job抽象成为Map, Reduce,但是复杂的任务可以有几十个MR任务,中间可能会有很多重复的任务。 而且MR并不支持对于整个pipeline的任务进行优化。比如说若干个MR任务的组合可以合并成一个来计算,这样就减少了数据的读写,传输的开销。归根结底,是因为Hadoop不支持任务的DAG(有向无环图)描述。

Tez提供了一个可重用,灵活的框架来支持数据流模型。他的主要特点是:

  1. 用户可以将自己的Job描述成一个DAG,这样可以进行更灵活的优化和配置。
  2. 提供了灵活的Runtime API。Tez支持在Runtime对DAG的配置进行修改,比如对于partitition的调整。
  3. 提供了data-locality感知, 资源重用和错误容忍。

术语介绍

首先介绍下Tez中会用到的术语:

  • DAG: 有向无环图, 用来表示数据处理的工作流。 而DAG中边的方向就是数据流动的方向。
  • Vertex: 有向无环图中的节点代表逻辑上数据处理中的一步。可以是数据的过滤,转换等。
  • Logical Vertex: 一个Logical包含一系列的Vertex。
  • Task: 一个Vertex对应的逻辑上的处理在实际计算的时候,会被分拆成若干个Tasks并运行在不同机器上。
  • Physical DAG: Physical DAG包含了一个Logical Vertex中展开的Tasks. //狗屁不通,修改
  • Edge: Logical Vertex中的edge代表了上下游Vertex间的数据依赖。 Tasks之间的edge则代表了不同Tasks之间数据的流动。

Tez架构介绍

Tez API

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容