5

Hive 中的 Tez 引擎和 Map Reduce 引擎有什么区别,在哪个进程中使用哪个引擎更好(例如:joins、aggregation?)

4

3 回答 3

6

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

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

  2. 运行映射器

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

  4. 运行 shuffle and sort --> 读取映射输出,第三次磁盘访问

  5. 写入 shuffle 和排序 --> 为 reducer 写入排序数据 --> 第四次磁盘访问

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

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

Tez 的工作方式与 Spark 非常相似(Tez 是在 Spark 之前由 Hortonworks 创建的):

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

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

只有一读一写。

通过不多次进入磁盘来提高效率。中间结果存储在内存中(不写入磁盘)

于 2020-01-07T14:04:55.373 回答
3

Tez 是一个基于 DAG 的系统,它以一种在开始执行之前优化这些操作的方式了解所有操作。

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

Tez 通常在 MaprReduce 下运行,因此它只是一个优化的 MapReduce,步骤更少且紧凑。

于 2017-01-13T13:34:11.300 回答
1

Apache Tez 与 MapReduce 插件兼容,但减少了磁盘访问量。Tez 总是比 MapReduce 好。

不过也有比 Hive + Tez 更好的系统,比如 Spark SQL。

于 2017-01-13T09:34:55.023 回答