简述Hive中MR(map reduce)、Tez和Spark执行引擎对比 ?
参考答案:
Hive中的执行引擎主要包括MapReduce(MR)、Tez和Spark,它们各自具有不同的特性和优势。以下是关于这三种执行引擎的对比:
- MapReduce(MR):
- 核心思想:MapReduce将数据处理任务划分为两个阶段:Map阶段和Reduce阶段。在Map阶段,数据被拆分成多个小块并并行处理;在Reduce阶段,对Map阶段的结果进行汇总和输出。
- 优点:大任务可以被分解成小任务,适合处理大规模数据集。
- 缺点:性能相对较低,响应时间较长;在数据处理过程中,存在多次落地磁盘的操作,导致I/O开销较大;缺乏优化的调度和执行策略。
- Tez:
- 核心思想:Tez进一步拆分了Map和Reduce操作,将其细化为多个阶段(如Input、Processor、Sort、Merge和Output等),并基于DAG(有向无环图)进行任务的调度和执行。
- 优点:绕过了MapReduce中的许多不必要的中间数据存储和读取过程,从而减小了任务执行时间;提供了container复用机制和Tez Session,有助于减少资源消耗;具有更低的查询延迟,相比MapReduce有近3倍的速度提升;输出日志更为清爽。
- 缺点:基于内存执行,当处理的数据量特别大时,容易出现内存溢出(OOM)问题;与Hadoop集成有一定的复杂性,需要额外的配置和调优。
- Spark:
- 高效性:Spark将作业构成一个DAG,优化了大型作业中重复且浪费资源的操作。它重新编写了物理执行引擎,并实现了如MRR模式等优化手段。
- 易用性:Spark提供了多种编程接口来操作数据,包括transformation(转换)和action(执行)两大类操作接口。这使得使用Spark进行数据处理比使用MapReduce更为便捷。
- 通用性:Spark针对实时计算、批处理、交互式查询等多种场景提供了统一的解决方案。
总结来说,三种执行引擎各有特点。MapReduce作为经典的分布式计算框架,具有稳定性高的优点;Tez通过优化调度和执行策略提高了处理速度;而Spark则以其高效性、易用性和通用性受到广泛关注。在选择执行引擎时,需要根据具体的业务场景、数据规模和处理需求进行权衡和选择。