【发布时间】:2016-06-01 06:35:09
【问题描述】:
我有一个 Spark (Spark 1.5.2) 应用程序,可将数据从 Kafka 流式传输到 HDFS。我的应用程序包含两个 Typesafe 配置文件来配置某些东西,比如 Kafka 主题等。
现在我想在集群中使用 spark-submit(集群模式)运行我的应用程序。 包含我项目所有依赖项的 jar 文件存储在 HDFS 上。 只要我的配置文件包含在 jar 文件中,一切正常。但这对于测试目的是不切实际的,因为我总是必须重建 jar。
因此,我排除了我的项目的配置文件,并通过“驱动程序类路径”添加了它们。这在客户端模式下有效,但如果我现在将配置文件移动到 HDFS 并在集群模式下运行我的应用程序,它将找不到设置。您可以在下面找到我的 spark-submit 命令:
/usr/local/spark/bin/spark-submit \
--total-executor-cores 10 \
--executor-memory 15g \
--verbose \
--deploy-mode cluster\
--class com.hdp.speedlayer.SpeedLayerApp \
--driver-class-path hdfs://iot-master:8020/user/spark/config \
--master spark://spark-master:6066 \
hdfs://iot-master:8020/user/spark/speed-layer-CONFIG.jar
我已经用 --file 参数试过了,但也没有用。有人知道我该如何解决这个问题吗?
更新:
我做了一些进一步的研究,发现它可能与 HDFS 路径有关。我将 HDFS 路径更改为“hdfs:///iot-master:8020//user//spark//config 但不幸的是,这也不起作用。但也许这可以帮助你。
您还可以在下面看到我在集群模式下运行驱动程序时遇到的错误:
Exception in thread "main" java.lang.reflect.InvocationTargetException
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:497)
at org.apache.spark.deploy.worker.DriverWrapper$.main(DriverWrapper.scala:58)
at org.apache.spark.deploy.worker.DriverWrapper.main(DriverWrapper.scala)
Caused by: java.lang.ExceptionInInitializerError
at com.speedlayer.SpeedLayerApp.main(SpeedLayerApp.scala)
... 6 more
Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'application'
at com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:145)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:159)
at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:164)
...
【问题讨论】:
标签: hadoop apache-spark hdfs typesafe