如果集群在私有子网中,我如何通过应用程序访问 Amazon EMR 集群?

1 分钟阅读
0

我想要使用 Apache Livy 之类的应用程序访问并将工作提交到处于私有子网中的 Amazon EMR 集群。

简短描述

使用面向互联网的方案创建 Application Load Balancer。将 Application Load Balancer 的目标设置为主节点的私有 IP 地址。这样就可以执行以下操作:

  1. 连接私有子网中的 EMR 集群。
  2. 使用 REST API 向客户提交任务。

解决方法

**注意:**如果您使用 Kerberos 启动集群或启用 SSL for Livy,以下操作可能无法起作用。

  1. 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台
  2. 在导航窗格中,选择负载均衡下的负载均衡器
  3. 选择创建负载均衡器
  4. 选择负载均衡器类型页面上的 Application Load Balancer 下,选择创建
  5. 步骤 1:配置负载均衡器页面上,执行以下操作:
    对于方案,选择面向互联网
    对于侦听器,使用默认选项 (HTTP 和端口 80)
    对于 VPC,选择 EMR 集群所在的 VPC。
    对于可用区,选择两个子网。请确保其中一个是 EMR 集群所在的子网 (私有子网)。
  6. 选择下一步:配置安全设置
  7. 如果您在上一步创建了一个安全侦听器,则请完成配置安全设置页面。否则,选择下一步:配置安全组
  8. 为 Application Load Balancer 选择安全组。请记住,这是面向互联网的 Application Load Balancer。最佳实践是使用安全组将传入请求限制在特定 IP 地址或 IP 地址范围。
  9. 选择下一步:配置路由
  10. 步骤 4:配置路由页面上:
    对于目标组,选取您选择的目标组。
    对于名称,输入目标名称。
    对于目标类型,请选择 IP
    对于协议,选择 HTTP
    对于端口,输入客户端 Web UI 的端口。例如,对于 Livy,输入 8998。有关更多信息,请参阅查看 Amazon EMR 集群上托管的 Web 界面
    运行状况检查部分中,对于协议,选择 HTTP
    对于路径,输入 /sessions
  11. 选择下一步:注册目标
  12. 步骤 5:注册目标页面上,对于 IP,输入主节点的私有 IP 地址。您可以在集群详细信息页面硬件选项卡上查找主节点的私有 IP 地址。
  13. 选择添加到列表以将 IP 地址添加到待注册列表中。
  14. 选择下一步:查看,然后选择创建
  15. 状态变为活动时,选择侦听器选项卡。
  16. 规则列中,选择目标组链接。
  17. 目标选项卡中,确认注册目标可用区运行状况正常。
  18. 描述选项卡上,选择负载均衡器旁的链接 (该链接是负载均衡器的名称)。如果出现 Livy Web UI,则配置正常工作。这意味着请求可以到达私有子网中 EMR 群集上的 Livy。

您现在可以将作业提交至客户端。例如,以下命令将 Apache Spark 作业提交到 Livy 服务器。将 livyALB-2103017743.us-east-1.elb.amazonaws.com 替换为您的 Application Load Balancer 的 DNS 名称。您可以在 Application Load Balancer 的描述选项卡中找到 DNS 名称。

curl -X POST --data '{"kind": "pyspark"}' -H "Content-Type: application/json" livyALB-2103017743.us-east-1.elb.amazonaws.com/sessions

相关信息

访问 Spark Web UI

Apache Livy

相关视频

AWS 官方
AWS 官方已更新 3 年前