我们在尝试使用distcp将大量数据传输到另一个集群时遇到了一个奇怪的问题。
给出一些数字,
数据大小=320gbMap程序数=~70集群中的节点总数82 src cluster:hadoop 0.20目标集群:hadoop 2.0.2
启动此作业时,所有Map器都成功完成,但最后一个Map器花费的时间太长,当它完成/失败时,基本上会将作业跟踪器冻结近15分钟,然后所有任务跟踪器都会重新启动,从而重新启动群集中当时运行的所有作业。
我们有多个distcp作业将数据传输到s3以及具有相同hadoop设置的其他集群,并且没有遇到这个问题。这个过程和其他过程之间的唯一区别是我们在这里使用webhdfs,webhdfs是瓶颈吗?
我们还尝试减小文件大小,检查网络带宽是否饱和,机器上的负载,但仍然无法解决这个问题。
另外,当两个hadoop版本不相同时,有没有其他方法代替webhdfs进行数据传输
谢谢
1条答案
按热度按时间mgdq6dx11#
在设置ganglia来收集统计数据并使用jconsole之后,我们将问题缩小到阻塞线程。
决议是增加预算
mapred.job.tracker.handler.count从当前值64到128
对于这个问题,我们最好的假设是,所有的distcpMap器往往同时完成,因此在清理过程中阻塞了大量线程,并将job tracker冻结了10-15分钟