本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 EKS 上使用 Apache Livy 运行适用于亚马逊 EMR 的 Spark 应用程序
在使用 Apache Livy 运行 Spark 应用程序之前,请确保已完成在 EKS 上为亚马逊 EMR 设置 Apache Livy 和在 EKS 上开始使用适用于亚马逊 EMR 的 Apache Livy 中的步骤。
你可以使用 Apache Livy 来运行两种类型的应用程序:
-
批处理会话 — 一种用于提交 Spark 批处理作业的 Livy 工作负载。
-
交互式会话 — 一种 Livy 工作负载,为运行 Spark 查询提供编程和可视化界面。
注意
来自不同会话的驱动程序和执行器 pod 可以相互通信。命名空间不能保证 pod 之间的任何安全性。Kubernetes 不允许对给定命名空间内的 Pod 子集进行选择性权限。
运行批处理会话
要提交批处理作业,请使用以下命令。
curl -s -k -H 'Content-Type: application/json' -X POST \ -d '{ "name": "my-session", "file": "entryPoint_location (S3 or local)", "args": ["argument1", "argument2", ...], "conf": { "spark.kubernetes.namespace": "
<spark-namespace>
", "spark.kubernetes.container.image": "public.ecr.aws/emr-on-eks/spark/emr-7.1.0:latest", "spark.kubernetes.authenticate.driver.serviceAccountName": "<spark-service-account>
" } }'<livy-endpoint>
/batches
要监控您的批处理作业,请使用以下命令。
curl -s -k -H 'Content-Type: application/json' -X GET
<livy-endpoint>
/batches/my-session
运行交互式会话
要使用 Apache Livy 运行交互式会话,请参阅以下步骤。
-
确保您可以访问自托管或托管的 Jupyter 笔记本,例如 Jupyter 笔记本。 SageMaker 你的 jupyter 笔记本必须安装了 sp ar
kmagic。 -
为 Spark 配置创建一个存储桶
spark.kubernetes.file.upload.path
。确保 Spark 服务账号拥有存储桶的读写权限。有关如何配置 spark 服务账户的更多详细信息,请参阅使用 IAM 角色为服务账户设置访问权限 (IRSA) -
使用命令在 Jupyter 笔记本中加载 sparkmagic。
%load_ext sparkmagic.magics
-
运行命令使用
%manage_spark
Jupyter 笔记本设置你的 Livy 端点。选择 “添加端点” 选项卡,选择配置的身份验证类型,将 Livy 端点添加到笔记本,然后选择添加端点。 -
%manage_spark
再次运行以创建 Spark 上下文,然后转到 “创建” 会话。选择 Livy 端点,指定唯一的会话名称,选择一种语言,然后添加以下属性。{ "conf": { "spark.kubernetes.namespace": "
livy-namespace
", "spark.kubernetes.container.image": "public.ecr.aws/emr-on-eks/spark/emr-7.1.0:latest", "spark.kubernetes.authenticate.driver.serviceAccountName": "<spark-service-account>
", "spark.kubernetes.file.upload.path": "<URI_TO_S3_LOCATION_>
" } } -
提交应用程序并等待其创建 Spark 上下文。
-
要监视交互式会话的状态,请运行以下命令。
curl -s -k -H 'Content-Type: application/json' -X GET
livy-endpoint
/sessions/my-interactive-session
监控 Spark 应用程序
要使用 Livy 用户界面监控 Spark 应用程序的进度,请使用链接http://<livy-endpoint>/ui
。