Hadoop 文件在Amazon EMR中不存在,即使它尝试上载它

Hadoop 文件在Amazon EMR中不存在,即使它尝试上载它,hadoop,amazon-web-services,yarn,emr,amazon-emr,Hadoop,Amazon Web Services,Yarn,Emr,Amazon Emr,我使用AmazonEMR创建了一个EMR-4.0.0集群: 但是,每当我尝试在其上提交spark应用程序时,它都会失败,并出现以下错误: 文件不存在:hdfs://ip-xx-xx-xxx-xx.ec2.internal:8020/user/hadoop/.sparkStaging/application_1441035668468_0001/spark-assembly-1.4.1-hadoop2.6.0-amzn-0.jar 即使在日志的前面,它上载了完全相同的文件,但没有发出任何错误消息:

我使用AmazonEMR创建了一个
EMR-4.0.0集群

但是,每当我尝试在其上提交spark应用程序时,它都会失败,并出现以下错误:

文件不存在:hdfs://ip-xx-xx-xxx-xx.ec2.internal:8020/user/hadoop/.sparkStaging/application_1441035668468_0001/spark-assembly-1.4.1-hadoop2.6.0-amzn-0.jar

即使在日志的前面,它上载了完全相同的文件,但没有发出任何错误消息:

2015-08-31 15:43:29070信息[main]纱线.客户端(Logging.scala:logInfo(59))-上传资源文件:/usr/lib/spark/lib/spark-assembly-1.4.1-hadoop2.6.0-amzn-0.jar->hdfs://ip-xx-xx-xxx-xx.ec2.internal:8020/user/hadoop/.sparkStaging/application_1441035668468_0001/spark-assembly-1.4.1-hadoop2.6.0-amzn-0.jar

(我已经验证了主计算机上的源文件确实存在于/usr/lib/spark/lib/spark-assembly-1.4.1-hadoop2.6.0-amzn-0.jar)

我使用的命令是:

spark-submit --deploy-mode cluster --master yarn-cluster --class com.sundaysky.ads.spark.cluster.TrackingLogsAnalysis /tmp/oz/AdsTests-1.0-SNAPSHOT.jar
顺便说一句,我注意到它使用了
Java1.7
(尽管它是Amazon最新的EMR版本),但我认为这与此无关

您是否知道问题可能是什么,或者如何调试问题?我尝试了多种方法向spark submit命令添加参数,以从Thread客户端获取跟踪级别的消息,但没有成功

谢谢,
Oz

因此,在与亚马逊支持人员交谈后,万一有人遇到类似问题:

我的案例中的具体问题是,我的逻辑jar(不是由Amazon提供的spark-assembly-1.4.1-hadoop2.6.0-amzn-0.jar)是用Java8编译的,而机器只支持Java7

这在步骤的错误日志中没有反映,而是在步骤容器的stderr日志中反映,其中出现了以下消息:

15/08/31 15:43:41 INFO yarn.ApplicationMaster: Starting the user application in a separate Thread Exception in thread "main" java.lang.UnsupportedClassVersionError:     com/xxxxxx/xxxx/xxxxx/xxxxx/MyClass : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
如果遇到类似问题,并且步骤的日志文件没有提供答案,还应查看容器的日志:

  • 转到亚马逊的电子病历网页
  • 单击群集以打开群集详细信息屏幕
  • 在“日志URI”附近应该有一个文件夹图标,单击它打开日志
  • 转到“容器”,继续往下看与任务匹配的容器
  • 检查stderr.gz和stdout.gz是否存在问题
嗯,, 奥兹