EMR on EKS如何获取集群master URL创建Spark Context并运行作业
EMR on EKS Spark Context使用方式解答
明确结论:EMR on EKS并非只支持单作业直接提交模式,完全支持你提到的「单Spark Context复用、执行多个Spark作业」的使用逻辑,和你原有自建Spark集群的操作逻辑可以做到无缝兼容。
两种模式的具体说明如下:
1. 单Spark Context长驻复用模式
这就是你现有应用在用的逻辑,在EMR on EKS上的实现方式为:
- 在EKS集群中部署长驻的Spark driver服务,使用EMR官方提供的对应版本Spark发行版镜像初始化单个
SparkContext,driver以K8s Pod形式长期运行 - 后续新增作业不需要重新初始化上下文,直接提交到这个已存在的
SparkContext上执行即可,executor Pod会由该driver按需调度、复用或销毁,核心逻辑和你原有基于自建Spark master的实现完全一致 - 注意事项:需要给长驻driver配置对应的EMR on EKS IAM操作权限、K8s Pod资源配额,建议开启
spark.dynamicAllocation.enabled动态资源分配参数,根据作业负载自动调整executor数量,避免闲置资源浪费
2. 单作业直接提交模式
这是EMR on EKS默认提供的作业提交方式:
- 通过
aws emr-containers start-job-run命令或Open API直接提交作业,每次提交会独立创建专属的driver和executor Pod,作业执行完成后所有相关资源自动销毁 - 该模式适合作业之间隔离性要求高、无共享数据或上下文依赖的场景,资源利用率更高,不需要维护长驻的driver服务
补充说明
如果你的多作业之间需要共享RDD、广播变量等缓存数据,或者原有应用已经基于单Spark Context复用逻辑做了深度开发,直接选择第一种长驻Context模式即可,不需要修改核心业务逻辑,只需要把Spark运行时镜像替换为EMR官方提供的对应版本镜像、配置好集群访问权限就能正常运行。
内容的提问来源于stack exchange,提问作者Rajashekhar Meesala
相关产品推荐
相关产品推荐

