使用适用于 Amazon EMR on EKS 的 Apache Livy 运行 Spark 应用程序 - Amazon EMR

使用适用于 Amazon EMR on EKS 的 Apache Livy 运行 Spark 应用程序

在使用 Apache Livy 运行 Spark 应用程序之前,请确保已完成设置适用于 Amazon EMR on EKS 的 Apache Livy开始使用适用于 Amazon EMR on EKS 的 Apache Livy 中的步骤。

您可以使用 Apache Livy 运行两种类型的应用程序:

  • 批处理会话:一种 Livy 工作负载,用于提交 Spark 批处理作业。

  • 交互式会话:一种 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.3.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 Notebook,如 SageMaker Jupyter Notebook。您的 Jupyter Notebook 必须安装了 sparkmagic

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

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

  4. 运行 %manage_spark 命令以使用 Jupyter Notebook 设置 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.3.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 UI 监控 Spark 应用程序的进度,请使用链接 http://<livy-endpoint>/ui