今天在编写 oozie hive action,编写的action如下:
<action name="action_0_0_0">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<job-xml>/tmp/hupu/hive/res/hive-site.xml</job-xml>
<script>/tmp/hupu/hive/tmphql/</script>
</hive>
<ok to="fork_97" />
<error to="kill" />
</action>
script节点的tmphql后面多了一个斜杠,然后导致了一个CDH5.3.0上的yarn的一个BUG,后续版本中应该已经解决了,如果你用的是这个版本,然后恰巧你也出现了这个失误,下面的内容也许就对你有帮助了。
由于这个BUG,会导致你的nm起不来,具体错误日志中有以下重要信息:
下午5点17:58.437 | FATAL | org.apache.hadoop.yarn.event.AsyncDispatcher | Error in dispatcher thread java.lang.IllegalArgumentException: Can not create a Path from an empty string at org.apache.hadoop.fs.Path.checkPathArg(Path.java:127) at org.apache.hadoop.fs.Path.<init>(Path.java:135) at org.apache.hadoop.fs.Path.<init>(Path.java:94) at org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourcesTrackerImpl.getPathForLocalization(LocalResourcesTrackerImpl.java:420) at org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService$PublicLocalizer.addResource(ResourceLocalizationService.java:773) at org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService$LocalizerTracker.handle(ResourceLocalizationService.java:687) at org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService$LocalizerTracker.handle(ResourceLocalizationService.java:629) at org.apache.hadoop.yarn.event.AsyncDispatcher.dispatch(AsyncDispatcher.java:173) at org.apache.hadoop.yarn.event.AsyncDispatcher$1.run(AsyncDispatcher.java:106) at java.lang.Thread.run(Thread.java:745) |
下午5点17:58.445 | INFO | org.apache.hadoop.yarn.event.AsyncDispatcher | Exiting, bbye.. |
下午5点17:59.386 | INFO | org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl | Applications still running : [application_1423189731488_0063] |
我首先按照第一个重要信息去GOOGLE,在jira上找到了原来这是这个版本的一个BUG,后面版本应该FIX掉了,但是我想改源码重新部署集群,于是我找日志发现了下面第二个重要信息,提示说我有一个一个application仍在运行,很奇怪,找不到这个正在运行的程序,是由于上面那个斜杠导致的失误导致应用程序状态不一致了。
Applications still running : [application_1423189731488_0063]
于是继续GOOGLE,找到一篇文章:http://stackoverflow.com/questions/27065011/cdh-5-2-error-starting-nodemanager-service-nodemanager-failed-in-state-inited-c
其中说到删除/tmp/hadoop-yarn/yarn-nm-recovery目录,我的目录是配在:/var/lib/hadoop-yarn/yarn-nm-recovery (具体配置的哪个目录可以在cm中的 node manager group中找到)。于是我删除掉无法启动的nm节点上的这个目录,然后重启动,OK了。