本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
添加 Spark 步骤
您可以使用 Amazon EMR 步骤向安装在 EMR 集群上的 Spark 框架提交工作。有关更多信息,请参阅《Amazon EMR 管理指南》中的步骤。在控制台和 CLI 中,您使用 Spark 应用程序步骤 (代表您将 spark-submit
脚本作为步骤运行) 来完成此操作。借助 API,您通过 spark-submit
使用步骤调用 command-runner.jar
。
有关向 Spark 提交应用程序的更多信息,请参阅 Apache Spark 文档中的提交应用程序
使用控制台提交 Spark 步骤
-
在 Cluster List (集群列表) 中,选择您的集群的名称。
-
滚动到 Steps (步骤) 部分并展开它,然后选择 Add step (添加步骤)。
-
在 Add Step (添加步骤) 对话框中:
-
对于 Step type (步骤类型),选择 Spark application (Spark 应用程序)。
-
对于 Name(名称),接受原定设置名称(Spark application)或键入一个新名称。
-
对于 Deploy mode (部署模式),选择 Client (客户端) 或 Cluster (集群) 模式。客户端模式在集群的主实例上启动驱动程序,而集群模式在集群上启动驱动程序。对于客户端模式,驱动程序的日志输出将显示在步骤日志中,而对于集群模式,驱动程序的日志输出将显示在第一个 YARN 容器的日志中。有关更多信息,请参阅 Apache Spark 文档中的集群模式概览
。 -
指定所需的 Spark-submit options。有关
spark-submit
选项的更多信息,请参阅使用 spark-submit 启动应用程序。 -
对于 Application location (应用程序位置),指定应用程序的本地或 S3 URI 路径。
-
对于 Arguments (参数),将该字段保留为空白。
-
对于 Action on failure (出现故障时的操作),接受默认选项 Continue (继续)。
-
-
选择 添加。步骤会出现在控制台中,其状态为“Pending”。
-
步骤的状态会随着步骤的运行从“Pending”变为“Running”,再变为“Completed”。要更新状态,请选择 Actions (操作) 列上方的 Refresh (刷新) 图标。
-
如果您配置了日志记录,则这一步的结果将放在 Amazon EMR 控制台的 Cluster Details (集群详细信息) 页面上,位于您的步骤旁边的 Log Files (日志文件) 下方。在启动集群时,您可以选择在配置的日志存储桶中查找步骤信息。
要使用 Spark 将作品提交给 Spark Amazon CLI
在创建集群时提交步骤,或使用 aws emr
add-steps
子命令在现有集群中提交步骤。
-
使用
create-cluster
,如以下示例所示。注意
为了便于读取,包含 Linux 行继续符(\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号(^)。
aws emr create-cluster --name "Add Spark Step Cluster" --release-label
emr-7.6.0
--applications Name=Spark \ --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \ --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10] --use-default-roles作为替代方法,您可使用
command-runner.jar
,如以下示例所示。aws emr create-cluster --name "Add Spark Step Cluster" --release-label
emr-7.6.0
\ --applications Name=Spark --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \ --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10] --use-default-roles注意
为了便于读取,包含 Linux 行继续符(\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号(^)。
-
或者,向正在运行的集群添加步骤。使用
add-steps
。aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=Spark,Name="Spark Program",ActionOnFailure=CONTINUE,Args=[--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/examples/jars/spark-examples.jar,10]
作为替代方法,您可使用
command-runner.jar
,如以下示例所示。aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[spark-example,SparkPi,10]
使用 SDK for Java 向 Spark 提交工作
-
下面的示例显示如何通过 Java 添加步骤至带有 Spark 的集群:
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(credentials); StepFactory stepFactory = new StepFactory(); AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials); AddJobFlowStepsRequest req = new AddJobFlowStepsRequest(); req.withJobFlowId("j-
1K48XXXXXXHCB
"); List<StepConfig> stepConfigs = new ArrayList<StepConfig>(); HadoopJarStepConfig sparkStepConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("spark-submit","--executor-memory","1g","--class","org.apache.spark.examples.SparkPi","/usr/lib/spark/examples/jars/spark-examples.jar","10"); StepConfig sparkStep = new StepConfig() .withName("Spark Step") .withActionOnFailure("CONTINUE") .withHadoopJarStep(sparkStepConf); stepConfigs.add(sparkStep); req.withSteps(stepConfigs); AddJobFlowStepsResult result = emr.addJobFlowSteps(req); -
您可以通过查看该步骤的日志来了解该步骤的结果。 Amazon Web Services Management Console 如果您启用了日志记录,则可以在中执行此操作,方法是选择 “步骤”,选择您的步骤,然后在 “日志文件” 中,选择
stdout
或stderr
。要查看可用日志,请选择 View Logs (查看日志)。
覆盖 Spark 默认配置设置
建议您为不同的应用程序覆盖 Spark 默认配置值。您可以在提交应用程序时使用步骤完成此操作 (实质上是向 spark-submit
传递选项)。例如,您可能需要通过更改 spark.executor.memory
来更改为执行者进程分配的内存。您可以为 --executor-memory
开关提供类似下面的参数:
spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10
同样地,您也可以调节 --executor-cores
和 --driver-memory
。在步骤中,您可以向步骤提供以下参数:
--executor-memory 1g --class org.apache.spark.examples.SparkPi /usr/lib/spark/examples/jars/spark-examples.jar 10
您还可以使用 --conf
选项调节没有内置开关的设置。有关可调节的其他设置的更多信息,请参阅 Apache Spark 文档中的动态加载 Spark 属性