在E-MapReduce(簡稱EMR)集群中,為了確保集群安全,Hadoop、Spark和Flink等開源組件的Web UI的端口均未對外開放。鑒于此安全機制,您無法直接訪問這些組件的管理界面。EMR提供了控制臺和SSH隧道兩種方式進行安全訪問。本文為您介紹如何通過SSH隧道方式訪問開源組件Web UI。
前提條件
獲取主節點的節點名稱和公網IP地址
進入節點管理頁面。
在頂部菜單欄處,根據實際情況選擇地域和資源組。
單擊目標集群操作列的節點管理。
單擊主實例組所在行的圖標。
在節點名稱和公網IP列中,您可以查看主節點的節點名稱和公網IP地址。
使用動態端口轉發方式
創建從本地服務器開放端口到集群主節點的SSH隧道,并運行偵聽該端口的本地SOCKS代理服務器,端口的數據會由SSH隧道轉發到集群主節點。
創建SSH隧道。
重要完成隧道創建之后,請保持終端打開狀態,此時并不會返回響應。
密鑰方式
ssh -i <密鑰文件路徑> -N -D 8157 root@<主節點公網IP地址>
密碼方式
ssh -N -D 8157 root@<主節點公網IP地址>
相關參數描述如下:
8157
:本地服務器端口以8157
為例,實際配置時,您可使用本地服務器未被使用的任意一個端口。-D
:使用動態端口轉發,啟動SOCKS代理進程并偵聽用戶本地端口。<主節點公網IP地址>
:獲取方式請參見獲取主節點的節點名稱和公網IP地址。<密鑰文件路徑>
:密鑰文件保存的路徑。
配置瀏覽器。
完成動態轉發配置以后,您可以從以下兩種方式中選擇一種來進行瀏覽器配置。
Chrome瀏覽器命令行方式
打開命令行窗口,進入本地Google Chrome瀏覽器客戶端的安裝目錄。
操作系統不同,Chrome瀏覽器的默認安裝目錄不同。
操作系統
Chrome默認安裝目錄
macOS X
/Applications/Google\ Chrome.app/Contents/macOS
Linux
/usr/bin/google-chrome
Windows
C:\Program Files (x86)\Google\Chrome\Application\
在Chrome瀏覽器的默認安裝目錄下,執行以下命令。
Windows和Linux
chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/
macOS X
./Google\ Chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/
相關參數描述如下:
/tmp/
:如果是Windows操作系統,則/tmp/
可以寫成類似/c:/tmppath/
的路徑。如果是Linux或者Mac OS X操作系統,則可直接寫成/tmp/路徑。8157
:本地服務器端口以8157
為例,實際配置時,您可使用本地服務器未被使用的任意一個端口。
在瀏覽器地址欄輸入
http://<主節點的主機名>:<port>
,即可訪問相應的Web UI。組件端口信息請參見服務常用端口及配置,主機名的獲取請參見獲取主節點的節點名稱和公網IP地址。
例如:訪問Yarn頁面時,在瀏覽器地址欄輸入
http://master-1-1:8088
。
代理擴展程序方式
代理擴展程序可以幫助您更加輕松地在瀏覽器中管理和使用代理,確保網頁瀏覽和集群Web UI訪問互不干擾。
安裝Chrome的SwitchyOmega插件。
安裝完成以后,單擊SwitchyOmega插件,然后在彈出框中選擇選項進行配置。
單擊新建情景模式,輸入情景模式名稱(例如SSH tunnel),情景模式類型選擇PAC情景模式。
在PAC腳本中配置以下內容。
function regExpMatch(url, pattern) { try { return new RegExp(pattern).test(url); } catch(ex) { return false; } } function FindProxyForURL(url, host) { if (shExpMatch(url, "*localhost*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*emr-header*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*emr-worker*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*master*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*core*")) return "SOCKS5 localhost:8157"; return 'DIRECT'; }
完成上述參數配置后,在左側導航欄中單擊應用選項。
打開Chrome瀏覽器,在Chrome中單擊SwitchyOmega插件,切換到之前創建的SSH tunnel情景模式下。
在瀏覽器地址欄輸入
http://<主節點的主機名>:<port>
,即可訪問相應的Web UI。組件端口信息請參見服務常用端口及配置,主機名的獲取方式請參見獲取主節點的節點名稱和公網IP地址。
例如:訪問Yarn頁面時,在瀏覽器地址欄輸入
http://master-1-1:8088
。
使用本地端口轉發方式
此方式只能查看最外層的頁面,無法查看詳細的作業信息。
您可以通過SSH本地端口轉發(即將主實例端口轉發到本地端口),訪問當前主節點上運行的網絡應用界面,而不使用SOCKS代理。
在本地服務器終端輸入以下命令,創建SSH隧道。
重要完成隧道創建之后,請保持終端打開狀態,此時并不會返回響應。
密鑰方式
ssh -i <密鑰文件路徑> -N -L 8157:<主節點主機名>:8088 root@<主節點公網IP地址>
密碼方式
ssh -N -L 8157:<主節點主機名>:8088 root@<主節點公網IP地址>
相關參數描述如下:
-L
:使用本地端口轉發,您可以指定一個本地端口,用于將數據轉發到主節點本地Web服務器上標識的遠程端口。8088
:主節點上ResourceManager的訪問端口,您可以替換為其他組件的端口。組件端口信息請參見服務常用端口及配置,主機名的獲取請參見獲取主節點的節點名稱和公網IP地址。
8157
:本地服務器端口以8157
為例,實際配置時,您可使用本地服務器未被使用的任意一個端口。<主節點公網IP地址>
:獲取方式請參見獲取主節點的節點名稱和公網IP地址。<密鑰文件路徑>
:密鑰文件保存的路徑。
保持終端打開狀態,打開瀏覽器,在瀏覽器地址欄中輸入
http://localhost:8157/
。
服務常用端口及配置
服務 | 端口 | 描述 |
Hadoop 2.X | 50070 | HDFS Web UI的端口。 配置參數為dfs.namenode.http-address或dfs.http.address。 說明 dfs.http.address已過期但仍能使用。 |
50075 | DataNode Web UI的端口。 | |
50010 | Datanode服務端口,用于數據傳輸。 | |
50020 | IPC服務的端口。 | |
8020 | 高可用的HDFS RPC端口。 | |
8025 | ResourceManager端口。 配置參數為yarn.resourcemanager.resource-tracker.address。 | |
9000 | 非高可用的HDFS RPC端口。 配置參數為fs.defaultFS或fs.default.name。 說明 fs.default.name已經過期但仍能使用。 | |
8088 | YARN Web UI的端口。 | |
8485 | JournalNode的RPC端口。 | |
8019 | ZKFC的端口。 | |
19888 | JobHistory Server的Web UI端口。 配置參數為mapreduce.jobhistory.webapp.address。 | |
10020 | JobHistory Server的Web UI端口。 配置參數為mapreduce.jobhistory.address。 | |
Hadoop 3.X | 8020 | NameNode的端口。 配置參數為dfs.namenode.http-address或dfs.http.address。 說明 dfs.http.address已過期但仍能使用。 |
9870 | ||
9871 | NameNode的端口。 | |
9866 | DataNode的端口。 | |
9864 | DataNode的端口。 | |
9865 | DataNode的端口。 | |
8088 | ResourceManager的端口。 配置參數為yarn.resourcemanager.webapp.address。 | |
MapReduce | 8021 | JobTracker的端口。 配置參數為mapreduce.jobtracker.address。 |
Zookeeper | 2181 | 客戶端連接Zookeeper的端口。 |
2888 | Zookeeper集群內通訊使用,Leader監聽此端口。 | |
3888 | Zookeeper端口,用于選舉Leader。 | |
HBase | 16010 | Hbase的Master節點的Web UI端口。 配置參數為hbase.master.info.port。 |
16000 | HMaster的端口。 配置參數為hbase.master.port。 | |
16030 | Hbase的RegionServer的Web UI管理端口。 配置參數為hbase.regionserver.info.port。 | |
16020 | HRegionServer的端口。 配置參數為hbase.regionserver.port。 | |
9099 | ThriftServer的端口。 | |
Hive | 9083 | MetaStore服務默認監聽端口。 |
10000 | Hive的JDBC端口。 | |
10001 | Spark Thrift Sever的JDBC端口。 | |
Spark | 7077 |
|
8080 | Master節點的Web UI端口,用于資源調度。 | |
8081 | Worker節點的Web UI端口,用于資源調度。 | |
4040 | Driver的Web UI端口,用于任務調度。 | |
18080 | Spark History Server的Web UI 端口。 | |
Kafka | 9092 | Kafka集群節點之間通信的RPC端口。 |
Redis | 6379 | Redis服務端口。 |
HUE | 8888 | Hue Web UI的端口。 |
Oozie | 11000 | Oozie Web UI的端口。 |
Druid | 18888 | Druid Web UI的端口。 |
18090 | Overlord的端口。 配置參數為overlord.runtime頁簽下的druid.plaintextPort。 | |
18091 | MiddleManager的端口。 配置參數為middleManager.runtime頁簽下的druid.plaintextPort。 | |
18081 | Coordinator的端口。 配置參數為coordinator.runtime頁簽下的druid.plaintextPort。 | |
18083 | Historical的端口。 配置參數為historical.runtime頁簽下的druid.plaintextPort。 | |
18082 | Broker的端口。 配置參數為broker.runtime頁簽下的druid.plaintextPort。 | |
Ganglia | 9292 | Ganglia Web UI的端口。 |
Ranger | 6080 | Ranger Web UI的端口。 |
Kafka Manager | 8085 | Kafka Manager的端口。 |
Superset | 18088 | Superset Web UI的端口。 |
Impala | 21050 | 使用JDBC連接Impala的端口。 |
Presto | 9090 | Presto Web UI的端口。 |
相關文檔
如果您需要通過控制臺的方式訪問Web UI,詳情請參見訪問鏈接與端口。