Mapreduce 读取Hbase,写入hbase IO 不均衡问题

来源:互联网 发布:手机动漫配音软件 编辑:程序博客网 时间:2024/05/29 18:04

硬件环境:h46h47h48 三个节点 2cpu 4核 共8个核心 14G 内存

软件环境:

三台机器分别部署hadoophbase 并同时作为datanode 和 tasktracker regionserverHQuorumPeer

H46同时为NamenodeJobtracker HMaster HQuorumPeer

出现问题:mapreduce 时使用 iostat 1| grep sdb 查看各节点的Io情况,发现h46有和适量的IOWrite h48 IOWrite 也在核实范围内,唯独h47 基本没有IO

查找原因:mapreduce 执行报告中如下提示

  Launched map tasks=207

local map tasks=92

意思是大多数map 的数据都不是本地的,根据原因查找数据量比较大的task 去查看其具体执行情况。

All Task Attempts

Task Attempts

Machine

attempt_201212071915_1816_m_000225_0

/default-rack/h47

意思是此task 是交给h47 来执行,没有问题,但47为什么没有IO

看下面

Input Split Locations

/default-rack/h48

也就是说 这个任务的数据是h48

为什么出现这种情况呢,为什么非要从48 远程来跑task呢。

具体查看一下 .META.信息表 就可以看到,每个region 都是由具体的一个regionserver来管理,具体是哪个 是在每个region 的映射中的info:server 字段来指定。

可以查看 其实我的所有region 并没有给h47regionserver 来管理,所以h47 就没有IO

产生原因:

具体就看hmaster 是如何分配regions 

目前动态分配region是由master来分配,使用的是随机分配regions

Hbase的 DefaultLoadBalance 是按照整体负载均衡的方式来分配region 的,而不是按照其中每张表所占的region 进行均衡banlance,导致每张表可能会不均等的分配到不同的region 上。

所以就会出现 上面的情况,我们所访问的hbase region 分配不均衡,但分配给具体TaskTracker的任务,而region 又不归它管,导致local map tasks<< Launched map tasks=207

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 屁股坏了化脓了怎么办 貔貅屁股摔坏了怎么办 当兵身高差4厘米怎么办 查体戴眼镜视力达不到怎么办 公司福利体检查乙肝怎么办 有乙肝每年福利体检怎么办 国企有乙肝每年福利体检怎么办 单位福利体检查乙肝怎么办 事业单位每年福利体检有乙肝怎么办 高考失利后我该怎么办 初三了科学总是考不好怎么办 初三学生三模考的不好怎么办 高考体检检查出乙肝怎么办 高考体检单丢了怎么办 小腿弯曲没发育好怎么办? 辅警考试体能测试不合格怎么办 跑步跑不动怎么办腿软 人胖跑步跑不动怎么办 不工作每天很累怎么办 电大本科文凭毕业证掉了怎么办 要求全日制本科自考本科怎么办 毕业证被学校扣了怎么办 自考本科档案没有密封怎么办 艺术生统考没过怎么办 本科科目没考过怎么办 军校体检条丢了怎么办 学美术考了大专怎么办 音基试唱音不准怎么办 音基证书丢了怎么办 职称计算机证书丢了怎么办 30岁了 开始怀旧怎么办 31岁了 缺乏运动怎么办 30多了还一事无成未来怎么办 导师说名额已满怎么办 在中国想当大官怎么办 站久了小腿变粗怎么办 苹果x锁屏延迟怎么办 被扇了巴掌耳痛怎么办 被扇了巴掌耳鸣怎么办 水兵舞不会扭胯怎么办 我的字写得很丑怎么办