我即将尝试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 回答
火花库在哪里?
spark
在路径中可用,这意味着,您可以从主节点上的任何位置的命令行界面运行spark-submit
,但是,如果要调整spark的配置文件,它们位于所有节点上的/etc/spark/conf/
下 .如何提交Spark应用程序?有两种方法
a) CLI on the master node:
issuespark-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
执行脚本,该脚本只能在群集创建期间完成,更多信息here6)提交此权限的最有效方式是什么?这取决于用例,如果您可以/想要自己管理作业,只需执行
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以编程方式执行相同操作 .