美文网首页
大数据开发之Hive案例篇4-Map数过少导致性能低下

大数据开发之Hive案例篇4-Map数过少导致性能低下

作者: 只是甲 | 来源:发表于2022-10-19 10:54 被阅读0次

一. 问题描述

fdf6be2da89482f23e5a05a26e880e5.png

大表 通过 非等值连接 关联 小表,数据量激增,但是Hadoop没有读取到,导致只分配了6个map数,运行时间长达90分钟,此时集群很多资源都处于空闲状态。

image.png

二. 解决方案

问题分析,主要是因为非等值连接,导致hive错误的估计了数据量,进而map数分配少了。

2.1 初步方案尝试

这些都试过,无用

-- 修改reduce个数
set mapred.reduce.tasks=10;

-- MapJoin
/*+ MAPJOIN(b) */ 

-- 排序
distribute by rand(123)
image.png

2.2 还得是官网

Hive官网:

image.png

Map个数的计算公式:

Num_Map_tasks= $inputsize/ max($mapred.min.split.size, min($dfs.block.size, $mapred.max.split.size))

dfs.block.size 这个系统值,不能修改,参考官网,修改如下参数至一个合适的值,问题解决。

set mapred.max.split.size=10000000 ;
set mapred.min.split.size=10000000;

参考:

  1. https://cwiki.apache.org/confluence/display/HADOOP2/LimitingTaskSlotUsage
  2. https://blog.csdn.net/qq_26442553/article/details/99438121/

相关文章

网友评论

      本文标题:大数据开发之Hive案例篇4-Map数过少导致性能低下

      本文链接:https://www.haomeiwen.com/subject/aemugrtx.html