今天在使用kylin build的時候,在新集羣的Yarn上提交了一些作業。報了一些錯誤,在Yarn的UI上面看到
Stack trace: ExitCodeException exitCode=1:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:538)
at org.apache.hadoop.util.Shell.run(Shell.java:455)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:715)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:211)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Container exited with a non-zero exit code 1
Failing this attempt. Failing the application
這個報錯有時候很迷惑,並非真正是表面堆棧信息展示的,打開ResourceManager的日誌和NodeManager的日誌,顯示的也是類似錯誤,實際我們要去JobHistory的日誌裏面查看,可以看到真正底層的日誌,實際上是權限問題,跑任務的用戶對HDFS上/user/history這個目錄沒有相關的權限,導致了這個問題,把權限授予後,就不再報錯了。
還有一個問題,container被kill,code 143在日誌信息裏面看到
1.0 GB of 1 GB physical memory used; 2.8 GB of 2.1 GB virtual memory used. Killing container.
這代表申請的內存不夠用了,所以在配置裏面加大內存重新跑就好了。