主页 > 新闻资讯 > 大数据培训:Hive优化之MapReduce相关的优化

大数据培训:Hive优化之MapReduce相关的优化

作者:张老师 浏览次数: 2021-03-09 17:59
作为数据仓库工具,Hive在Hadoop生态当中,还是得到重用的,尤其是在面对极大规模的数据处理任务上,Hive有明显的优势。但是同时,面对大规模任务,也需要做好Hive优化,以提升性能。今天的大数据培训分享,我们来讲讲Hive优化之MapReduce相关的优化。

大数据培训:Hive优化之MapReduce相关的优化

在做MapReduce相关的优化之前,首先我们需要对MapReduce有清晰的认识,这里大致讲讲:

在实际运行当中,mapper和reducer个数,与切片机制和并行度机制有关。

1、MapReduce并行度决定机制

1)MapTask并行度决定机制

MapTask的并行度主要取决于切片机制。一个任务的map阶段并行度由客户端在提交任务时决定,而客户端对map阶段并行度的规划的基本逻辑为:按照一个特定切片大小,将待处理数据划分成逻辑上的多个切片,然后每一个切片分配一个mapTask并行实例处理。

2)ReduceTask并行度决定机制

ReduceTask设置方式就很简单了,可以直接手动设置:job.setNumReduceTasks(4);,默认值是1,手动设置为4。ReduceTask的并行度同样影响整个任务的执行效率,如果数据分布不均匀,就有可能产生数据倾斜。

并发数的选择受多方面因素影响,比如运算节点的硬件配置、运算任务的类型:CPU密集型还是IO密集型、运算任务的数据量,这个还是要根据实际情况而定。

2、合并小文件

1)输入阶段合并

设置参数hive.input.format为org.apache.hadoop.hive.ql.io.CombineHiveInputFormat。(默认值是org.apache.hadoop.hive.ql.io.HiveInputFormat)。

此外还需配置两个参数:mapred.min.split.size.per.node(单节点上的最小split大小)和mapred.min.split.size.per.rack(单机架上的最小split大小)。

如果有split大小小于这两个值,则会进行合并。

2)输出阶段合并

将hive.merge.mapfiles和hive.merge.mapredfiles都设为true,前者表示将map-only任务的输出合并,后者表示将map-reduce任务的输出合并。

此外,hive.merge.size.per.task可以指定每个task输出后合并文件大小的期望值,hive.merge.size.smallfiles.avgsize可以指定所有输出文件大小的均值阈值。如果平均大小不足的话,就会另外启动一个任务来进行合并。

3、启用压缩

压缩job的中间结果数据和输出数据,可以用少量CPU时间节省很多空间,压缩方式一般选择Snappy。

要启用中间压缩,需要设定hive.exec.compress.intermediate为true,同时指定压缩方式hive.intermediate.compression.codec为org.apache.hadoop.io.compress.SnappyCodec。

另外,参数hive.intermediate.compression.type可以选择对块(BLOCK)还是记录(RECORD)压缩,BLOCK的压缩率比较高。

输出压缩的配置基本相同,打开hive.exec.compress.output即可。

4、JVM重用

在MR job中,默认是每执行一个task就启动一个JVM。可以通过配置参数mapred.job.reuse.jvm.num.tasks来进行JVM重用。

例如将这个参数设成5,那么就代表同一个MR job中顺序执行的5个task可以重复使用一个JVM,减少启动和关闭的开销。但它对不同MR job中的task无效。

关于大数据培训,Hive优化之MapReduce相关的优化,以上就为大家做了简单的介绍了。Hive本质上就是将类SQL语句转化为MapReduce任务,理解MapReduce运行机制,对于后续的学习很关键。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,零基础就业班正在招生中,课程大纲及学习视频资料,可联系客服获取!
热点排行
推荐文章
立即申请>>