作为 Hive 执行引擎,Tez 总是比 MR 好吗?
Is Tez always better than MR as Hive execution engine?
对于较小的查询(期望交互方式的结果,以分钟为单位,而不是几小时),Tez 执行得更好,而对于批量查询(需要数小时),MR 作为执行引擎执行得更好,这是真的吗?或者我们可以说无论查询类型如何,Tez 始终是最佳选择?
Tez 简化了小规模(低延迟)和大规模(高吞吐量)工作负载的处理。查询越复杂,TEZ 的好处就越大。对于由单个映射步骤组成的简单查询,它很可能根本没有区别,因为没有什么可以优化的。 TEZ 将查询表示为单个作业的 DAG(有向无环图),并消除了不必要的步骤,例如 read/write 到持久存储,对每个 Map 的输出进行排序,还允许容器重用。 Tez 始终是最佳选择,对于简单的查询,它的效果不比 MR 差,而对于复杂的查询,它的效果要好得多。考虑一下:对于 MR 和 TEZ,您必须调整不同的配置参数集,有很多 TEZ 特定的和很多 MR 特定的。选择 TEZ,即使在没有什么可以优化的情况下,您也会简化您的生活。另外,Hive-on-MR has been deprecated in Hive 2 releases.
对于较小的查询(期望交互方式的结果,以分钟为单位,而不是几小时),Tez 执行得更好,而对于批量查询(需要数小时),MR 作为执行引擎执行得更好,这是真的吗?或者我们可以说无论查询类型如何,Tez 始终是最佳选择?
Tez 简化了小规模(低延迟)和大规模(高吞吐量)工作负载的处理。查询越复杂,TEZ 的好处就越大。对于由单个映射步骤组成的简单查询,它很可能根本没有区别,因为没有什么可以优化的。 TEZ 将查询表示为单个作业的 DAG(有向无环图),并消除了不必要的步骤,例如 read/write 到持久存储,对每个 Map 的输出进行排序,还允许容器重用。 Tez 始终是最佳选择,对于简单的查询,它的效果不比 MR 差,而对于复杂的查询,它的效果要好得多。考虑一下:对于 MR 和 TEZ,您必须调整不同的配置参数集,有很多 TEZ 特定的和很多 MR 特定的。选择 TEZ,即使在没有什么可以优化的情况下,您也会简化您的生活。另外,Hive-on-MR has been deprecated in Hive 2 releases.