我想使用 Apache Livy 等應用程式存取工作,然後將其提交至位於私有子網路的 Amazon EMR 叢集。
簡短說明
使用網際網路對應配置建立 Application Load Balancer。將 Application Load Balancer 的目標設為主節點的私有 IP 地址。這樣可讓您執行下列動作:
- 連線至位於私有子網路的 EMR 叢集。
- 使用 REST API 將工作提交至用戶端。
解決方法
注意: 如果您使用 Kerberos 啟動叢集或為 Livy 啟用 SSL,下列動作可能無法運作。
- 開啟 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