map控制
#每个Map最大输入大小
set mapred.max.split.size=256000000;
#一个节点上split的至少的大小
set mapred.min.split.size.per.node=100000000;
#一个交换机下split的至少的大小
set mapred.min.split.size.per.rack=100000000;
#执行Map前进行小文件合并
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
#在Map-only的任务结束时合并小文件
set hive.merge.mapfiles = true;
#当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge
set hive.merge.smallfiles.avgsize=16000000;
reduce控制
# 每个reduce处理的数据量
set hive.exec.reduces.bytes.per.reducer=500000000;
#指定reduce任务数
set mapred.reduce.tasks=20
reduce输出文件数
#在Map-only的任务结束时合并小文件
set hive.merge.mapfiles=true;
#在map-reduce的任务结束时合并小文件
set hive.merge.mapredfiles=true;
set hive.merge.size.per.task=256*1000*1000; #合并文件大小
#输出文件的平均大小小于该值,启动一个独立的map-reduce任务进行文件合并
set hive.merge.smallfiles.avgsize=16000000;
本文详细介绍了如何调整Hive的map控制参数如最大输入大小、split大小限制,以及reduce任务的资源配置,以提高数据处理性能。通过合并小文件、设置reduce数量和文件合并阈值,确保高效利用集群资源并减少I/O操作。
1056

被折叠的 条评论
为什么被折叠?



