将Spark作业提交到Amazon EMR

时间:2018-11-01 03:30:12

标签: apache-spark amazon-emr

我将要尝试EMR,并且此后将通过文档。我对提交过程有些困惑。

1)Spark库在哪里

从Spark文档中我们可以找到:

-spark.yarn.jars: 包含要分发到YARN容器的Spark代码的库列表。默认情况下,YARN上的Spark将使用本地安装的Spark jar,但是Spark jar也可以位于HDFS上的世界可读位置。这使YARN可以将其缓存在节点上,因此无需在每次运行应用程序时将其分发。例如,要指向HDFS上的jar,请将此配置设置为hdfs:/// some / path。允许使用globs。

  • (a)我想知道如何使用EMR进行设置,即由EMR设置还是我必须自己进行设置?

2)--master参数如何工作?

在spark文档中,我们有:

---master :与Spark支持的其他群集管理器不同,在--master参数中指定了master地址的情况下,在YARN模式下,ResourceManager的地址是从Hadoop配置中提取的。因此,--master参数是yarn。

  • (a)是由EMR直接设置的吗?

3)是否可以通过终端提交应用程序,还是在S3上实际部署jar的唯一方法?我可以登录到主数据库并从那里进行提交吗? ?提交脚本正常工作所需的所有Env变量是否准备就绪(请参阅上一个问题)?最有效的提交方式是什么?

1 个答案:

答案 0 :(得分:2)

  1. Spark库在哪里? spark在路径中可用,这意味着您可以从主节点上任何地方的命令行界面运行spark-submit,但是,如果要调整spark的配置文件,它们位于{{ 1}}。

  2. 如何提交Spark申请?有两种方法

    • /etc/spark/conf/发行了a) CLI on the master node:,包含所有参数,例如:spark-submit

    • spark-submit --class com.some.core.Main --deploy-mode cluster --master yarn --jars s3://path_to_some_jar.jar从EMR Web控制台提交Spark应用程序意味着提交EMR步骤,EMR步骤基本上是spark提交的UI版本,更多信息here

  3. --master参数如何工作,是否由EMR直接设置?如果您使用AWS EMR步骤(即Web控制台方式),则会自动设置此设置,UI会自动为您添加此设置,但是如果您将CLI用作问题b) AWS EMR Web console:,则需要特别提及。

4)是在S3上实际部署jar的唯一方法吗?有两种(或更多)方式

  • a)将jar(构建文件)发布到2a,并在提交时引用它。
  • b)复制jar使其与SCP配合使用,并在提交时引用它。

5)提交脚本正常工作所需的所有Env变量是否准备就绪?

  • 是的,对于所有与spark / yarn相关的env变量,如果将s3应用程序添加到EMR,则它是完全配置的即用型spark集群。
  • 否,对于所有自定义环境变量,实现此目标的一种方法是利用AWS EMR spark执行脚本,这只能在集群创建期间完成,更多信息here

6)最有效的提交方式是什么?这取决于用例,如果您可以/想要自行管理任务,只需执行bootstrap action,但要获得AWS EMR自动调试日志的优势,那就可以使用spark-submit

更新:

7)如何更改纱线,火花等的构造?再次有两个选择

  • CLI:Hadoop conf文件位于AWS EMR step上,在主节点上进行修改,您可能必须在主节点上重新启动yarn管理器。
  • AWS Web控制台:创建集群时,您可以按照here的说明在Web控制台上提交配置,例如,如果要启用YARN FAIR调度,将提供的配置JSON如下像

    /etc/hadoop/conf

PS:我忘了提到,几乎在AWS Web控制台上可以执行的任何操作,都可以通过AWS CLI或AWS SDK以编程方式进行。