为什么在 hive tez 上分配映射器和缩减器?

why mappers and reducers are allocated on hive tez?

即使在 TEZ 中 运行 hive 查询,但分配了 Mappers 和 Reducers,谁能解释一下?

Tez引擎中的运行是否还在使用MR引擎?

当然,它使用相同的 Map-Reduce 原语,但除此之外,Tez 将所有任务表示为单个 DAG。这允许对其进行优化并消除不必要的步骤。

例如这个查询:

SELECT DeptName, COUNT(*) as c FROM EmployeeTable
GROUP BY DeptName ORDER BY c;

在 MR 上它将执行两个 MR 作业,将中间结果保存到 HDFS。

Map-Reduce 要求对每个 Map 任务的输出进行本地排序。 当不需要排序时,这是不必要的开销。 Tez 通过消除 map-reduce 中强制执行的步骤来增加任务行为的灵活性。

查询越复杂,从 Tez 获得的好处就越大。 TEZ 将查询表示为单个作业的 DAG(有向无环图),并消除了不必要的步骤,如 read/write 到持久存储,对每个 Map 的输出进行排序,还允许容器重用。 Tez 始终是最佳选择,对于简单查询,它的效果不比 MR 差,而对于复杂查询,它的效果要好得多