码迷,mamicode.com
首页 > 其他好文 > 详细

一个Hbase数据读取优化的小例子

时间:2015-05-07 12:46:39      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

今天群里有个有经验的大神提了一个问题(@尘事随缘),记录下来。

A君搭建一个小型的集群,7台DataNode,一台主节点。需求是这样:通过MR程序去读取Hbase表里面的数据,程序运行后发现速度比较慢,通过查询任务详细发现,累计需要1542个Map完成,目前有14个MAP在执行。客户对此速度表示不满意,请问如何优化?


首先通过Job看,有1542个Map需要执行,说明Hbase,有1542个分区(每个分区对应一个Map),这是一个知识点。

数据不存在热点,Hbase处理性能没有问题

有1542个Map需要执行,但是并行的只有14个,说明Map的数据量不够。

经过询问,他没有做配置,默认每台机器只有2个Map,所以并行度是7*2=14,也就是同时运行14个Map

所以提示他去配置文件重新配置,每台机器配置的Map数据量是CPU个,因为8个CPU,所以配置8个MAP。那么并行处理能力是7*8=56(同时56个Map)。

运行速度提升4倍。

参数修改:

conf/mapred-site.xml

1.0 版本是这个参数 mapred.tasktracker.map.tasks.maximum 配置Map

mapred.tasktracker.reduce.tasks.maximum 配置Reduce

https://hadoop.apache.org/docs/r1.0.4/mapred-default.html

2.0 版本是这个参数mapreduce.tasktracker.map.tasks.maximum 配置Map

mapreduce.tasktracker.reduce.tasks.maximum 配置Reduce

http://hadoop.apache.org/docs/r2.4.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

反思: 

  1. Hadoop集群搭建好了,必须要做优化(优化需要根据你不同的业务场景来做优化)

  2. 一个Region对应一个Map,那么反过来,批量导入数据到Hbase,怎么优化呢?

一个Hbase数据读取优化的小例子

标签:

原文地址:http://my.oschina.net/duanfangwei/blog/411688

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!