面試題總結–Hadoop
文章目錄
- 面試題總結--Hadoop
-
- 1. Hadoop常用端口号
- 2. HDFS讀流程和寫流程
- 3. MapReduce的程式的運作流程
1. Hadoop常用端口号
元件 | 節點 | 預設端口 | 配置 | 用途說明 |
---|---|---|---|---|
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 |
YARN | ResourceManager | 8032 | yarn.resourcemanager.address | RM的applications |
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 |
YARN | NodeManager | 8042 | yarn.nodemanager.webapp.address | http服務端口 |
YARN | NodeManager | 8041 | yarn.nodemanager.address | NM中container |
YARN | JobHistory Server | 10020 | mapreduce.jobhistory.address | IPC |
YARN | JobHistory Server | 19888 | mapreduce.jobhistory.webapp.address | http服務端口 |
2. HDFS讀流程和寫流程
HDFS的讀資料流程:
用戶端将要讀取的檔案路徑發送給namenode,namonode擷取檔案的元資訊(主要是block的存放位置資訊)傳回給用戶端,用戶端根據傳回的資訊找到相應datanode逐個擷取檔案的block并在用戶端本地進行資料追加合并進而獲得整個檔案。
HDFS的寫資料流程:
用戶端要向HDFS寫資料,首先要跟namenode通信以确認可以寫檔案并獲得接受檔案block的datanode,然後,用戶端按順序将檔案逐個block傳遞給相應datanode,并由接收到block的datanode負責向其他datanode複制block的副本
- client發寫資料請求
-
namenode響應請求,然後做一系列校驗,如果能上傳該資料,則傳回該檔案的所有切塊應該被存在哪些datanode上的datanodes清單
blk-001:hadoop02 hadoop03
blk-002:hadoop03 hadoop04
- client拿到datanode清單之後,開始傳資料
- 首先傳第一塊blk-001,datanode清單就是hadoop02,hadoop03,client就把blk-001傳到hadoop02和hadoop03上
- …用傳帶一個資料塊同樣的方式傳其他的資料
- 當所有的資料塊都傳完之後,client會給namenode傳回一個狀态資訊,表示資料已全部寫入成功,或者是失敗的資訊
- namenode接受到client傳回的狀态資訊來判斷當次寫入資料的請求是否成功,如果成功,就需要更新中繼資料資訊。