数仓工具—Hive进阶之优化map任务数量(9)

控制 map 任务数量

为什么要控制 map 数量

我们先来了解下什么情况要设置 map 数量。一般来讲,map 数量默认,不需要我们设置,一般情况下,Hive 自己就可以知道到底使用多少个map。

但是,当我们明确知道表的数据量不大,而 Hive 运行启动了几千个 map 的时候,就有必要减小 map 的数量了。好比 1000 个西瓜没必要安排 100 辆车去拉,安排 2 辆车就可以搞定了。

另一方面,当我们发现 map 数量不多,但 map 运行速度极慢的时候。这时可以看一下数据,看看实际需求是不是很大?如果 Hive 启动的 map 数据比较少,就如同用 2 辆车去拉 10000 个西瓜,明显是不够的。

假设如果真遇到上面情况,那么如何调整 map 数量?我们通常会采用以下两种方式解决。

  • 第一种解决办法是增加 mapper 个数。可以设置 set mapred.map.tasks= 一个很大的数值, 需要比系统默认的 map 数量大。
  • 第二种解决办法是减少 mapper 个数。set maperd.min.split.size= 一个数字,该数值单位是字节,比如设置 1GB,即为 1024000000,因为默认一个 mapper 是 64MB,这样设置就可以让一个 mapper 处理 1GB 数据,自然 mapper 的数量也就减少了。

输入数据对map 数的影响

  1. 假设输入目录下有1个文件a,大小为780M,那么hadoop会将该文件a分隔成7个块(6个

Guess you like

Origin blog.csdn.net/king14bhhb/article/details/121234444