Mapreduce 读取Hbase,写入hbase IO 不均衡问题
2013-02-04 19:19
218 查看
硬件环境:h46、h47、h48 三个节点 2cpu 4核 共8个核心 14G 内存
软件环境:
三台机器分别部署hadoop、hbase 并同时作为datanode 和 tasktracker regionserver、HQuorumPeer;
H46同时为Namenode、Jobtracker 和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 是交给h47 来执行,没有问题,但47为什么没有IO呢
看下面
Input Split Locations
/default-rack/h48
也就是说 这个任务的数据是h48的
为什么出现这种情况呢,为什么非要从48 远程来跑task呢。
具体查看一下 .META.信息表 就可以看到,每个region 都是由具体的一个regionserver来管理,具体是哪个 是在每个region 的映射中的info:server 字段来指定。
可以查看 其实我的所有region 并没有给h47的regionserver 来管理,所以h47 就没有IO
产生原因:
具体就看hmaster 是如何分配regions 的
目前动态分配region是由master来分配,使用的是随机分配regions
而Hbase的 DefaultLoadBalance 是按照整体负载均衡的方式来分配region 的,而不是按照其中每张表所占的region 进行均衡banlance,导致每张表可能会不均等的分配到不同的region 上。
所以就会出现 上面的情况,我们所访问的hbase 表region 分配不均衡,但分配给具体TaskTracker的任务,而region 又不归它管,导致local map tasks<< Launched map tasks=207
软件环境:
三台机器分别部署hadoop、hbase 并同时作为datanode 和 tasktracker regionserver、HQuorumPeer;
H46同时为Namenode、Jobtracker 和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 |
看下面
Input Split Locations
/default-rack/h48
也就是说 这个任务的数据是h48的
为什么出现这种情况呢,为什么非要从48 远程来跑task呢。
具体查看一下 .META.信息表 就可以看到,每个region 都是由具体的一个regionserver来管理,具体是哪个 是在每个region 的映射中的info:server 字段来指定。
可以查看 其实我的所有region 并没有给h47的regionserver 来管理,所以h47 就没有IO
产生原因:
具体就看hmaster 是如何分配regions 的
目前动态分配region是由master来分配,使用的是随机分配regions
而Hbase的 DefaultLoadBalance 是按照整体负载均衡的方式来分配region 的,而不是按照其中每张表所占的region 进行均衡banlance,导致每张表可能会不均等的分配到不同的region 上。
所以就会出现 上面的情况,我们所访问的hbase 表region 分配不均衡,但分配给具体TaskTracker的任务,而region 又不归它管,导致local map tasks<< Launched map tasks=207
相关文章推荐
- 【HBase基础教程】6、HBase之读取MapReduce数据写入HBase
- 使用MapReduce从HBase中读取数据存入HDFS路径问题
- MapReduce中,从HDFS读取数据计算后写入HBase
- HBase建表高级属性,hbase应用案例看行键设计,HBase和mapreduce结合,从Hbase中读取数据、分析,写入hdfs,从hdfs中读取数据写入Hbase,协处理器和二级索引
- 从hbase表1中读取数据,最终结果写入到hbase表2 ,如何通过MapReduce实现 ?
- 通过mapreduce程序读取hdfs文件写入hbase
- Java IO操作之文件读取与写入 无乱码FileOutputStream FileInputStream使用-IO写utf-8乱码问题
- druid.io 集成 hadoop 问题解决 /hdp/apps/${hdp.version}/mapreduce/mapreduce.tar.gz#mr-framework
- VS读取文件或写入文件时出现中文乱码问题
- 读取HDFS文件中的数据写入到HBase的表中
- hbase与mapreduce同时运行的问题
- Hbase通过 Mapreduce 写入数据到Mysql
- spark将数据写入hbase以及从hbase读取数据
- 读取和写入文件的编码问题
- MapReduce 中如何处理HBase中的数据?如何读取HBase数据给Map?如何将结果存储到HBase中?
- jedis连接池无法写入/读取数据的问题
- Java IO读取文件中文乱码问题
- MapReduce和Spark写入Hbase多表总结
- IO - 文件的读取与写入
- 解决三星手机写入和读取文件失败问题