Dataproc 叢集包含的一些核心開放原始碼元件,如 Apache Hadoop 和 Apache Spark 會提供網路介面。這些介面可用於管理及監控叢集資源和設施,如 YARN 資源管理工具、Hadoop 分散式檔案系統 (HDFS)、MapReduce 和 Spark。您在叢集上安裝的其他元件或應用程式也可能會提供網路介面 (請參閱在 Dataproc 叢集上安裝及執行 Jupyter Notebook的範例)。
可用介面
以下為 Dataproc 叢集主要節點上可用的介面 (將 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 在 Dataproc 之前版本中 (1.2 以前的版本),HDFS Namenode 網路 UI 通訊埠為 50070。
YARN ResourceManager 在「Tracking UI」資料欄下,提供了所有目前正在執行或已完成的 MapReduce 和 Spark 應用程式網路介面的連結。

允許使用的 YARN ResourceManager REST API
建立叢集時,Dataproc 會將 yarn-site.xml yarn.resourcemanager.webapp.methods-allowed
屬性
設為「GET,HEAD」,藉此將 YARN 資源管理員網頁介面和
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 的存取權。
連線至網路介面
您可以使用 Dataproc 元件閘道、專案的 Cloud Shell 或 Google Cloud CLI gcloud 指令列工具,連線至在 Dataproc 叢集上執行的網路介面:
元件閘道:只要按一下 Google Cloud 主控台,即可連線至 Hadoop、Spark 和其他元件的網頁版 UI 介面。建立叢集時,請啟用元件閘道。
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 設為 Dataproc 叢集中主要節點的名稱 (主要節點會有
-m
的尾碼) - 將 ZONE 設為 Dataproc 叢集中虛擬機器的區域 (例如「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 變數設為範圍介於 8080 至 8084 之間的 Cloud Shell 通訊埠,並將 PORT2 變數設為 Dataproc 叢集主要節點上的網路介面通訊埠。
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 使用第 5 版 SOCKS 通訊協定,透過 SOCKS Proxy 伺服器localhost:${PORT}
傳送所有的http://
和https://
網址要求。 ${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,您就可以連往 Dataproc 叢集上的網路介面網址 (請參閱可用介面一節)。瀏覽器網址的格式及內容如下:
http://cluster-name-m:port
(叢集介面通訊埠)
Cloud Shell
點選 Cloud Shell [Web Preview] (網頁預覽) 按鈕 ,然後選取:
- 「Preview on port 8080」(透過以下通訊埠預覽: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,請執行 (Linux 和 macOS 提供的) 以下
curl
指令: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,此功能可將主要執行個體的通訊埠轉送至本機通訊埠。例如,以下指令可讓您在未使用 SOCKS 的情況下,透過 localhost:1080
存取 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 網路使用者介面正確解析 DNS 主機