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

上次更新时间:2020 年 9 月 24 日

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

简短描述

在公有子网中创建 Application Load Balancer。将 Application Load Balancer 的目标设置为主节点的私有 IP 地址。这样做可使您连接到处于私有子网中的 EMR 集群,然后将作业提交到使用 REST API 的客户端。

解决方法

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

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

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

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

这篇文章对您有帮助吗?


您是否需要账单或技术支持?