MapReduce出现挂在Job: Running job的现象,Hive,Sqoop因此受影响(MR已经能运行)

最开始发现这个问题是执行Hive语句之后就挂在那里不动,后来发现原来是仅仅执行一个简单的MapReduce也会出现相同现象 集群安装的是yum源给的cdh5.4.8,之前一直好好的,突然就不行了,在出问题前没有更改过什么配置(在出了问题后改了一下yarn中关于任务内存的设置)。 集群中各台机子内存够用,磁盘快用光了(三台机都用了大约91%),但是之前剩余95%左右的时候也能执行任务的 执行hadoop自带的MR例子(也执行过Hive,Sqoop,自己写的和集群完全版本匹配的WordCount,效果都是如下) hadoop jar /root/hadoop-mapreduce-examples-2.2.0.jar pi 1 1 结果如下
Number of Maps  = 1
Samples per Map = 1
Wrote input for Map #0
Starting Job
16/06/14 16:57:50 INFO client.RMProxy: Connecting to ResourceManager at DX3-1/172.31.7.78:8032
16/06/14 16:57:50 INFO input.FileInputFormat: Total input paths to process : 1
16/06/14 16:57:50 INFO mapreduce.JobSubmitter: number of splits:1
16/06/14 16:57:50 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1465868977833_0029
16/06/14 16:57:50 INFO impl.YarnClientImpl: Submitted application application_1465868977833_0029
16/06/14 16:57:50 INFO mapreduce.Job: The url to track the job: http://DX3-1:8088/proxy/applic ... 0029/
16/06/14 16:57:50 INFO mapreduce.Job: Running job: job_1465868977833_0029
就一直挂在这里不再继续,查看ResourceManager的相应日志如下
2016-06-14 16:57:50,250 INFO org.apache.hadoop.yarn.server.resourcemanager.ClientRMService: Allocated new applicationId: 29
2016-06-14 16:57:50,878 INFO org.apache.hadoop.yarn.server.resourcemanager.ClientRMService: Application with id 29 submitted by user root
2016-06-14 16:57:50,878 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl: Storing application with id application_1465868977833_0029
2016-06-14 16:57:50,878 INFO org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger: USER=root     IP=172.31.7.78  OPERATION=Submit Application Request    TARGET=ClientRMService  RESULT=SUCCESS  APPID=application_1465868977833_0029
2016-06-14 16:57:50,878 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl: application_1465868977833_0029 State change from NEW to NEW_SAVING
2016-06-14 16:57:50,878 INFO org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore: Storing info for app: application_1465868977833_0029
2016-06-14 16:57:50,879 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl: application_1465868977833_0029 State change from NEW_SAVING to SUBMITTED
2016-06-14 16:57:50,879 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler: Accepted application application_1465868977833_0029 from user: root, in queue: default, currently num of applications: 19
2016-06-14 16:57:50,879 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl: application_1465868977833_0029 State change from SUBMITTED to ACCEPTED
2016-06-14 16:57:50,879 INFO org.apache.hadoop.yarn.server.resourcemanager.ApplicationMasterService: Registering app attempt : appattempt_1465868977833_0029_000001
2016-06-14 16:57:50,879 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptImpl: appattempt_1465868977833_0029_000001 State change from NEW to SUBMITTED
2016-06-14 16:57:50,879 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler: Added Application Attempt appattempt_1465868977833_0029_000001 to scheduler from user: root
2016-06-14 16:57:50,880 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptImpl: appattempt_1465868977833_0029_000001 State change from SUBMITTED to SCHEDULED
各个节点的NodeManager都没有相应的日志 执行export HADOOP_ROOT_LOGGER=DEBUG,console之后,打印所有的DEBUG消息后发现,消息中没有exception,但是一直会出现形如下面的消息,而且一直这样一条条的刷,好像是连不上ResourceManager的样子
16/06/14 16:50:07 DEBUG security.UserGroupInformation: PrivilegedAction as:root (auth:SIMPLE) from:org.apache.hadoop.mapreduce.Job.updateStatus(Job.java:322)
16/06/14 16:50:07 DEBUG ipc.Client: IPC Client (453190819) connection to DX3-1/172.31.7.78:8032 from root sending #52
16/06/14 16:50:07 DEBUG ipc.Client: IPC Client (453190819) connection to DX3-1/172.31.7.78:8032 from root got value #52
16/06/14 16:50:07 DEBUG ipc.ProtobufRpcEngine: Call: getApplicationReport took 1ms
16/06/14 16:50:07 DEBUG security.UserGroupInformation: PrivilegedAction as:root (auth:SIMPLE) from:org.apache.hadoop.mapreduce.Job.updateStatus(Job.java:322)
16/06/14 16:50:07 DEBUG ipc.Client: IPC Client (453190819) connection to DX3-1/172.31.7.78:8032 from root sending #53
16/06/14 16:50:07 DEBUG ipc.Client: IPC Client (453190819) connection to DX3-1/172.31.7.78:8032 from root got value #53
16/06/14 16:50:07 DEBUG ipc.ProtobufRpcEngine: Call: getApplicationReport took 1ms
各个节点能够ping同,即便是在ResourceManager所在的机子上运行,也会出同样的错误。 执行自带的MR的完整的报错(也不算报错,压根就没有错误,就是最后一直在刷新消息)在附件里面(因为不能上传txt文件,我就把日志存为.py格式了)   这个问题感觉很诡异啊,不知道为什么,麻烦老师给看一下,谢谢   ------------------------------------------------------- 更新一下,我发现出问题之后,新执行的任务在HDFS中/tmp/yarn-log/root/logs下就不再产生日志了,执行yarn logs -applicationId  <application_Id> 之后就说16/06/14 17:58:05 INFO client.RMProxy: Connecting to ResourceManager at DX3-1/172.31.7.78:8032 hdfs://DX3-1:8020/tmp/yarn-log/root/logs/application_1465868977833_0029does not exist. Log aggregation has not completed or is not enabled. 而且我看访问YARN的网页,发现所有的任务都是UNASSIGNED
YARNweb.png
  ****************************** MR 不能提交的任务的问题已经解决 ****************************************** 首先感谢老师为我解答这个问题,这个问题真的困扰了我两天了   这个问题有点像那种寓言故事里面说的,一个工程师敲一敲机器就知道故障了,他说敲那一下只值1美元,但是知道问题在哪值99美元一样。虽然问题知道了以后是显而易见,但是解决之前绝对想不到,所以分享一下自己的收获   先看一下NodeManager的报错日志,当时我说NodeManager没有日志,这是比较大的疏漏,只是没看到这些
2016-06-15 16:47:34,179 WARN org.apache.hadoop.yarn.server.nodemanager.DirectoryCollection: Directory /mnt/nm_local error, used space above threshold of 90.0%, removing from list of valid directories
2016-06-15 16:47:34,179 WARN org.apache.hadoop.yarn.server.nodemanager.DirectoryCollection: Directory /var/log/hadoop-yarn error, used space above threshold of 90.0%, removing from list of valid directories
2016-06-15 16:47:34,179 INFO org.apache.hadoop.yarn.server.nodemanager.LocalDirsHandlerService: Disk(s) failed: 1/1 local-dirs are bad: /mnt/nm_local; 1/1 log-dirs are bad: /var/log/hadoop-yarn
2016-06-15 16:47:34,179 ERROR org.apache.hadoop.yarn.server.nodemanager.LocalDirsHandlerService: Most of the disks failed. 1/1 local-dirs are bad: /mnt/nm_local; 1/1 log-dirs are bad: /var/log/hadoop-yarn


  再看一下正常的YARN的网页,注意NodeManager地方,正常情况下应该是healthy
nodemanager-healthy.jpg
  再看看我当时的YARN首页,unhealthy
unhealthy.png
可以看到所有的NodeManager都已经unhealthy了,NodeManager干不了活,当然MR任务就提交不了并且一直挂在那里了。这个地方真的一般不会注意的。而且诡异的就是,每个节点上jps,NodeManager全部都有,所以当时就没有想过NodeManager不正常这回事。   前面已经说了我的集群情况,现在再说一下,问题应该就是我的每个节点的云主机上本地路径基本上快满了,已经使用了了92%了,峰值到过96%。因为我云主机空间本来就小,才8G,放不了多少东西就满了。大部分人可能不会遇到自己的机器快撑爆的情况,所以网上也没有和我类似情况,有一个看上去现象一样,但是问了一下他,原因并不相同。所以我之前还想过,如果HDFS马上把主机撑爆了会发生什么——就会发生我遇到的情况。 因此老师建议我删一删东西。   由于东西不好删,所以看查了一下NodeManager unhealthy相关,可以参照下面两个链接 http://stackoverflow.com/questions/29010039/yarn-unhealthy-nodes http://blog.csdn.net/lazythinker/article/details/47832117 (吐槽一下为什么不能粘贴链接,我手输的。。。)   言归正传,因为云主机快撑爆了,所以NodeManager启动了“保护机制”?像是个安全检查,如果物理机快满了NodeManager就不理会你提交的任务了。我按照连接上的做,在yarn-site.xml中添加了如下配置
yarn-site-settings.png
增加了以后,NodeManager就会真的把硬盘撑爆才会罢休了。 完了以后重启YARN,能够正常运行MR任务了。   这个情况确实奇葩,也没见网上有人遇到,自己郁闷了2天,感谢老师为我解答出来这个问题,分享出来,大家共同学习 ***********************************************************************************************************   但是这个问题解决之后,随机而来的是HDFS上很多文件的消失,很多文件不能访问了。而且云主机的本地空间确实释放出来了,硬盘从92%一下就到了60%几。MR的任务解决了,但是HDFS文件的突然消失着实恐怖,而且是三个备份全部消失,不知道和我那个在yarn-site.xml中与NodeManager相关的配置有没有关系。这个希望老师能给看一下,谢谢    

wangxiaolei

赞同来自:

执行下yarn logs -applicationId  application_1465868977833_0027 看看显示什么

wangxiaolei

赞同来自:

mapred-site.xml和yarn-site.xml 配置内容发下

wangxiaolei

赞同来自:

你的云主机我可以登录上吗,可以发私信告诉我。

fish - Hadooper

赞同来自:

确认一下,现在问题变成另外的,也就是:hdfs中的文件没了?

fish - Hadooper

赞同来自:

hdfs存放不足block大小的文件时,占用的空间是文件的实际大小,不是block大小。 DFS Used + DFS Remaining + Non DFS Used = 100%,Non DFS Used(非hdfs文件占用的空间需要计算在内)。   看你提供的数据,并不是hdfs的数据丢了,而是你的Non DFS数据发生了很大变化,磁盘上的一些log,或者你自己的一些辅助文件,都属于Non DFS。   查看hdfs的大小,可以使用hadoop fs -du /。

要回复问题请先登录注册