2017-02-22 25 views
1

AWS Cliを使用してクラスタを起動しようとしています。クラスタモードでスパークステップを使用するAWS EMR。アプリケーションapplication_が失敗したステータスで終了しました

aws emr create-cluster --name "Config1" --release-label emr-5.0.0 --applications Name=Spark --use-default-role --log-uri 's3://aws-logs-813591802533-us-west-2/elasticmapreduce/' --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m1.medium InstanceGroupType=CORE,InstanceCount=2,InstanceType=m1.medium 

クラスタが正常に作成されました。次に、私はこのコマンドを追加します:

aws emr add-steps --cluster-id ID_CLUSTER --region us-west-2 --steps Name=SparkSubmit,Jar="command-runner.jar",Args=[spark-submit,--deploy-mode,cluster,--master,yarn,--executor-memory,1G,--class,Traccia2014,s3://tracceale/params/scalaProgram.jar,s3://tracceale/params/configS3.txt,30,300,2,"s3a://tracceale/Tempi1"],ActionOnFailure=CONTINUE 

しばらくして、ステップが失敗しました。

17/02/22 11:00:07 INFO RMProxy: Connecting to ResourceManager at ip-172-31- 31-190.us-west-2.compute.internal/172.31.31.190:8032 
17/02/22 11:00:08 INFO Client: Requesting a new application from cluster with 2 NodeManagers 
17/02/22 11:00:08 INFO Client: Verifying our application has not requested 
Exception in thread "main" org.apache.spark.SparkException: Application application_1487760984275_0001 finished with failed status 
at org.apache.spark.deploy.yarn.Client.run(Client.scala:1132) 
at org.apache.spark.deploy.yarn.Client$.main(Client.scala:1175) 
at org.apache.spark.deploy.yarn.Client.main(Client.scala) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:729) 
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185) 
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210) 
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124) 
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 
17/02/22 11:01:02 INFO ShutdownHookManager: Shutdown hook called 
17/02/22 11:01:02 INFO ShutdownHookManager: Deleting directory /mnt/tmp/spark-27baeaa9-8b3a-4ae6-97d0-abc1d3762c86 
Command exiting with ret '1' 

ローカル(サンドボックスHortonworks HDP 2.5上の)私が実行します:これは、ログファイルである

./spark-submit --class Traccia2014 --master local[*] --executor-memory 2G /usr/hdp/current/spark2-client/ScalaProjects/ScripRapportoBatch2.1/target/scala-2.11/traccia-22-ottobre_2.11-1.0.jar "/home/tracce/configHDFS.txt" 30 300 3 

、すべてが正常に動作します。 私は既に自分の問題に関連する何かを読んだことがありますが、私はそれを理解できません。

UPDATE

アプリケーションマスターにチェック、私はこのエラーを取得:S3からに: "//tracceale/params/configS3.txt S3" 私が述べたパスを渡し

17/02/22 15:29:54 ERROR ApplicationMaster: User class threw exception: java.io.FileNotFoundException: s3:/tracceale/params/configS3.txt (No such file or directory) 

at java.io.FileInputStream.open0(Native Method) 
at java.io.FileInputStream.open(FileInputStream.java:195) 
at java.io.FileInputStream.<init>(FileInputStream.java:138) 
at scala.io.Source$.fromFile(Source.scala:91) 
at scala.io.Source$.fromFile(Source.scala:76) 
at scala.io.Source$.fromFile(Source.scala:54) 
at Traccia2014$.main(Rapporto.scala:40) 
at Traccia2014.main(Rapporto.scala) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:627) 
17/02/22 15:29:55 INFO ApplicationMaster: Final app status: FAILED, exitCode: 15, (reason: User class threw exception: java.io.FileNotFoundException: s3:/tracceale/params/configS3.txt (No such file or directory)) 

を関数 'fromFile'は次のようになります。

for(line <- scala.io.Source.fromFile(logFile).getLines()) 

どうすれば解決できますか?前もって感謝します。

答えて

0

クラスタ展開モードを使用しているため、含まれているログはまったく役に立ちません。彼らは、アプリケーションが失敗したが失敗した理由はないと言うだけです。なぜ失敗したのかを理解するには、Sparkドライバがクラスタ展開モードで実行される場所であるため、少なくともアプリケーションマスターログを調べる必要があります。アプリケーションが失敗した理由についてのヒントが得られるはずです。

クラスタに--log-uriを設定しているので、s3:// aws-logs-813591802533-us-west-2/elasticmapreduce/<クラスタIDの下にアプリケーションマスタのログがあります。/containers/< YARN Application ID> /ここでYARNアプリケーションIDは(上記のログに基づいて)application_1487760984275_0001であり、コンテナIDはcontainer_1487760984275_0001_01_000001のようになります。アプリケーションの最初のコンテナはアプリケーションマスターです。

+0

にパスを変換するための操作として使用SparkContext.hadoopRDD()は今、私は問題を理解している、ありがとうございました。私は私の答えを更新しました。これをチェックしてください。 –

0

HadoopファイルシステムAPIからアクセスできるオブジェクトストアへのURLと、java.io.Fileからのスタックトレースがあります。それはローカルディスク内のものを参照していないため、読み込みません。

RDD

+0

okです。 私は新しい戦略を試みています。私はファイルを 'put'コマンドでマスターノードに入れました。それは/ home/hadoop /にファイルをアップロードしますが、このファイルは私が思うようにスレーブに到達できません。同じエラーが発生します。 –

+0

あなたはそれをする必要はありません、S3はソースとして動作します。ただ、hadoopRDD()関数を使って、これがhadoop互換のファイルシステム –

関連する問題