Tez 执行引擎与 Hive 中的 Mapreduce 执行引擎

Tez execution engine vs Mapreduce Execution Engine in Hive

Hive中的Tez引擎和Map Reduce引擎有什么区别,在哪个进程中哪个引擎更好用(对于eg:joins,聚合?)

Apache Tez plug-in 与 MapReduce 兼容,但减少了磁盘访问量。 Tez 总是优于 MapReduce。

不过也有比Hive+Tez更好的系统,比如SparkSQL.

Tez 是一个 DAG-based 系统,它了解所有操作,并在开始执行之前优化这些操作。

MapReduce 模型简单地指出任何计算都可以通过两种计算步骤来执行——映射步骤和缩减步骤。一对 map 和 reduce 对数据进行一级聚合。复杂的计算通常需要多个这样的步骤。

Tez 通常 运行 在 MaprReduce 下,所以它只是一个 MapReduce,优化了更少和更紧凑的步骤。

Tez 是一种 DAG(有向无环图)架构。典型的 Map reduce 作业具有以下步骤:

  1. 从文件读取数据-->一次磁盘访问

  2. 运行 映射器

  3. 写映射输出-->第二次磁盘访问

  4. 运行 shuffle and sort --> read map output, third disk access

  5. write shuffle and sort --> 为reducer写入排序后的数据--> 第四次磁盘访问

  6. 运行 读取排序数据的reducers --> 第五个磁盘输出

  7. 写入减速器输出-->第六次磁盘访问

Tez 的工作原理与 Spark 非常相似(Tez 早在 Spark 之前就由 Hortonworks 创建):

  1. 执行计划但不需要从磁盘读取数据。

  2. 一旦准备好进行一些计算(类似于 spark 中的操作),从磁盘获取数据并执行所有步骤并生成输出。

只读一写。

不多次上盘,效率提高。中间结果存储在内存中(不写入磁盘)