如果叢集位於私有子網路,該如何透過應用程式存取 Amazon EMR 叢集?

2 分的閱讀內容
0

我想使用 Apache Livy 等應用程式存取工作,然後將其提交至位於私有子網路的 Amazon EMR 叢集。

簡短說明

使用網際網路對應配置建立 Application Load Balancer。將 Application Load Balancer 的目標設為主節點的私有 IP 地址。這樣可讓您執行下列動作:

  1. 連線至位於私有子網路的 EMR 叢集。
  2. 使用 REST API 將工作提交至用戶端。

解決方法

注意: 如果您使用 Kerberos 啟動叢集或為 Livy 啟用 SSL,下列動作可能無法運作。

  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 年前