平衡HDFS的想法 - > HBase mapreduce工作

时间:2011-10-21 18:13:20

标签: performance configuration hadoop mapreduce hbase

对于客户来说,我一直在确定在AWS EC2上运行Cloudera风味hadoop集群的短期可行性。在大多数情况下,结果是预期的,逻辑卷的性能大部分是不可靠的,表示尽我所能我已经让集群在这种情况下运行得相当好。

昨晚我对其导入程序脚本进行了全面测试,以从指定的HDFS路径中提取数据并将其推送到Hbase。他们的数据有点不同寻常,因为记录不到1KB,并且已经被压缩成9MB的压缩块。总共大约有500K文本记录从gzip中提取,检查完整性,然后推送到reducer阶段。

这项工作是在环境预期范围内运行的(我预计溢出记录的数量)但是一个非常奇怪的问题是,当作业运行时,它运行8个减速器但2个减速器执行99%的工作,而剩下的6个做了一小部分工作。

我目前尚未经过测试的假设是,我在作业配置中缺少一个关键的shuffle或blocksize设置,导致大部分数据被推送到只能由2个reducer使用的块中。不幸的是,上次我在Hadoop上工作时,另一个客户端的数据集是物理托管集群上的256GB lzo文件。

澄清,我的问题;有没有办法通过降低地图的输出大小或使每个减速器减少它将解析的数据量来调整M / R作业以实际利用更多可用的减速器。即使比当前2减少4个减速器也是一项重大改进。

1 个答案:

答案 0 :(得分:2)

看起来你的减速器中有热点。这可能是因为特定的密钥非常受欢迎。作为映射器输出的键是什么?

你有几个选择:

  • 尝试更多减速器。有时候,你会在哈希的随机性中得到奇怪的文物,所以有一些素数的减速器有时会有所帮助。这可能无法解决问题。
  • 编写一个可以更好地展开工作的自定义分区程序。
  • 弄清楚为什么一堆数据被分成两个键。有没有办法让你的钥匙更加独特,可以分开工作?
  • 您是否可以使用组合器来减少流向Reducer的流量?