一个Hbase数据读取优化的小例子
一个Hbase数据读取优化的小例子
我是彩笔 发表于3年前
一个Hbase数据读取优化的小例子
  • 发表于 3年前
  • 阅读 1405
  • 收藏 6
  • 点赞 0
  • 评论 1

腾讯云 技术升级10大核心产品年终让利>>>   

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

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

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.map.cpu.vcores 配置 每个Map Task 需要的虚拟CPU的个数

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

反思: 

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

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

共有 人打赏支持
粉丝 8
博文 18
码字总数 1936
评论 (1)
苏斌
批量导入,用bulkload啊
×
我是彩笔
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: