我正在尝试使用Amazon Data-Pipeline在Amazon EMR集群上运行spark scala应用程序。该步骤在EMRActivity中添加如下:
command-runner.jar,spark-submit,--deploy-mode,cluster,--class,com.demo.GettingStarted,s3://myBucket/sampleApps/HelloWorld.jar
查看EMR日志后,作业将跟随堆栈跟踪一致失败:
线程“main”中的异常org.apache.spark.SparkException:Application
application_1517065923932_0001 finished with failed status
at org.apache.spark.deploy.yarn.Client.run(Client.scala:1034)
at org.apache.spark.deploy.yarn.Client$.main(Client.scala:1081)
at org.apache.spark.deploy.yarn.Client.main(Client.scala)
可能导致此错误的原因是什么?
这是一个将Hello World打印到控制台的示例应用程序。
相同的工作适用于AWS EMR。
答案 0 :(得分:0)
请查看资源管理器中的应用程序日志。如果在EMR中启用Hue服务,则可以从UI查看日志。在顺化,转到工作流程 - > DashBoard - >工作流并查看作业和容器日志。我怀疑Oozie可能无法解析spark-defaults.conf参数。
当我在spark-defaults.conf中配置以下属性时,如果oozie版本4.3.0中包含空格,则Oozie无法解析配置。
spark.driver.extraJavaOptions -XX:+ UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction = 70 -XX:MaxHeapFreeRatio = 70 -XX:+ CMSClassUnloadingEnabled -XX:OnOutOfMemoryError ='kill -9%p' spark.dynamicAllocation.enabled是的 spark.executor.extraJavaOptions -verbose:gc -XX:+ PrintGCDetails -XX:+ PrintGCDateStamps -XX:+ UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction = 70 -XX:MaxHeapFreeRatio = 70 -XX:+ CMSClassUnloadingEnabled -XX:OnOutOfMemoryError ='kill -9 %p'
答案 1 :(得分:0)
我认为其中一个原因是你应该将jar的路径指定为{input.directoryPath}/HelloWorld.jar
,其中input.directoryPath来自于使用S3DataNode。
如果能找到确切的日志会更好。
要查看驱动程序/执行程序生成的日志,请转至:p ipelineLogUri->EmrClusterId->{latest_run}->containers->application->containe
r。最后一步,即容器,对于驱动程序日志选择具有id:-1的容器,其余的日志(2,3,4 ...)将是通过执行程序实例生成的日志。