[toc]
今天在测试Hadoop文件压缩功能时,在之前本地搭建的Hadoop集群上提交了一个MapReduce作业,但是提交后发现一直卡在那不动:
......
18/07/20 17:21:50 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
18/07/20 17:21:51 INFO client.RMProxy: Connecting to ResourceManager at hadoop/192.168.56.101:8032
18/07/20 17:21:51 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.
18/07/20 17:21:51 INFO input.FileInputFormat: Total input paths to process : 1
18/07/20 17:21:51 INFO mapreduce.JobSubmitter: number of splits:1
18/07/20 17:21:52 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1532078102478_0004
18/07/20 17:21:52 INFO impl.YarnClientImpl: Submitted application application_1532078102478_0004
18/07/20 17:21:52 INFO mapreduce.Job: The url to track the job: http://hadoop:8088/proxy/application_1532078102478_0004/
18/07/20 17:21:52 INFO mapreduce.Job: Running job: job_1532078102478_0004
于是开始进一步排查。
YarnApplicationState: ACCEPTED: waiting for AM container to be allocated, launched and register with RM.
发现看到其一直处于ACCEPTED状态。
为什么会一直是这个状态呢?资源没分配导致作业跑不了?打算看一下RM和NM的日志。
......
2018-07-20 17:08:34,370 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler: Acc
epted application application_1532077648870_0001 from user: hadoop, in queue: default
2018-07-20 17:08:34,379 INFO org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl: application_153207764887
0_0001 State change from SUBMITTED to ACCEPTED
没有报异常,这里也可以看到状态由"SUBMITTED"变为"ACCEPTED"。
......
2018-07-20 17:08:12,363 INFO org.apache.hadoop.yarn.server.nodemanager.security.NMContainerTokenSecretManager: Rolling m
aster-key for container-tokens, got key with id -199996072
2018-07-20 17:08:12,365 INFO org.apache.hadoop.yarn.server.nodemanager.security.NMTokenSecretManagerInNM: Rolling master
-key for container-tokens, got key with id 1483921230
2018-07-20 17:08:12,366 INFO org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdaterImpl: Registered with ResourceMa
nager as hadoop:43628 with total resource of
2018-07-20 17:08:12,366 INFO org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdaterImpl: Notifying ContainerManager
to unblock new container-requests
通知ContainerManager打开container请求,关键是,作业没跑起来,说明container也没创建好。
mr-jobhistory-daemon.sh start historyserver
开启历史作业日志,然后再跑一次作业,在ui界面上看其日志情况。
不过没有显示,这也很正常,因为其显示的日志是跑mr作业逻辑,也就是java程序代码过程中的输出日志。
因为之前还没有尝试过在MR作业中加入对输出文件压缩的设置,所以把这一部分的代码去掉,虽然感觉不太可能是这个问题,但还是尝试一下。
最后发现结果还是一样。
重启了一下集群,发现作业提交后还是一直处于ACCEPTED状态。
之前按照这个配置搭建的集群用来提交作业都是没有问题的,问题应该不在配置上。
不过还是检查了一下yarn的配置,因为作业一直没跑起来,担心会是资源的问题。
对yarn-site.xml进行了检查,
重装集群的话显然是非常浪费时间的了,因为用的也不是CDH的方式安装,是自己手工安装的。
但在考虑重装集群,考虑了一下重新格式namenode生成元数据信息。
没想到就可以了。
虽然问题最后是解决了,但其实并不算是真正的解决,这种解决有点类似于,电脑系统出现问题了,但不知道什么问题,重装系统就好了的感觉!
在生产环境中不可能这样,希望以后有机会问题复现时再好好分析一下(永远不会遇到那是最好的啦),因为今天在折腾时其实也是有些赶时间的。
当然,如果有朋友也出现过这样的情况,并且知道具体原因的,指点一下,不胜感激!