面試系列:深入理解Hadoop架構體系
Hadoop組件簡介
官方文檔組織的非常清晰,主要由以下四個組件組成:HDFS、map-reduce、yarn、hadoop-common

hdfs架構
HDFS
分布式文件存儲系統(tǒng),主要特點是:
- 可以運行在普通低成本硬件之上
- 并且具備高容錯性(硬件容錯)
- 適合高吞吐量的大數據存儲,但并不強調低延遲
- 適合一次寫,多次讀的場景,不支持隨機讀寫;
map-reduce
map-reduce是一個計算框架,絕大部分的數據處理都可以轉化為map、reduce組合,然后利用map-reduce框架進行計算、處理;
yarn
資源管理器,核心的思想時將資源的調度管理與資源監(jiān)控分割為兩個進程,其中一個是ResourceManager,另一個是NodeManager,前者負責資源的分配、后者負責資源監(jiān)控;

common
hdfs、map-reduce所需要的公共庫;
面試題
- HDFS的進程構成及其作用;
- nameNode進程:負責對外展示文件的層級結構、管理客戶端對文件的訪問(如:打開、關閉、重命名等)、決定文件block與dataNode的對應關系;
- secondNameNode進程:從名字來看,應該是nameNode的back up,然而并不是,其主要作用是協助nameNode管理editLog;
- dataNode:主要負責數據存儲以及客戶端的讀寫請求以及block的創(chuàng)建、刪除等;
詳細解釋map過程的細節(jié):
- map過程主要是實現key-value集合到key-value集合的映射,可以實一對一、一對多、多對多映射;
- 詳細過程是:map -> group -> sorted -> partitioned
- group:相同的key放到一起;
- sorted:按照key進行排序
- partition:對key進行分區(qū),最終分區(qū)數量一般等于task數量;
詳細解釋reduce過程細節(jié):
- 首先是shuffle,即從map端拉取數據到reducer端;
- 之后是group,也就是相同的key可能來自于不同的map,所以需要group
- 之后是sort過程(再map階段排序的基礎之上,進行歸并排序即可)
- 最后是second sort(用戶自定義,如果沒有自定義則不執(zhí)行)
- 最后是reduce過程。

setCombinerClass的作用:
- 在map端先進行一部分reduce工作,主要優(yōu)點是減少shuffle成本;但也有一定的局限性,僅僅適用于reduce的輸入和輸出數據類型相同時;
簡單介紹Federation架構:
- Federation架構通過多個獨立的NameNode實現集群的橫向擴展,主要解決了HDFS的吞吐量及承載量受限于單個nameNode,并且無法根據namespace做隔離的弊端。
在存儲層,各個nameNode共用統(tǒng)一的DataNode