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 EMR 集群与 AWS elasticsearch 集群连接起来
在没有 spark UI 的情况下在 AWS EMR 中监控 spark 集群