Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark AWS EMR取消步骤无法终止相应的spark应用程序_Apache Spark_Amazon Emr - Fatal编程技术网

Apache spark AWS EMR取消步骤无法终止相应的spark应用程序

Apache spark AWS EMR取消步骤无法终止相应的spark应用程序,apache-spark,amazon-emr,Apache Spark,Amazon Emr,我正在为AWS EMR上长期运行的Spark作业设计CI/CD。spark作业作为一个步骤添加到EMR群集中。我正在考虑对CI/CD使用取消步骤和添加步骤。因此,我在CI/CD管道中集成了一个LinuxShell脚本,用于取消并添加步骤。可以取消该步骤。但是,相应的spark应用程序仍在运行。这正常吗?停止运行spark for CI/CD应用程序的正确方法是什么?谢谢 当该步骤运行时,您不能通过AWS API取消,但可以使用EMR的THEAN命令(如 yarn application -kil

我正在为AWS EMR上长期运行的Spark作业设计CI/CD。spark作业作为一个步骤添加到EMR群集中。我正在考虑对CI/CD使用取消步骤和添加步骤。因此,我在CI/CD管道中集成了一个LinuxShell脚本,用于取消并添加步骤。可以取消该步骤。但是,相应的spark应用程序仍在运行。这正常吗?停止运行spark for CI/CD应用程序的正确方法是什么?谢谢

当该步骤运行时,您不能通过AWS API取消,但可以使用EMR的THEAN命令(如

yarn application -kill application_id
其中id可以从下面的命令获得

yarn application -list 

谢谢,我的问题是如何在emr集群的ci cd管道中运行'Thread application-kill'。通过ssh,AFAIK没有选项。是的,我也没有找到其他选项。很难在通往emr主节点的ci/cd管道中执行ssh。不确定spark作业的ci/cd到emr的最佳实践是什么。如果您不关心取消作业,只是等待,那么您可以简单地使用aws API。但是在这种情况下,您应该在创建EMR时向其提供密钥信息,并使用此ssh密钥进行ssh,附加一些命令
ssh-i密钥user@host“command”
。您可以登录到主节点并执行应用程序-kill-application\u-id或使用RESTAPI curl-v-X PUT-d'{“state”:“KILLED”}'{application\u-id}'。。。请检查纱线rest API以更改应用程序状态谢谢kavetiraviteja。这是一个非常好的评论。我使用此方法实现了一个用于CICD的lambda函数。它工作得很好。整个解决方案如下所示。第一步。通过aws cli获取emr群集的主dns名称。第二步。使用rest API检查目标spark作业是否正在运行。第三步。使用RESTAPI终止正在运行的spark作业。第四步。使用aws cli添加步骤以运行从s3获取的spark作业。不确定CICD是否是AWS EMR的标准方式,但它工作得相当好。