Hadoop运维记录之二:tasktracker启动后“假死”

由于Hadoop集群中某台服务器磁盘损坏,导致该服务器tasktracker 任务失败率大增(失败原因:分配到该服务器的任务的临时目录选择了损坏的磁盘,导致job初始化是失败),所以决定将坏的磁盘从tasktracker中的mapred本地目录中删除,然后重启tasktracker。

操作步骤如下:

1)修改完mapred-site.xml配置文件;

2)重启tasktracker;

3)跟踪tasktracker日志,以确保tasktracker能够正常启动

在跟踪日志时,发现tasktracker启动后陷入了“假死”的状态,具体的现象如下:

1)tasktracker日志输出到下述语句后就再也没有任何输出

[sql] view plaincopyprint?org.apache.hadoop.mapred.TaskTracker: Starting tasktracker with owner as hadoop

org.apache.hadoop.mapred.TaskTracker: Starting tasktracker with owner as hadoop

2)jobtracker活跃tasktracker列表中没有该服务器

重启tasktracker也无法解决该问题,再网上也没能找到答案,没办法,只能去尝试看tasktracker的源代码,看tasktracker在输入该条日志后,到底在做些什么?

hadoop tasktracker源代码路径:/opt/modules/hadoop/hadoop-0.20.203.0/src/mapred/org/apache/hadoop/mapred/TaskTracker.Java

tasktracker 在输出启动信息后的操作代码如下图:(注意黄色标注部分)

Hadoop运维记录之二:tasktracker启动后“假死”

原来tasktracker每次启动时都会清除本地运行目录下的临时文件,当tasktracker长时间运行时,本地运行目录下就会累计很多的文件及文件夹,从而导致tasktracker在启动时会消耗很长的时间在文件删除这一步骤上。手动清除了mapred本地目录下的临时文件后,tasktracker启动成功。

#-*-coding:UTF-8 -*-    import os   import time      local_dir = ["/opt/data/hadoop/mapred/mrlocal","/opt/data/hadoop1/mapred/mrlocal","/opt/data/hadoop2/mapred/mrlocal",\                "/opt/data/hadoop3/mapred/mrlocal","/opt/data/hadoop4/mapred/mrlocal"]      def Clean(path,tolerable_time):       clean_dir = []       real_path = path + '/taskTracker'       clean_dir.append(real_path + "/distcache")       for f in os.listdir(real_path):           if f != "distcache":               clean_dir.append(real_path + '/' + f + "/distcache")                      for c_dir in clean_dir:           for f in os.listdir(c_dir):               last_mtime = os.stat("%s/%s" % (c_dir,f)).st_mtime               if last_mtime < tolerable_time:                   print c_dir,f                   os.system("rm -rf %s/%s" % (c_dir,f))                      if __name__=="__main__":       cur_time = int(time.time())       tolerable_time = cur_time - 3*24*3600       for path in local_dir:           try:               Clean(path,tolerable_time)           except:               continue  

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/4d8dc83383dfca5a43069cd1bfb68657.html