【问题标题】:oozie spark 2.0 action giving exception: java.lang.NoClassDefFoundError: org/apache/spark/internal/Loggingoozie spark 2.0 动作给出异常:java.lang.NoClassDefFoundError: org/apache/spark/internal/Logging
【发布时间】:2018-06-18 20:08:32
【问题描述】:

我在尝试使用 oozie 运行 spark 操作时遇到以下异常

ERROR yarn.ApplicationMaster: User class threw exception: java.lang.NoClassDefFoundError: org/apache/spark/internal/Logging
java.lang.NoClassDefFoundError: org/apache/spark/internal/Logging
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.apache.spark.sql.SparkSession$.builder(SparkSession.scala:861)
    at com.spark.morbiditymerge.MorbidityProcessMessage$.main(MorbidityProcessMessage.scala:19)
    at com.spark.morbiditymerge.MorbidityProcessMessage.main(MorbidityProcessMessage.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:542)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.internal.Logging
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 20 more

火花代码在 Eclipse 中本地运行良好。但是,我在尝试使用 oozie 运行它时遇到了上述异常。

我正在使用 spark 2.0 和 scala 2.11.8。我在我的 pom 文件中包含了所有 spark 2.0 依赖项。

我在 cloudera 文档中读到不支持 Oozie Spark2 操作。这就是我得到这个例外的原因吗?如果是,还有其他方法可以使用 oozie 运行 spark 2.0 作业吗?

【问题讨论】:

  • 您使用的是 uber jar 还是thin jar?

标签: scala hadoop apache-spark oozie


【解决方案1】:

我也遇到了这个问题,并且能够找到解决方法。创建一个 Oozie Shell 操作,使用您的必要参数调用 spark2-submit

否则,如果您更愿意在 CDH 上使用 spark 操作,您可以考虑在 1.6 中重写您的代码。

【讨论】:

  • 我尝试创建一个 oozie shell 操作来像这样调用 spark 提交 --> spark-submit --class com.spark.morbiditymerge.MorbidityProcessMessage --master yarn --deploy-mode cluster --queue eda1_e360 --executor-memory 20G --num-executors 50 hdfs://cdhdev/user/yxs7634/morbiditymerge-0.0.1-SNAPSHOT.jar。但是,我得到了以下异常 org.apache.hadoop.security.AccessControlException: Permission denied: user=yxs7634, access=EXECUTE, inode="/user/yarn/.sparkStaging/application_1505336691782_403270":yarn:supergroup:drwx--- ---
  • 您正试图以用户身份执行代码,但应用程序目录归超级组所有。恐怕我对此无能为力,但您可以尝试与您的运营团队交谈。您是否能够执行简单的 bash 命令(例如 sleep 10 作为 shell 操作?)
【解决方案2】:

您可以选择为 spark2 设置 oozie 共享库,然后通过将 oozie.action.sharelib.for.spark=spark2 设置为 job.propertiesworkflow.xml spark action 来使用此 spark2 oozie 库

<property>
    <name>oozie.action.sharelib.for.spark</name>
    <value>spark2</value>
</property>

要为 spark2 设置 oozie 共享库,请遵循 hortonworks documnet section Configuring Oozie Spark Action for Spark 2。在 CDH 中可以执行相同的步骤,但指定的路径需要根据 CDH 集群设置进行修改。我正在使用 cdh 中的 oozie spark 操作成功执行 spark2 作业。

【讨论】:

    【解决方案3】:

    根据 CDH 社区文档 oozie 与 spark2.0 不兼容。 所以你应该在 spark1.6 中使用 oozie

    以下是 CDH 参考链接 - https://www.cloudera.com/documentation/spark2/latest/topics/spark2_known_issues.html#ki_oozie_spark_action

    学习愉快:)

    【讨论】:

      猜你喜欢
      • 2019-06-01
      • 1970-01-01
      • 2017-03-10
      • 2021-07-22
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多