端口
Hadoop集羣的各部分一般都會使用到多個端口,有些是daemon之間進行交互之用,有些是用於RPC訪問以及HTTP訪問。而隨着Hadoop周邊組件的增多,完全記不住哪個端口對應哪個應用,特收集記錄如此,以便查詢。這裏包含我們使用到的組件:HDFS, YARN, HBase, Hive, ZooKeeper:
組件 | 節點 | 默認端口 | 配置 | 用途說明 |
HDFS | DataNode | 50010 | dfs.datanode.address | datanode服務端口,用於數據傳輸 |
HDFS | DataNode | 50075 | dfs.datanode.http.address | http服務的端口 |
HDFS | DataNode | 50475 | dfs.datanode.https.address | https服務的端口 |
HDFS | DataNode | 50020 | dfs.datanode.ipc.address | ipc服務的端口 |
HDFS | NameNode | 50070 | dfs.namenode.http-address | http服務的端口 |
HDFS | NameNode | 50470 | dfs.namenode.https-address | https服務的端口 |
HDFS | NameNode | 8020 | fs.defaultFS | 接收Client連接的RPC端口,用於獲取文件系統metadata信息。 |
HDFS | journalnode | 8485 | dfs.journalnode.rpc-address | RPC服務 |
HDFS | journalnode | 8480 | dfs.journalnode.http-address | HTTP服務 |
HDFS | ZKFC | 8019 | dfs.ha.zkfc.port | ZooKeeper FailoverController,用於NN HA |
YARN | ResourceManager | 8032 | yarn.resourcemanager.address | RM的applications manager(ASM)端口 |
YARN | ResourceManager | 8030 | yarn.resourcemanager.scheduler.address | scheduler組件的IPC端口 |
YARN | ResourceManager | 8031 | yarn.resourcemanager.resource-tracker.address | IPC |
YARN | ResourceManager | 8033 | yarn.resourcemanager.admin.address | IPC |
YARN | ResourceManager | 8088 | yarn.resourcemanager.webapp.address | http服務端口 |
YARN | NodeManager | 8040 | yarn.nodemanager.localizer.address | localizer IPC |
YARN | NodeManager | 8042 | yarn.nodemanager.webapp.address | http服務端口 |
YARN | NodeManager | 8041 | yarn.nodemanager.address | NM中container manager的端口 |
YARN | JobHistory Server | 10020 | mapreduce.jobhistory.address | IPC |
YARN | JobHistory Server | 19888 | mapreduce.jobhistory.webapp.address | http服務端口 |
HBase | Master | 60000 | hbase.master.port | IPC |
HBase | Master | 60010 | hbase.master.info.port | http服務端口 |
HBase | RegionServer | 60020 | hbase.regionserver.port | IPC |
HBase | RegionServer | 60030 | hbase.regionserver.info.port | http服務端口 |
HBase | HQuorumPeer | 2181 | hbase.zookeeper.property.clientPort | HBase-managed ZK mode,使用獨立的ZooKeeper集羣則不會啓用該端口。 |
HBase | HQuorumPeer | 2888 | hbase.zookeeper.peerport | HBase-managed ZK mode,使用獨立的ZooKeeper集羣則不會啓用該端口。 |
HBase | HQuorumPeer | 3888 | hbase.zookeeper.leaderport | HBase-managed ZK mode,使用獨立的ZooKeeper集羣則不會啓用該端口。 |
Hive | Metastore | 9083 | /etc/default/hive-metastore中export PORT=<port>來更新默認端口 | |
Hive | HiveServer | 10000 | /etc/hive/conf/hive-env.sh中export HIVE_SERVER2_THRIFT_PORT=<port>來更新默認端口 | |
ZooKeeper | Server | 2181 | /etc/zookeeper/conf/zoo.cfg中clientPort=<port> | 對客戶端提供服務的端口 |
ZooKeeper | Server | 2888 | /etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],標藍部分 | follower用來連接到leader,只在leader上監聽該端口。 |
ZooKeeper | Server | 3888 | /etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],標藍部分 | 用於leader選舉的。只在electionAlg是1,2或3(默認)時需要。 |
所有端口協議均基於TCP。
URL
對於存在Web UI(HTTP服務)的所有hadoop daemon,有如下url:
/jmx?get=MXBeanName::AttributeName 查詢指定bean指定屬性的值,例如/jmx?get=Hadoop:service=NameNode,name=NameNodeInfo::ClusterId會返回ClusterId。 這個請求的處理類:org.apache.hadoop.jmx.JMXJsonServlet
/logs :日誌文件列表,用於下載和查看
/logLevel :允許你設定log4j的日誌記錄級別,類似於hadoop daemonlog
/stacks :所有線程的stack trace,對於debug很有幫助
/jmx :服務端的Metrics,以JSON格式輸出。
/jmx?qry=Hadoop:*會返回所有hadoop相關指標。
NameNode:http://:50070/
/dfshealth.jsp:HDFS信息頁面,其中有鏈接可以查看文件系統
/dfsnodelist.jsp?whatNodes=(DEAD|LIVE):顯示DEAD或LIVE狀態的datanode
/fsck:運行fsck命令,不推薦在集羣繁忙時使用!
DataNode:http://:50075/
/blockScannerReport:每個datanode都會指定間隔驗證塊信息
RPC
RPC(Remote Procedure Call Protocol)——遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,爲通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分佈式多程序在內的應用程序更加容易。
RPC採用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,然後等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達爲止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答覆信息,然後等待下一個調用信息,最後,客戶端調用進程接收答覆信息,獲得進程結果,然後調用執行繼續進行。
有多種 RPC模式和執行。最初由 Sun 公司提出。IETF ONC 憲章重新修訂了 Sun 版本,使得 ONC RPC 協議成爲 IETF 標準協議。現在使用最普遍的模式和執行是開放式軟件基礎的分佈式計算環境(DCE)。
Hadoop IPC
IPC
- 實現RPC的一種方法,具有快速、簡單的特點。 它不像Sun公司提供的標準RPC包,基於Java序列化。
- IPC無需創建網絡stubs和skeletons。
- IPC中的方法調用要求參數和返回值的數據類型必須是Java的基本類型,String和Writable接口的實現類,以及元素爲以上類型的數組。接口方法應該只拋出IOException異常。
使用模型
- 採用客戶/服務器模型
- Server:它把Java接口暴露給客戶端。指定好監聽端口和接受遠程調用的對象實例後,通過RPC.getServer()可以得到Server實例。
- Client:連接Server,調用它所暴露的方法。Client必須指定遠程機器的地址,端口和Java接口類,通過RPC.getClient()可以得到Client實例。
- Server不可以向Client發出調用,但在Hadoop中,有雙向調用的需求。 比如在DFS,NameNode和DataNode需要互相瞭解狀態。
參考博客:
http://blog.csdn.net/jpc00939/article/details/79014613
http://blog.csdn.net/wulantian/article/details/46341043