首页 > 解决方案 > 如何在 EMR 上启动 master 和 slave

问题描述

我是 EMR 新手,现在无法在 EMR 上运行我的 Spark 应用程序。我的问题是如何在 EMR 上使用 $start-master.sh 和 $start-slave.sh。我将这 2 个命令放入 bash 文件并上传到 S3 以进行引导。

aws emr create-cluster --release-label $release_label \
--instance-groups InstanceGroupType="MASTER",InstanceCount=$instance_count,InstanceType=$instance_type,BidPrice=0.2,Name="MASTER" \
InstanceGroupType="CORE",InstanceType=$instance_type,InstanceCount=$instance_count,BidPrice=0.2,Name="CORE" \
--auto-terminate \
--use-default-roles \
--name knx-attribution-spark-$product-$environment-$build_number \
--log-uri s3://knx-logs/emr/knx-attribution-spark-$product-$environment \
--ec2-attributes KeyName=$keypair,SubnetId=$subnet,EmrManagedMasterSecurityGroup=$sg1,EmrManagedSlaveSecurityGroup=$sg1,AdditionalMasterSecurityGroups=$sg2,AdditionalSlaveSecurityGroups=$sg2 \
--tags Name="knx-emr-attribution-spark-$product-$environment" Environment=$environment \
--applications Name=Spark Name=Hadoop\
--bootstrap-actions Path="s3://${BOOTSTRAP_FILE}" \
--steps Type=Spark,Name=Stage,ActionOnFailure=CONTINUE,Args=[--deploy-mode,client,--packages,org.mongodb.spark:mongo-spark-connector_2.11:2.3.0,--driver-memory,8g,--executor-memory,4g,--num-executors,4,--py-files,s3://${FILE_ZIP},--master,spark://127.0.0.1:7077,s3://${BUCKET}]

引导文件是:

./spark/sbin/start-master.sh
./spark/sbin/start-slave.sh spark://127.0.0.1:7077

它总是抛出这个错误:

/emr/instance-controller/lib/bootstrap-actions/1/install_lib.sh: line 4: start-master.sh: command not found

标签: pysparkamazon-emr

解决方案


在 EMR 上,Spark 在 YARN 上运行,而不是在独立模式下运行。除非我没有看到其他错误,否则您唯一需要更改的是从 spark-submit 步骤的参数中删除“--master,spark://127.0.0.1:7077”。要使用的正确参数是“--master,yarn”,但这是 EMR 的默认值,因此您无需指定。


推荐阅读