2016-09-16 6 views
0

現在、Apache Oozieを使用してSpark JobsをCDH 5.8で実行する方法を学習していますが、問題が見つかったようです。OozieとHueのUber Jarを使ってスパークジョブを実行する

IntelliJ> Build Artifact(Uber JAR/Fat JAR)を使用してスパークジョブをコンパイルし、後でそのマニフェストファイルを削除します。次に、spar-submitを実行してJARを実行します。それはうまく動作します。

しかし、私はOozieでSpark Actionを指定しました。

Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.SparkMain], exception invoking main(), java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SparkMain not found 
java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SparkMain not found 
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2199) 
    at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:234) 
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54) 
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343) 
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:415) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693) 
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 
Caused by: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SparkMain not found 
    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2105) 
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2197) 
    ... 9 more 

job.properties:

oozie.use.system.libpath=false 
security_enabled=False 
dryrun=False 
jobTracker=master.meshiang:8032 
nameNode=hdfs://master.meshiang:8020 

マイワークフロー:私は次のエラーを取得する

<workflow-app name="CSV" xmlns="uri:oozie:workflow:0.4"> 
    <start to="spark-2bab"/> 
    <kill name="Kill"> 
     <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
    </kill> 
    <action name="spark-2bab"> 
     <spark xmlns="uri:oozie:spark-action:0.1"> 
      <job-tracker>${jobTracker}</job-tracker> 
      <name-node>${nameNode}</name-node> 
      <master>local[*]</master> 
      <mode>client</mode> 
      <name>MySpark</name> 
       <class>ETL.CSVTransform</class> 
      <jar>/user/meshiang/jar/Spark-GetData.jar</jar> 
       <arg>work_id</arg> 
       <arg>csv_table</arg> 
       <arg>id/FirstName/Lastname</arg> 
       <arg>/user/meshiang/csv/ST1471448595.csv</arg> 
       <arg>,</arg> 
     </spark> 
     <ok to="End"/> 
     <error to="Kill"/> 
    </action> 
    <end name="End"/> 
</workflow-app> 

私はすでにやった:

  1. 同じjarファイルをワークスペースの/ libフォルダに入れ、上記と同じ方法で使用します。ジョブは10分間実行され、自身を殺し、エラーコードまたはメッセージを表示しませんでした。
  2. 色相でSpark Exampleジョブを実行しました。私は、次のメッセージ
  3. を得た

エラー:

JA018 
Error Message Job aborted due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure: Lost task 0.0 in stage 0.0 (TID 0, localhost): java.lang.RuntimeException: Stream '/jars/oozie-examples.jar' was not found. at org.apache.spark.network.client.TransportResponseHandler.handle(TransportResponseHandler.java:219) at org.apache.spark.network.server.TransportChannelHandler.channelRead0(TransportChannelHandler.java:106) at org.apache.spark.network.server.TransportChannelHandler.channelRead0(Tr 

私の質問

  1. 私は私が必要とするクラスをコンパイルし、Oozie ShareLibsを使用する必要がありますか? Oozieは一般的にUber JARSをサポートしていますか?
  2. 私がPig/Sqoopを使用している場合、同じことをする必要はありますか?

答えて

0

ClassNotFoundException: Class org.apache.oozie.action.hadoop.SparkMainを解決するには、oozieシステムのlibプロパティを有効にする必要があります。

oozie.use.system.libpath=true. 

これは、Hive、Pig、Sqoop、Sparkなどのジョブを実行するために必要です。

スパーク・アプリケーション・ジャーをコンパイルしてビルドし、それらをoozieアプリケーション・パスの下にあるlibディレクトリに入れることができます。 Oozieのアプリケーションパスは、workflow.xmlファイルを保存して参照するHDFSのディレクトリです。

希望すると、これが役立ちます。ありがとう。

+0

ありがとうございます!私はOozie Yarn Job Launcherを試しましたが、それは私に 'ERROR [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:MRAppMaster javaを開始する際のエラーを送り続けます。プロパティ。どんな考え? –

+0

これは最初に投稿したのとは異なる問題です。ヤーンジョブの 'stdout'ログを確認するには、どのジャーに' WebAppUtils'クラスが含まれているかを調べる必要があります。そのクラスには2つの異なるバージョンがあります。メソッド(メソッドを持たない不正なもの)を削除することもできますが、jarのソースを見つけて永続的に修正する必要もあります。ありがとう、 – YoungHobbit

関連する問題