AWS 上 DC/OS 集群上的 Spark 作业

Posted

技术标签:

【中文标题】AWS 上 DC/OS 集群上的 Spark 作业【英文标题】:Spark job on DC/OS cluster on AWS 【发布时间】:2016-05-19 14:27:03 【问题描述】:

我正在尝试在 AWS 上的 DC/OS 上的 Spark 中运行批处理。对于每个批处理,我在进行 spark 提交时会发送一些特定的参数(例如为哪些用户执行批处理)。

我有一个 DC/OS 上的 Spark 集群,有一个主节点和 3 个私有节点。

我创建了一个application.conf 文件并将其上传到 S3,并启用了访问该文件的权限。

我的 spark 提交命令如下所示:

dcos spark run --submit-args='-Dspark.mesos.coarse=true --driver-class-path https://path_to_the_folder_root_where_is_the_file --conf spark.driver.extraJavaOptions=-Dconfig.file=application.conf -- conf spark.executor.extraJavaOptions=-Dconfig.file=application.conf --class class_name jar_location_on_S3'

我得到了找不到job.properties文件的错误:

线程“main”com.typesafe.config.ConfigException$Missing 中的异常:未找到键“wattio-batch”的配置设置 在 com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124) 在 com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:145) 在 com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:159) 在 com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:164) 在 com.typesafe.config.impl.SimpleConfig.getObject(SimpleConfig.java:218) 在 com.typesafe.config.impl.SimpleConfig.getConfig(SimpleConfig.java:224) 在 com.typesafe.config.impl.SimpleConfig.getConfig(SimpleConfig.java:33) 在 com.enerbyte.spark.jobs.wattiobatch.WattioBatchJob$.main(WattioBatchJob.scala:31) 在 com.enerbyte.spark.jobs.wattiobatch.WattioBatchJob.main(WattioBatchJob.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:786) 在 org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:183) 在 org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:208) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:123) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

如何正确设置?其中一个私有slave虽然执行了驱动,但是否可以上网(是否可以到S3下载conf文件)?

谢谢

【问题讨论】:

【参考方案1】:

我没有成功从 spark submit 命令发送 conf 文件,但我所做的是在我的程序开头硬编码 application.conf 文件的位置:

System.setProperty("config.url", "https://s3_location/application.conf") ConfigFactory.invalidateCaches()

这样,程序每次启动时都能读取 application.conf 文件。

【讨论】:

以上是关于AWS 上 DC/OS 集群上的 Spark 作业的主要内容,如果未能解决你的问题,请参考以下文章

我的 spark 作业在 aws EMR 集群上长时间处于接受模式

如何暂停 Spark 集群上的作业以及如何恢复它?

如何将 Spark EMR 集群与 AWS elasticsearch 集群连接起来

在没有 spark UI 的情况下在 AWS EMR 中监控 spark 集群

aws emr 上的 spark 集群找不到 spark-env.sh

查找我的 spark 作业输出文件的位置