安装应用程序软件(例如:spark(后,是否有运行引导操作的方法?我的目的是用我定制的火花罐替换一个AWS火花罐,这必须在AWS安装原始火花后完成。
我之所以不通过正常步骤执行此操作,是因为我想在集群的所有节点上执行此替换,而不仅仅是在主节点上。
虽然这个问题很老,但我还是解决了,并为仍然需要帮助的人添加了答案。正如在上面的评论中所说,我测试它的配置是:
发布标签:emr-5.30.1 Hadoop发行版:Amazon 2.8.5应用程序:spark 2.4.5
真正的问题是,在安装Spark等软件之前,AWS EMR上的引导程序会被执行。
解决方案:分两步完成
-
添加一个引导脚本,将第二个脚本作为后台进程运行。这完成了引导,并使您能够等待安装。下面的示例脚本使用两个参数,S3存储桶路径和环境前缀,并显示了如何将它们传递给下一个脚本。
#!/bin/bash aws s3 cp $1/$2/some/path/to/second/script/emr_second_script.sh . chmod +x emr_second_script.sh nohup ./emr_second_script.sh $1 $2 &>/dev/null &
-
编写第二个脚本,第一个脚本在后台运行。在此脚本中,检查是否显示安装目录,否则请等待/睡眠。一旦满足了这个条件,就施展你所需要的魔法。下面的示例脚本使用两个参数,S3存储桶路径和环境前缀。
#!/bin/bash while [ ! -e /lib/spark/jars/ ] do echo "Spark installation not found, waiting..." sleep 15 done echo "Spark installation found." # Do your actual scripting work here. e.g. Copy jars from S3. enter code here sudo aws s3 cp $1/$2/path/to/my/jar/my-jar-1.0.jar --region us-east-1 /lib/spark/jars exit(0)
您可以在这里找到相同的解决方案来解决略有不同的问题。