目錄
- Hadoop
- HDFS
- HDFS元件
- NameNode
- DataNode
- SecondaryNameNode
- Client
- HDFS檔案的上傳與下載下傳
- NameNode與SecondaryNameNode的機制
- Yarn元件
- MapReduce架構
- HDFS元件
- HDFS
Hadoop
分布式計算平台,同時也是一個生态圈
- hadoop 1.X HDFS+MapReducer+Common
- hadoop 2.X HDFS+MAP+Reducer+Common
- hadoop 3.X java7->java8,引入糾删碼,重寫shell腳本,支援超過兩個NameNode,預設端口改變
HDFS
分布式檔案存儲系統(可靠,高吞吐),利用目錄樹定位檔案
- 可靠性-維護多個副本
- 擴充性-随時增減伺服器
- 高效性-task并行
- 容錯性-失敗的任務重新配置設定執行
- 适合一次寫入多次讀出
- 支援資料的追加,不支援随機修改
HDFS元件
NameNode
- NameNode 存儲檔案的中繼資料,位置資訊
- 配置副本政策
- 管理資料塊映射資訊
- 處理讀寫請求
DataNode
- DataNode 存儲檔案的真實資料,并做資料校驗
- 一個資料塊在DN中會存儲資料本身,資料長度,檢驗和以及時間戳。同時DN啟動後會向NN進行注冊,後續每隔一小時向NN彙報資料塊資訊,同時每三秒進行一次NN心跳并帶回NN指令,如果10分鐘沒有心跳信号,NN會認為該節點當機。
- 在資料節點退役過程中推薦使用黑名單進行退役,辭職後會進行HDFS資料轉移。
SecondaryNameNode
- SecondaryNameNode 對NameNode做備份,但不能頂替NN提供服務
- 定期合并鏡像檔案,編輯日志,推送給NN
- 可以恢複NN的資料(可能不完整)
Client
- Client切分上傳的檔案
- 告知NN檔案的位置資訊,互動DN的讀寫資料
- 通過指令管理HDFS
HDFS檔案的上傳與下載下傳
- 上傳:用戶端通過HDFS對象向NameNode送出上傳請求,NN确定檔案狀态以及父目錄是否存在,傳回許可。随後使用者上傳檔案的第一個資料塊,請求NN傳回DataNode,NN根據請求傳回三個DN節點,使用者通過輸出流請求在一個DN上上傳資料(上傳的DN根據網絡拓撲計算決定),然後該DN會調用其他的DN節點将這個通信信道建立完成。三個節點逐級應答用戶端,用戶端向第一個DN節點上傳一個資料塊,以packet為機關,DN收到後先進行落盤處理,同時将該packet傳送給第二個DN節點然後再傳給第三個DN節點。當第一個塊傳輸完成後,第二個資料塊重複上面的動作,傳遞完成後關閉傳輸流,傳輸過程中,第一個DN節點會将packet放入一個應答隊列,待所有節點相應完成後表示上傳成功。
- 下載下傳: 用戶端通路HDFS對象,向NameNode請求下載下傳某檔案,NameNode傳回檔案的中繼資料資訊,以及資料塊坐在的位置。用戶端得到資訊後擷取檔案輸入流,根據就近原則随機原則随機挑選一個DN節點擷取packet,用戶端收到後現在本地緩存,然後寫入目标檔案。
NameNode與SecondaryNameNode的機制
- NN在啟動後會将fsimage和edits加載到記憶體裡,格式化後則是建立。用戶端對HDFS進行操作後,NN先将操作記錄到日志中,然後再記憶體中進行操作,2NN向NN詢問是否CheckPoint,帶回指令。如果CheckPoint,NN會生成一個滾動的日志檔案,一個磁盤中編輯日志的複制檔案,将磁盤中的鏡像檔案和複制好的編輯日志檔案複制到2NN中,加載到2NN記憶體中合并成一個合并檔案,傳回到NN中,NN用重命名的方式覆寫原檔案。
- fsimage是HDFS檔案系統中中繼資料的一個永久性檢查點
- edits存放HDFS檔案系統中所有的更新操作
- CheckPoint觸發點為1小時或者edits執行了一百萬次操作。2NN在一分鐘内确認三次NN的操作次數
Yarn元件
- ResourceManager 處理用戶端請求,監控NodeManager,啟動ApplicationMaster,排程資源
- NodeManager 管理單個節點上的資源,處理ResourceManager的指令,處理ApplicationMaster的指令
- Contianer 封裝單個節點上的資源
- ApplicationMaster 負責資料切分,為應用申請資源,監控任務
MapReduce架構⭐
- 常用的資料序列化類型 String-》Text | Map-》MapWritable | Array-》ArrayWritable
- 一個運算程式一般是一個map階段和一個reduce階段,MapTask并發執行,互不相幹。ReduceTask并發執行,依賴MapTask的資料結果。
- 關于程序,mrAppMaster負責過程排程和狀态協調,MapTask負責map階段的資料處理。ReduceTask負責reduce階段的資料處理。