可用介面
Managed Service for Apache Spark 叢集主要執行個體提供下列介面 (請將 master-host-name 替換為主要執行個體名稱)。
| 網路使用者介面 | 通訊埠 | 網址 |
|---|---|---|
| YARN ResourceManager | 80881 | http://master-host-name:8088 |
| HDFS NameNode | 98702,3 | http://master-host-name:9870 |
1 在已啟用 Kerberos 的叢集上,YARN ResourceManager 網頁版 UI 通訊埠為 8090,並在 HTTPS 上執行。
2 在已啟用 Kerberos 的叢集上,HDFS Namenode 網頁 UI 通訊埠為 9871,並在 HTTPS 上執行。
3 在 1.2 版之前的 Managed Service for Apache Spark 版本中,HDFS Namenode 網頁 UI 通訊埠為 50070。
YARN ResourceManager 的「Tracking UI」(追蹤 UI) 欄下方,有目前所有執行中和已完成的 MapReduce 和 Spark 應用程式網頁介面連結。
允許的 YARN ResourceManager REST API
建立叢集時,Managed Service for Apache Spark 會將 yarn-site.xml yarn.resourcemanager.webapp.methods-allowed屬性設為「GET,HEAD」,將可在 YARN Resource Manager 網頁 UI 和 REST API 上呼叫的 HTTP 方法限制為 GET 和 HEAD 方法。這項預設設定也會停用透過 YARN REST API 提交及修改工作的權限。
您可以覆寫預設值,將這項屬性設為一或多個以半形逗號分隔的 HTTP 方法名稱,在通訊埠 8088 啟用特定 HTTP 方法。ALL 值會允許通訊埠上的所有 HTTP 方法。
範例:
gcloud dataproc clusters create cluster-name \ --properties=^#^yarn:yarn.resourcemanager.webapp.methods-allowed=GET,POST,DELETE \ --region=region \
建議:如果將這項屬性設為允許非預設 HTTP 方法,請務必設定防火牆規則和其他安全性設定,限制對通訊埠 8088 的存取。
連線至網頁介面
您可以使用 Managed Service for Apache Spark 元件閘道、專案的 Cloud Shell 或 Google Cloud CLI gcloud 指令列工具,連線至在 Managed Service for Apache Spark 叢集上執行的網頁介面:
元件閘道:只要按一下,即可從 Google Cloud 控制台連線至 Hadoop、Spark 和其他元件網頁版使用者介面。您可以在建立叢集時啟用元件閘道。
Cloud Shell: Google Cloud 控制台中的 Cloud Shell 已預先安裝 gcloud CLI 指令與公用程式,並提供網頁預覽功能,可讓您透過 SSH 通道快速連線至叢集上的網頁介面通訊埠。不過,從 Cloud Shell 連線至叢集時,會使用本機通訊埠轉送功能,只會開啟叢集網頁介面上一個通訊埠的連線,因此需要多個指令才能連線至多個通訊埠。此外,Cloud Shell 工作階段會在閒置一段時間 (30 分鐘) 後自動結束。
Google Cloud CLI:
gcloud compute ssh指令搭配動態通訊埠轉送,可讓您建立 SSH 通道,並在通道上執行 SOCKS Proxy 伺服器。發出這個指令後,您必須設定本機瀏覽器,才能使用 SOCKS Proxy。這種連線方法可讓您連線至叢集網頁介面上的多個通訊埠。請參閱「我可以使用本機通訊埠轉送,而不使用 SOCKS Proxy 嗎?。
設定常用的指令變數
如要更輕鬆地在本機電腦或 Cloud Shell 中複製及執行指令列範例,請設定 gcloud dataproc 指令變數。本頁中顯示的部分指令範例可能還需要設定其他變數。
Linux/mac/Shell
export PROJECT=project;export HOSTNAME=hostname;export ZONE=zone
Windows
set PROJECT=project && set HOSTNAME=hostname && set ZONE=zone
- 將 PROJECT 設為 Google Cloud 專案 ID
- 將 HOSTNAME 設為 Managed Service for Apache Spark 叢集中主要節點的名稱 (主要節點名稱結尾為
-m後置字串) - 將 ZONE 設為 Managed Service for Apache Spark 叢集中 VM 的可用區 (例如「us-central1-b」)
建立 SSH 通道
gcloud 指令
在本機電腦上執行下列 gcloud 指令,設定從本機電腦上開放通訊埠到叢集主要執行個體的 SSH 通道,並執行在本機 SOCKS Proxy 伺服器,監聽該通訊埠。
在執行指令前,請先在您的本機電腦上:
- 設定常用指令變數
- 將 PORT 變數設為本機電腦上的開放通訊埠。通訊埠
1080是任意但典型的選擇,因為它可能已開啟。PORT=number
Linux/macOS
gcloud compute ssh ${HOSTNAME} \
--project=${PROJECT} --zone=${ZONE} -- \
-D ${PORT} -N
Windows
gcloud compute ssh %HOSTNAME% ^ --project=%PROJECT% --zone=%ZONE% -- ^ -D %PORT% -N
-- 分隔符可讓您將 SSH 引數新增至 gcloud compute ssh 指令,如下所示:
-D:指定動態應用程式層級通訊埠轉送。-N指示gcloud不要開啟遠端殼層。
這個 gcloud 指令會建立 SSH 通道,該通道會獨立於其他 SSH 殼層工作階段運作,將通道相關錯誤排除在殼層輸出內容之外,並有助於防止通道意外關閉。
如果 ssh 指令失敗,並顯示錯誤訊息 bind: Cannot assign requested address,可能的原因是要求的通訊埠正在使用中。請嘗試使用不同的 PORT 變數值執行指令。
上述指令會在前景中執行,並且必須保持執行狀態以維持通道暢通。刪除叢集後,指令應會自動結束。
Cloud Shell
-
開啟 Google Cloud Cloud Shell。
-
在 Cloud Shell 中執行下列
gcloud指令,設定從 Cloud Shell 預先發布版通訊埠到叢集主節點上網頁介面通訊埠的 SSH 通道。執行指令前,請先在 Cloud Shell 中:- 設定常用指令變數
- 將 PORT1 變數設為 Cloud Shell 通訊埠 (範圍為 8080 至 8084),並將 PORT2 變數設為 Managed Service for Apache Spark 叢集主要節點上的網頁介面通訊埠。
PORT1=number PORT2=number
gcloud compute ssh ${HOSTNAME} \ --project=${PROJECT} --zone=${ZONE} -- \ -4 -N -L ${PORT1}:${HOSTNAME}:${PORT2}--分隔符可讓您將 SSH 引數新增至gcloud compute ssh指令,如下所示:-4指示 ssh 僅使用 IPv4。-N指示gcloud不要開啟遠端殼層。-L ${PORT1}:${HOSTNAME}:${PORT2}指定從指定 Cloud Shell PORT1 到叢集 HOSTNAME:PORT2 的本機通訊埠轉送。
這個
gcloud指令會建立 SSH 通道,該通道會獨立於其他 SSH 殼層工作階段運作,將通道相關錯誤排除在殼層輸出內容之外,並有助於防止通道意外關閉。
設定瀏覽器
gcloud 指令
SSH 通道支援使用 SOCKS 通訊協定進行流量 Proxy 處理。如要將瀏覽器設為使用 Proxy,請使用 Proxy 伺服器參數啟動新的瀏覽器工作階段。以下範例使用 Google Chrome 瀏覽器。
HOSTNAME 是叢集主要節點的名稱 (請參閱「設定常用指令變數」)。
Linux
/usr/bin/google-chrome \
--proxy-server="socks5://localhost:${PORT}" \
--user-data-dir=/tmp/${HOSTNAME}
macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--proxy-server="socks5://localhost:${PORT}" \
--user-data-dir=/tmp/${HOSTNAME}
Windows
"%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe" ^ --proxy-server="socks5://localhost:%PORT%" ^ --user-data-dir="%Temp%\%HOSTNAME%"
這個指令會使用下列 Chrome 瀏覽器旗標:
-proxy-server="socks5://localhost:1080"會指示 Chrome 透過 SOCKS Proxy 伺服器localhost:${PORT}傳送所有http://和https://網址要求,並使用第 5 版 SOCKS 通訊協定。${PORT} 是您在「建立 SSH 通道」中設定的通訊埠變數。網址的主機名稱是由 Proxy 伺服器解析,而非由 Chrome 在本機解析。--user-data-dir=/tmp/${HOSTNAME}會強制 Chrome 開啟新視窗,且不與現有 Chrome 工作階段連結。如果沒有這個旗標,Chrome 可能會開啟附加至現有 Chrome 工作階段的新視窗,並忽略--proxy-server設定。為--user-data-dir設定的值可以是任何不存在的路徑。
Cloud Shell
使用 Cloud Shell 時,您不需要設定本機瀏覽器。 建立 SSH 通道後,請使用 Cloud Shell 網頁預覽功能連線至叢集介面。
連線至叢集介面
gcloud 指令
將本機瀏覽器設為使用 Proxy 後,即可前往 Managed Service for Apache Spark 叢集上的網頁介面網址 (請參閱「可用的介面」)。瀏覽器網址的格式和內容如下:
http://cluster-name-m:port (叢集介面通訊埠)
Cloud Shell
按一下 Cloud Shell 的「Web Preview」(網頁預覽) 按鈕
,然後選取下列其中一個選項:
- 「透過以下通訊埠預覽:8080」或
- 「變更通訊埠」,然後在對話方塊中插入通訊埠編號
gcloud compute ssh 指令的 Cloud Shell PORT1 號碼 (通訊埠 8080 - 8084)。
瀏覽器視窗會開啟,並連線至叢集主要執行個體節點上的網頁介面通訊埠。
常見問題和偵錯提示
如果在瀏覽器中看不到使用者介面該怎麼辦?
如果您在瀏覽器中看不到使用者介面,最常見的兩個原因是:
網路連線發生問題,可能是防火牆所致。 執行下列指令 (設定本機變數後),確認是否能透過 SSH 連線至主要執行個體。如果無法,表示有連線問題。
Linux/macOS
gcloud compute ssh ${HOSTNAME}-m \ --project=${PROJECT}Windows
gcloud compute ssh %HOSTNAME%-m ^ --project=%PROJECT%
SOCKS Proxy 受到其他 Proxy 的干擾。如要檢查 Proxy,請執行下列
curl指令 (適用於 Linux 和 macOS):如果看到 HTTP 回應,表示 Proxy 正常運作,因此 SOCKS Proxy 可能遭到其他 Proxy 或瀏覽器擴充功能中斷。Linux/macOS
curl -Is --socks5-hostname localhost:1080 http://cluster-name-m:8088
Windows
curl.exe -Is --socks5-hostname localhost:1080 http://cluster-name-m:8088
我可以使用本機通訊埠轉送,而不用 SOCKS Proxy 嗎?
除了 SOCKS Proxy 之外,您也可以透過 SSH 本機通訊埠轉送功能,存取在主要執行個體上執行的網頁應用程式 UI,將主要執行個體的通訊埠轉送至本機通訊埠。舉例來說,下列指令可讓您存取 localhost:1080,以便在不使用 SOCKS 的情況下連線至 cluster-name-m:8088 (請參閱「設定常用指令變數」):
Linux/macOS
gcloud compute ssh ${HOSTNAME}-m \
--project=${PROJECT} -- \
-L 1080:${HOSTNAME}-m:8088 -N -n
Windows
gcloud compute ssh %HOSTNAME%-m ^ --project=%PROJECT% -- ^ -L 1080:%HOSTNAME%-m:8088 -N -n
使用 SOCKS Proxy 可能比使用本機通訊埠轉送功能適合,原因是 Proxy:
- 可讓您存取所有網頁應用程式通訊埠,不必為每個 UI 通訊埠設定通訊埠轉送通道
- 可讓 Spark 和 Hadoop 網頁版 UI 正確解析 DNS 主機