首页 文章

将Spark作业提交到Amazon EMR

提问于
浏览
0

我即将尝试EMR,现在就开始通过文档 . 我对提交过程感到有些困惑 .

1) Where are the spark Libraries

从Spark文档中我们发现:

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

  • (a)我想知道EMR是如何设置的,即它是由EMR设置还是我必须自己设置?

2) How to the --master parameter works ?

从我们的spark文档:

- --master :与Spark支持的其他集群管理器不同,其中主参数在--master参数中指定,在YARN模式下,资源管理器的地址从Hadoop配置中获取 . 因此, - master参数是yarn .

  • (a)EMR直接设置了吗?

3) Is there a way to submit the application from by terminal, or is the only way to actually deploy the jar on S3 ? 我可以登录主人并从那里进行提交吗?是否所有Env变量都必须使提交脚本正常工作(参见上一个问题)?提交此权限的最有效方式是什么?

1 回答

  • 1
    • 火花库在哪里? spark 在路径中可用,这意味着,您可以从主节点上的任何位置的命令行界面运行 spark-submit ,但是,如果要调整spark的配置文件,它们位于所有节点上的 /etc/spark/conf/ 下 .

    • 如何提交Spark应用程序?有两种方法

    • a) CLI on the master node: issue spark-submit 包含所有参数,例如: spark-submit --class com.some.core.Main --deploy-mode cluster --master yarn --jars s3://path_to_some_jar.jar

    • b) AWS EMR Web console: 从EMR Web控制台提交火花应用程序意味着提交EMR步骤,EMR步骤基本上是火花提交的UI版本,更多信息here

    • --master参数如何工作,它是由EMR直接设置的吗?如果您使用AWS EMR步骤(即Web控制台方式),则会自动设置,UI会自动为您添加此项,但如果您使用CLI作为问题 2a ,则需要特别提及 .

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

    • a)将jar(构建文件)发布到 s3 并在提交时引用它 .

    • b)将 jar 与SCP一起复制到主人,并在提交时引用它 .

    5)提交脚本必须准备好所有必需的Env变量吗?

    • 是的,对于所有与火花/纱线相关的env变量,如果将 spark 应用程序添加到EMR,它是一个完全配置好的即用型 spark 群集 .

    • 不,对于所有自定义env变量,一种可以实现此目的的方法是利用AWS EMR bootstrap action 执行脚本,该脚本只能在群集创建期间完成,更多信息here

    6)提交此权限的最有效方式是什么?这取决于用例,如果您可以/想要自己管理作业,只需执行 spark-submit 但是为了获得AWS EMR自动调试日志的优势,那么 AWS EMR step 是可行的方法 .

    更新:

    7)如何改变纱线,火花等配置?同样有两种选择

    • CLI:Hadoop配置文件位于 /etc/hadoop/conf ,在主节点上修改这些文件,您可能必须重新启动主节点上的纱线管理器 .

    • AWS Web Console:您可以在创建集群时在Web控制台上提交here的配置,例如,如果要启用YARN FAIR调度,则要提供的配置JSON将如下所示

    { 'classification': 'yarn-site', 'Properties': { 'yarn.resourcemanager.scheduler.class':'org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler' } }

    PS:我忘了提及,几乎无论您在AWS Web控制台上做什么,您都可以使用AWS CLI或AWS SDK以编程方式执行相同操作 .

相关问题