Hadoop集群中JobTracker和TaskTracker启动耗时过多的原因分析

本文分析了Hadoop集群中JobTracker和TaskTracker启动时耗时过长的情况,特别是JobTracker无法及时探知TaskTracker的问题。问题出现在TaskTracker初始化阶段,由于大量目录创建和删除的IO操作导致10分钟的延迟。解决方案是调整DistributedCache的缓存大小设置,以减轻启动时的清理压力。在Hadoop 2.x中,这个问题已通过改进的缓存管理和清理逻辑得到解决。

在正式环境中,我们遇到一个这样的问题:配置更改后,需要重启JobTracker和TaskTracker节点的进程。在重启过程中,JobTracker和TaskTracker进程都很快启动完成,但是查看JobTracker的50030端口的Web管理页面时,发现JobTracker一直无法探知任何一个TaskTracker节点,大概经过10分钟后,才陆陆续续地探知完所有的TaskTracker节点。

    另外,如下参数,如无说明,均为Hadoop 1.2.1版本参数。

  • 重现

    这个问题一直困扰着我们,并且曾经一度怀疑是Hadoop内部的机架探知比较缓慢所造成的。直到最近一次,由于运维需要移动某个TaskTracker机器的位置,需要单独重启这个TaskTracker,在重启了节点的JobTracker和DataNode进程后,发现JobTracker经过长时间也没办法探知到该节点的TaskTracker,此时的NameNode却早已成功探知到DataNode。出现问题后,尝试重新单独启动TaskTracker进程,这时,却发现探知了两个TaskTracker节点,后来才变回一个TaskTracker节点。

  • 分析

    为了了解究竟发生了什么问题,我们查看了JobTracker和TaskTracker的log。由于log的数量太多,这里仅仅列出关键的log。另外,关闭的TaskTracker的hostname为datanode6.dataplat.com。

    首先是JobTracker的log:

2015-01-13 20:38:11,016 INFO org.apache.hadoop.mapred.JobTracker: Lost tracker 'tracker_datanode6.dataplat.com:localhost/127.0.0.1:47379'

2015-01-13 21:21:18,826 INFO org.apache.hadoop.mapred.JobTracker: Adding tracker tracker_datanode6.dataplat.com:localhost/127.0.0.1:52849 to host datanode6.dataplat.com

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值