# tez **Repository Path**: src-openeuler/tez ## Basic Information - **Project Name**: tez - **Description**: The Apache TEZ project is aimed at building an application framework which allows for a complex directed-acyclic-graph of tasks for processing data - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2021-12-06 - **Last Updated**: 2025-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: db ## README # tez #### 介绍 Apache TEZ项目旨在构建一个应用程序框架,该框架允许复杂的有向非循环任务图来处理数据。 产生背景 MR性能差,资源消耗大,如:Hive作业之间的数据不是直接流动的,而是借助HDFS作为共享数据存储系统,即一个作业将处理好的数据写入HDFS,下一个作业再从HDFS重新读取数据进行处理。很明显更高效的方式是,第一个作业直接将数据传递给下游作业。 MR 默认了map和reduce阶段,map会对中间结果进行分区、排序,reduce会进行合并排序,这一过程并不适用于所有场景。 引擎级别的Runtime优化:MR执行计划在编译时已经确定,无法动态调整(?)。然而在执行ETL和Ad-hoc等任务时,根据实际处理的表大小,动态调整join策略、任务并行度将大大缩短任务执行时间。 优点: - 避免中间数据写回HDFS,减小任务执行时间 - vertex management模块使runtime动态修改执行计划变成可能 - input/processor/output编程模型,大大提高了任务模型的灵活性 - 提供container复用机制与Tez Session,减少资源消耗 缺点: - 出现数据重复问题等数据质量问题 - Tez与Hive捆绑,在其他领域应用较少 #### 软件架构 软件架构说明 - Vertex:定义了用户逻辑(如:map/reduce)与相关的资源与环境 - Edge:定义了上下游Vertex之间的连接方式。 Edge相关属性: Data movement:定义了producer与consumer之间数据流动的方式。 One-To-One: 第i个producer产生的数据,发送给第i个consumer。这种上下游关系属于Spark的窄依赖。 Broadcast: producer产生的数据路由都下游所有consumer。这种上下游关系也属于Spark的窄依赖。 Scatter-Gather: producer将产生的数据分块,将第i块数据发送到第i个consumer。这种上下游关系属于Spark的宽依赖。 Scheduling:定义了何时启动consumer Task Sequential: Consumer task 需要producer task结束后启动,如:MR。 Concurrent: Consumer task 与producer task一起启动,如:流计算。 Data source:定义了任务outp的生命周期与可靠性。 Persisted: 当任务退出后,该任务output依然存在,但经过一段时间后,可能会被删除,如:Mapper输出的中间结果。 Persisted-Reliable: 任务output总是存在,比如,MR中reducer的输出结 果,存在HDFS上。 Ephemeral: 任务输出只有当该task在运行的时候,才存在,如:流计算的 中间结果。 举例——MapReduce在Tez的编程模型 一个DAG图中只有两个Vertex,Map Vertex与Reduce Vertex。连接Map Vertex与Reduce Vertex的Edge有以下属性: - Data movement:Scatter-Gather - Scheduling:Sequential - Data Source:Map Vertex的Data Source为Persisted-Reliable,reduce Vertex 的 Data Source为Persisted - Tez Api实现WordCount #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)