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

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

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

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