大数据学习(18)-任务并行度优化

&&大数据学习&&

🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门

💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞


对于一个分布式的计算任务而言,设置一个合适的并行度十分重要。Hive的计算任务由MapReduce完成,故并行度的调整需要分为Map端和Reduce端。

1 2.7.1 . 1 Map 端并行度

Map端的并行度,也就是Map的个数。是由输入文件的切片数决定的。一般情况下,Map端的并行度无需手动调整。

以下特殊情况可考虑调整map端并行度:

1 )查询的表中存在大量小文件

按照Hadoop默认的切片策略,一个小文件会单独启动一个map task负责计算。若查询的表中存在大量小文件,则会启动大量map task,造成计算资源的浪费。这种情况下,可以使用Hive提供的CombineHiveInputFormat,多个小文件合并为一个切片,从而控制map task个数。相关参数如下:

复制代码
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

2)map端有复杂的查询逻辑

若SQL语句中有正则替换、json解析等复杂耗时的查询逻辑时,map端的计算会相对慢一些。若想加快计算速度,在计算资源充足的情况下,可考虑增大map端的并行度,令map task多一些,每个map task计算的数据少一些。相关参数如下:

复制代码
--一个切片的最大值

set mapreduce.input.fileinputformat.split.maxsize=256000000;

12.7.1.2 Reduce端并行度

Reduce端的并行度,也就是Reduce个数。相对来说,更需要关注。Reduce端的并行度,可由用户自己指定,也可由Hive自行根据该MR Job输入的文件大小进行估算。

Reduce端的并行度的相关参数如下:

复制代码
--指定Reduce端并行度,默认值为-1,表示用户未指定

set mapreduce.job.reduces;

--Reduce端并行度最大值

set hive.exec.reducers.max;

--单个Reduce Task计算的数据量,用于估算Reduce并行度

set hive.exec.reducers.bytes.per.reducer;

Reduce端并行度的确定逻辑如下:

若指定参数mapreduce.job.reduces的值为一个非负整数,则Reduce并行度为指定值。否则,Hive自行估算Reduce并行度,估算逻辑如下:

假设Job输入的文件大小为totalInputBytes

参数hive.exec.reducers.bytes.per.reducer的值为bytesPerReducer。

参数hive.exec.reducers.max的值为maxReducers。

则Reduce端的并行度为:

根据上述描述,可以看出,Hive自行估算Reduce并行度时,是以整个MR Job输入的文件大小作为依据的。因此,在某些情况下其估计的并行度很可能并不准确,此时就需要用户根据实际情况来指定Reduce并行度了。

相关推荐
哪里不会点哪里.7 分钟前
Elasticsearch
大数据·elasticsearch·搜索引擎
啊阿狸不会拉杆27 分钟前
《机器学习》第四章-无监督学习
人工智能·学习·算法·机器学习·计算机视觉
Duang007_28 分钟前
【万字学习总结】API设计与接口开发实战指南
开发语言·javascript·人工智能·python·学习
啊阿狸不会拉杆32 分钟前
《机器学习》第三章 - 监督学习
人工智能·深度学习·学习·机器学习·计算机视觉
sjg200104141 小时前
GoFrame学习随便记3(待续)
学习
WZGL12301 小时前
2026中国智慧养老行业:老龄化浪潮下的刚性需求爆发
大数据·人工智能·物联网
悟纤1 小时前
什么是音乐音高?——AI 音乐创作的完整指南 | Suno高级篇 | 第27篇
大数据·人工智能·suno·suno api·ai music
旗讯数字1 小时前
旗讯OCR深度解析:智能解析与纸质文档识别抽取全链路解决方案
大数据·人工智能·文档数字化·数据结构化·旗讯ocr
tianlebest1 小时前
git action
大数据·git·elasticsearch
静听松涛1331 小时前
门诊患者分诊引导流程图设计模板
大数据·论文阅读·人工智能·信息可视化·流程图·健康医疗