我想要使用 Apache Livy 之类的应用程序访问并将工作提交到处于私有子网中的 Amazon EMR 集群。
简短描述
使用面向互联网的方案创建 Application Load Balancer。将 Application Load Balancer 的目标设置为主节点的私有 IP 地址。这样就可以执行以下操作:
- 连接私有子网中的 EMR 集群。
- 使用 REST API 向客户提交任务。
解决方法
**注意:**如果您使用 Kerberos 启动集群或启用 SSL for Livy,以下操作可能无法起作用。
- 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台。
- 在导航窗格中,选择负载均衡下的负载均衡器。
- 选择创建负载均衡器。
- 在选择负载均衡器类型页面上的 Application Load Balancer 下,选择创建。
- 在步骤 1:配置负载均衡器页面上,执行以下操作:
对于方案,选择面向互联网。
对于侦听器,使用默认选项 (HTTP 和端口 80)
对于 VPC,选择 EMR 集群所在的 VPC。
对于可用区,选择两个子网。请确保其中一个是 EMR 集群所在的子网 (私有子网)。
- 选择下一步:配置安全设置。
- 如果您在上一步创建了一个安全侦听器,则请完成配置安全设置页面。否则,选择下一步:配置安全组。
- 为 Application Load Balancer 选择安全组。请记住,这是面向互联网的 Application Load Balancer。最佳实践是使用安全组将传入请求限制在特定 IP 地址或 IP 地址范围。
- 选择下一步:配置路由。
- 在步骤 4:配置路由页面上:
对于目标组,选取您选择的目标组。
对于名称,输入目标名称。
对于目标类型,请选择 IP。
对于协议,选择 HTTP。
对于端口,输入客户端 Web UI 的端口。例如,对于 Livy,输入 8998。有关更多信息,请参阅查看 Amazon EMR 集群上托管的 Web 界面。
在运行状况检查部分中,对于协议,选择 HTTP。
对于路径,输入 /sessions。
- 选择下一步:注册目标。
- 在步骤 5:注册目标页面上,对于 IP,输入主节点的私有 IP 地址。您可以在集群详细信息页面的硬件选项卡上查找主节点的私有 IP 地址。
- 选择添加到列表以将 IP 地址添加到待注册列表中。
- 选择下一步:查看,然后选择创建。
- 当状态变为活动时,选择侦听器选项卡。
- 在规则列中,选择目标组链接。
- 在目标选项卡中,确认注册目标和可用区运行状况正常。
- 在描述选项卡上,选择负载均衡器旁的链接 (该链接是负载均衡器的名称)。如果出现 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