一个Hbase数据读取优化的小例子
2015-05-07 11:01
357 查看
今天群里有个有经验的大神提了一个问题(@尘事随缘),记录下来。
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
反思:
Hadoop集群搭建好了,必须要做优化(优化需要根据你不同的业务场景来做优化)
一个Region对应一个Map,那么反过来,批量导入数据到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
反思:
Hadoop集群搭建好了,必须要做优化(优化需要根据你不同的业务场景来做优化)
一个Region对应一个Map,那么反过来,批量导入数据到Hbase,怎么优化呢?
相关文章推荐
- 一个Hbase数据读取优化的小例子
- 从hbase读取数据优化策略和实验对照结果
- 非阻塞方式下Socket读取数据的一个例子
- Ajax的一个简单例子--从一个文件文件中读取数据显示到页面中
- rome的一个小例子,读取rss数据
- 非阻塞方式下Socket读取数据的一个例子
- Mapreduce读取Hbase表,写数据到一个Hbase表中
- 非阻塞方式下Socket读取数据的一个例子
- 从hbase读取数据优化策略和实验对比结果
- 一个简单但详细的解释Windows文件映射读取数据文件的例子
- 非阻塞方式下Socket读取数据的一个例子
- 非阻塞方式下Socket读取数据的一个例子
- 用java读取一个文件往hbase里插入数据(List<PUT>)
- 一个用ArrayCollection作为数据格式 读取远程XML绑定到DropDownList例子
- rome的一个小例子,读取rss数据
- 一个简单但详细的解释Windows文件映射读取数据文件的例子
- 一个使用cv::Mat按单通道读取数据然后按照灰度范围设置灰度的例子
- 非阻塞方式下Socket读取数据的一个例子
- 非阻塞方式下Socket读取数据的一个例子
- MapReduce读取Hbase中多个版本的数据,统计例子。