在 EKS 上使用 Apache Livy 运行适用于亚马逊 EMR 的 Spark 应用程序 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 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 运行交互式会话,请参阅以下步骤。

  1. 确保您可以访问自托管或托管的 Jupyter 笔记本,例如 Jupyter 笔记本。 SageMaker 你的 jupyter 笔记本必须安装了 sp ar kmagic。

  2. 为 Spark 配置创建一个存储桶spark.kubernetes.file.upload.path。确保 Spark 服务账号拥有存储桶的读写权限。有关如何配置 spark 服务账户的更多详细信息,请参阅使用 IAM 角色为服务账户设置访问权限 (IRSA)

  3. 使用命令在 Jupyter 笔记本中加载 sparkmagic。%load_ext sparkmagic.magics

  4. 运行命令使用 %manage_spark Jupyter 笔记本设置你的 Livy 端点。选择 “添加端点” 选项卡,选择配置的身份验证类型,将 Livy 端点添加到笔记本,然后选择添加端点。

  5. %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_>" } }
  6. 提交应用程序并等待其创建 Spark 上下文。

  7. 要监视交互式会话的状态,请运行以下命令。

    curl -s -k -H 'Content-Type: application/json' -X GET livy-endpoint/sessions/my-interactive-session

监控 Spark 应用程序

要使用 Livy 用户界面监控 Spark 应用程序的进度,请使用链接http://<livy-endpoint>/ui