hive引擎简介
Hive 的执行引擎包括以下几种:
- Hive on MapReduce Hive 最早使用的执行引擎是基于 Hadoop MapReduce 的。它将 Hive 查询转化为一系列的 MapReduce 任务进行并行执行。MapReduce 引擎适用于处理大规模数据集,具有良好的容错性和扩展性,但由于磁盘读写和中间结果的持久化,可能在性能和响应时间方面受到影响。
- Hive on Tez Hive 可以使用 Apache Tez 作为执行引擎来加速查询处理。Tez 是一个用于高效执行大规模数据处理任务的执行框架,它源于MapReduce 架构,核心思想是将Map和Reduce两个操作进一步拆分。它可以将查询的逻辑执行计划转化为一系列的任务图,并使用优化的调度和执行策略进行并行执行。Hive on Tez 可以提供更低的查询延迟和更高的吞吐量,提升查询性能和用户体验。
- Hive on Spark Hive 还可以使用 Apache Spark 作为执行引擎来处理查询。通过在 Spark 上执行 Hive 查询,可以充分利用 Spark 的内存计算和并行处理能力,加快查询速度和提高系统的整体性能。Hive on Spark 提供更高的性能和更强大的功能,并与 Spark 的其他组件集成,支持更多的数据处理场景。
引擎优缺点
1、Hive on MapReduce
优点:
- 大任务分解成小任务,适合处理抄大规模数据集。
- 具有较高的稳定性和可靠性
- 具有良好的容错性和扩展性。
缺点:
- 中间结果需要持久化到磁盘,占用资源,耗费时间。
- 性能较低,响应时间长。
2、Hive on Tez:
优点:
- Tez绕过了MapReduce很多不必要的中间的数据存储和读取的过程,减小任务执行时间。
- 提供container复用机制与Tez Session,减少资源消耗。
- 具有更低的查询延迟,使用 Tez 效率比 MapReduce 有近3倍的速度提升。
- 与MapReduce相比,输出日志清爽很多。
缺点:
- 基于内存,如果数据量特别大,容易OOM。
- 与Hadoop集成有一定的复杂性,需要额外的配置和调优。
3、Hive on Spark:
优点:
- 充分利用Spark的内存计算和并行处理能力,减少磁盘I/O,查询执行速度通常比Tez更快。
- 能处理复杂的查询和功能,兼容性较好。
- 广泛社区支持,可以多种集群管理器上运行,具有更好的通用性。
缺点:
- 对比Tez在执行期间资源管理分配来看,Spark对资源的利用率较低。
- 与Spark的其他组件集成可能需要额外的学习和配置。
如何切换引擎
1)、配置mapreduce计算引擎
set hive.execution.engine=mr;
2)、配置tez计算引擎
set hive.execution.engine=tez;
3)、配置spark计算引擎
set hive.execution.engine=spark;
4、hive on spark配置集群模式
set hive.execution.engine=spark;
set spark.master=yarn-cluster;
set mapreduce.job.queuename=xxx;
选择适合的执行引擎需要根据具体的需求和场景来评估和决策。根据数据规模、查询类型和性能要求等因素进行权衡,选择合适的执行引擎可以提升查询效率和系统性能。
参考文章:
hhttps://zhuanlan.zhihu.com/p/426086549
https://www.jianshu.com/p/357fceaa4042
版权归原作者 幻影889 所有, 如有侵权,请联系我们删除。