gpt4 book ai didi

amazon-web-services - AWS EMR 上的持续集成

转载 作者:行者123 更新时间:2023-12-04 01:39:17 25 4
gpt4 key购买 nike

我们有一个长期运行的 EMR 集群,上面使用引导操作安装了多个库。其中一些库正在持续开发中,其代码库位于 GitHub 上。

我一直在寻求以类似于 Travis 和 CodeDeploy 的方式将 Travis CI 与 AWS EMR 相结合。这个想法是让 GitHub 上的代码经过测试并自动部署到 EMR,同时使用引导操作在所有 EMR 的节点上安装更新的库。

我想到的一个解决方案是在中间使用一个EC2实例,这里可以先使用Travis和CodeDeploy在实例上部署代码。之后,实例上的午餐脚本被触发,以使用更新的库创建一个新的 EMR 集群。

但是上述方案意味着我们每次部署新版本的系统都需要创建一个新的EMR集群

还有什么建议吗?

最佳答案

您绝对不想维护一个 EC2 实例来编排这样的 CI/CD 过程。首先,它带来了很多挑战,因为你需要处理整个服务器实例,保持它的维护,处理网络,应用监控和警报来处理可用性问题,即使那样,你也不会有可用性保证,这可能会导致其他问题。最重要的是,为了这样的目的而维护 EC2 实例是完全没有必要的。

我建议您调查使用 Amazon CodePipeline 和 Lambda Step Function。Step Function 可用于在完全无服务器环境中编排 EMR 集群的配置。使用 CodePipeline,您可以在 Github 存储库中设置一个 Web Hook ,以在将更改提交到主 Github 分支(或您指定的任何分支)时自动拉取代码并启动新部署。您可以使用 EMRFS 将 S3 存储桶或文件夹同步到集群的 EMR 文件系统,然后获得 IAM 的安全优势,以及 EMRFS 附带的额外一致性保证。借助 Lambda,您还可以无缝集成到其他服务,例如 Kinesis、DynamoDB 和 CloudWatch 等,这将简化许多管理和开发任务,并使您能够以最小的努力实现更复杂的自动化。

关于将 CodePipeline 与 EMR 结合使用以及一般情况,有一些很棒的资源和教程。以下是一些示例:

还有关于使用 Lambda Step Functions 编排应用程序的精彩教程,包括 EMR 的使用。以下是一些示例:

在最坏的情况下,如果所有这些选项都失败了,例如,如果您需要在 EMR 集群完成其引导后对 EMR 集群的启动过程进行非常严格的控制,您始终可以创建一个加载的 Java JAR作为最后一步,然后使用它来执行 shell 脚本或使用各种 Amazon Java 库来运行您的配置命令。即使在这种情况下,您仍然不需要出于编排目的维护自己的 EC2 实例(在我看来,即使它在 Kubernetes 的 Docker 容器中运行,这仍然很难证明是合理的)因为您可以轻松地维护它部署过程以及完全无服务器的方法。

Amazon re:Invent session 中有许多精彩视频,您可能希望观看这些视频,以便在进入研讨会之前快速入门。例如:

YouTube 上还有更多此类视频。

Travis CI 还支持 Lambda 部署,如下所述:https://docs.travis-ci.com/user/deployment/lambda/

关于amazon-web-services - AWS EMR 上的持续集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48007252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com