通过EMR on EKS提交任务

  • EMR on EKS让基础设施团队可以集中管理通用计算平台,以将 EMR 工作负载与其他基于容器的应用程序整合。

  • 在上面可以使用常见的EKS 工具简化基础设施管理,并利用共享集群来处理需要不同版本开源框架的工作负载。 还可以通过自动化 Kubernetes 集群管理和操作系统修补来减少运营开销。

  • 在上面借助Fargate,可以启用多个计算资源来满足性能、运营或财务要求。

EMR on EC2EMR on EKS的对比如下图:

EMR on EKS

本节先介绍在EMR on EKS上提交任务

在Cloud 9上确认virtual cluster idEMR_ROLE_ARN已经被设置到环境变量里:

source ~/.bash_profile
echo "VIRTUAL_CLUSTER_ID: $VIRTUAL_CLUSTER_ID" && echo "EMR_ROLE_ARN: $EMR_ROLE_ARN"

在EMR控制台上也能找到Virtual cluster的ID:

image-20231029202923610

提交任务到EMR on EKS

通过CLI提交任务(可以提交2-3次):

aws emr-containers start-job-run \
  --virtual-cluster-id=$VIRTUAL_CLUSTER_ID \
  --name=pi-2 \
  --execution-role-arn=$EMR_ROLE_ARN \
  --release-label=emr-6.9.0-latest \
  --job-driver='{
    "sparkSubmitJobDriver": {
      "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py",
      "sparkSubmitParameters": "--conf spark.executor.instances=1 --conf spark.executor.memory=2G --conf spark.executor.cores=1 --conf spark.driver.cores=1"
    }
  }'

image-20231029203157568

在Cloud 9上检查任务的状态:

kubectl get po --namespace emr --watch

image-20231029203306104

在EMR控制台上检查任务的状态:

image-20231029203247578

image-20231029203833809