Hadoop 簡介
Hadoop是Apache旗下的一款開源分布式計算平臺,它通過以分布式文件系統(tǒng)HDFS和MapReduce為核心,為用戶提供了系統(tǒng)底層細(xì)節(jié)透明的分布式基礎(chǔ)架構(gòu)。
Hadoop 結(jié)構(gòu)
- HDFS:它是一個分布式文件系統(tǒng),以高容錯性為設(shè)計原則,所以可以設(shè)計部署在低廉的硬件上。
HDFS設(shè)計目標(biāo):
1.檢測和快速恢復(fù)硬件故障。
2.流式的數(shù)據(jù)訪問。
3.簡化一致性模型。
4.通信協(xié)議。
MapReduce:它是一種編程模型,用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算。
Core/Common:為其他子項(xiàng)目提供支持,主要包括FileSystem、RPC和串行化庫。
Avro:用于數(shù)據(jù)序列化系統(tǒng)。
Avro的支持:
1.提供豐富的數(shù)據(jù)結(jié)構(gòu)類型。
2.快速可壓縮的二進(jìn)制數(shù)據(jù)格式。
3.存儲持久性數(shù)據(jù)的文件集。
4.遠(yuǎn)程調(diào)用RPC的功能和簡單的動態(tài)語言集成功能。
Chukwa:是開源的數(shù)據(jù)收集系統(tǒng),用于監(jiān)控和分析大型分布式系統(tǒng)的數(shù)據(jù)。
Hive:建立在Hadoop基礎(chǔ)上的數(shù)據(jù)倉庫,提供了一些用于數(shù)據(jù)整理、特殊查詢和分析存儲在Hadoop文件中的數(shù)據(jù)集的工具。
HBase:是一個分布式的、面向列的開源數(shù)據(jù)庫。
Pig:是一個對大型數(shù)據(jù)集進(jìn)行分析和評估的平臺。
Hadoop核心之HDFS
HDFS采用了主從結(jié)構(gòu)模型(Master/Slave),一個HDFS集群是由一個NameNode和若干個DataNode組成的。其中NameNode作為主服務(wù)器,管理文件系統(tǒng)的命名空間和客戶端對文件的訪問操作;集群中的DataNode管理存儲的數(shù)據(jù),由NameNode統(tǒng)一調(diào)度。

- 文件寫入
1.Client向NameNode發(fā)起文件寫入請求。
2.NameNode根據(jù)文件大小和文件塊的配置情況,返回給Client它所管理的DataNode的信息。
3.Client將文件劃分為多個Block,根據(jù)DataNode的地址信息,按順序?qū)⑵鋵懭朊恳粋€DataNode中。
- 文件讀取
1.Client向NameNode發(fā)起讀取文件的請求。
2.NameNode返回文件存儲的DataNode信息。
3.Client讀取文件信息。
- 文件塊復(fù)制
1.NameNode發(fā)現(xiàn)部分文件的Block不符合最小復(fù)制數(shù)這一要求或部分DataNode失效。
2.通知DataNode相互復(fù)制Block。
3.DataNode開始直接相互復(fù)制Block。
Hadoop核心之MapReduce
MapReduce是一種并行編程模式,由一個單獨(dú)運(yùn)行在主節(jié)點(diǎn)上的JobTracker和運(yùn)行在每個集群從節(jié)點(diǎn)上的TaskTracker共同組成的。主節(jié)點(diǎn)負(fù)責(zé)調(diào)度構(gòu)成一個作業(yè)的所有任務(wù),這些任務(wù)分布在不同的從節(jié)點(diǎn)上。主節(jié)點(diǎn)監(jiān)控他們的執(zhí)行情況,并且重新執(zhí)行之前失敗的任務(wù);從節(jié)點(diǎn)僅負(fù)責(zé)由主節(jié)點(diǎn)指派的任務(wù)。當(dāng)一個Job被提交時,JobTracker接收到提交作業(yè)和配置信息之后,就會將配置信息等分發(fā)給從節(jié)點(diǎn),同時調(diào)度任務(wù)并監(jiān)控TaskTracker的執(zhí)行。

基本原理
1. 數(shù)據(jù)分布存儲 (HDFS)
2. 分布式并行計算 (JobTracker & TaskTracker)
3. 本地計算
4. 任務(wù)粒度 (默認(rèn) block 64MB)
5. 數(shù)據(jù)分割 (Partition)
6. 數(shù)據(jù)合并 (Combine)
7. Reduce
8. 任務(wù)管道