Hadoop是什么
- Hadoop是一個開源的大數(shù)據(jù)框架
- Hadoop是一個分布式計算的解決方案
- Hadoop = HDFS(分布式文件系統(tǒng))+ MapReduce(分布式計算)
Hadoop核心
- HDFS分布式文件系統(tǒng):存儲是大數(shù)據(jù)技術(shù)的基礎(chǔ)
- MapReduce編程模型:分布式計算是大數(shù)據(jù)應(yīng)用的解決方案
Hadoop基礎(chǔ)架構(gòu)
HDFS概念
數(shù)據(jù)塊
NameNode
DataNode
成都創(chuàng)新互聯(lián),是成都地區(qū)的互聯(lián)網(wǎng)解決方案提供商,用心服務(wù)為企業(yè)提供網(wǎng)站建設(shè)、成都app軟件開發(fā)、微信小程序、系統(tǒng)按需開發(fā)網(wǎng)站和微信代運營服務(wù)。經(jīng)過數(shù)10年的沉淀與積累,沉淀的是技術(shù)和服務(wù),讓客戶少走彎路,踏實做事,誠實做人,用情服務(wù),致力做一個負(fù)責(zé)任、受尊敬的企業(yè)。對客戶負(fù)責(zé),就是對自己負(fù)責(zé),對企業(yè)負(fù)責(zé)。
數(shù)據(jù)塊:抽象塊而非整個文件作為存儲單;默認(rèn)大小64MB一般設(shè)置為128M,備份X3。
NameNode:管理文件系統(tǒng)的命名空間,存放文件元數(shù)據(jù);維護(hù)著文件系統(tǒng)的所有文件和目錄,文件與數(shù)據(jù)塊的映射;記錄每個文件中各個塊所在數(shù)據(jù)節(jié)點的信息。
DataNode:存儲并檢索數(shù)據(jù)塊;向NameNode更新所存儲塊的列表。
HDFS優(yōu)點
- 適合大文件存儲,支持TB、PB級的數(shù)據(jù)存儲,并有副本策略。
- 可以構(gòu)建在廉價的機(jī)器上,并有一定的容錯和恢復(fù)機(jī)制。
- 支持流式數(shù)據(jù)訪問,一次寫入多次讀取最高效。
HDFS缺點
- 不適合大量小文件存儲
- 不適合并發(fā)寫入,不支持文件隨機(jī)修改。
- 不支持隨機(jī)讀取等低延時的訪問方式。
Hadoop各個功能模塊的理解
1、HDFS模塊
HDFS負(fù)責(zé)大數(shù)據(jù)的存儲,通過將大文件分塊后進(jìn)行分布式存儲方式,突破了服務(wù)器硬盤大小的限制,解決了單臺機(jī)器無法存儲大文件的問題,HDFS是個相對獨立的模塊,可以為YARN提供服務(wù),也可以為HBase等其他模塊提供服務(wù)。
2、YARN模塊
YARN是一個通用的資源協(xié)同和任務(wù)調(diào)度框架,是為了解決Hadoop1.x中MapReduce里NameNode負(fù)載太大和其他問題而創(chuàng)建的一個框架。
YARN是個通用框架,不止可以運行MapReduce,還可以運行Spark、Storm等其他計算框架。
3、MapReduce模塊
MapReduce是一個計算框架,它給出了一種數(shù)據(jù)處理的方式,即通過Map階段、Reduce階段來分布式地流式處理數(shù)據(jù)。它只適用于大數(shù)據(jù)的離線處理,對實時性要求很高的應(yīng)用不適用。
延伸思考
- 如何通過Hadoop存儲小文件?
a、在客戶端將小文件合并為大文件。
Hadoop會把每一個小文件傳遞給map()函數(shù),而Hadoop在調(diào)用map()函數(shù)時會創(chuàng)建一個映射器,這樣就會創(chuàng)建了大量的映射器,應(yīng)用的運行效率并不高。如果使用和存儲小文件,通常就會創(chuàng)很多的映射器。解決小文件問題的主要目的就是通過合并小文件為更大的文件來加快Hadoop的程序的執(zhí)行,解決小文件問題可以減少map()函數(shù)的執(zhí)行次數(shù),相應(yīng)地提高h(yuǎn)adoop作業(yè)的整體性能。
b、使用Hadoop的CombineFileInputFormat實現(xiàn)小文件的合并。
使用Hadoop API(抽象類CombineFileInputFormat)來解決小文件的問題。抽象類CombineFileInputFormat的基本思想是通過使用一個定制的InputFormat允許將小文件合并到Hadoop的分片(split)或塊(chunk)中。 - 當(dāng)有節(jié)點故障的時候,集群是如何繼續(xù)提供服務(wù)的,如何讀、寫?
- 哪些是影響MapReduce性能的因素?
a、硬件(或者資源)因素,如CPU、磁盤I/O、網(wǎng)絡(luò)帶寬和內(nèi)存大小。
b、底層存儲系統(tǒng)。
c、輸入數(shù)據(jù)、分揀(shuffle)數(shù)據(jù)以及輸出數(shù)據(jù)的大小,這與作業(yè)的運行時間緊密相關(guān)。
d、作業(yè)算法(或者程序),如map、reduce、partition、combine和compress。有些算法很難在MapReduce中概念化,或者在MapReduce中效率可能會降低。
HDFS寫流程
1、客戶端想NameNode發(fā)起寫數(shù)據(jù)請求
2、分塊寫入DataNode節(jié)點,DataNode自動完成副本備份
3、DataNode向NameNode匯報存儲完成,NameNode通知客戶端
HDFS讀流程
1、客戶端向NameNode發(fā)起讀數(shù)據(jù)請求
2、NameNode找出距離最近的DataNode節(jié)點信息
3、客戶端從DataNode分塊下載文件
MapReduce
MapReduce是一種編程模型,是一種編程方法,是抽象的理論。
- YARN概念(通用的資源協(xié)同和任務(wù)調(diào)度框架)
- ResourceManager
分配和調(diào)度資源、啟動并監(jiān)控ApplicationMaster、監(jiān)控NodeManager - ApplicationMaster
為MR類型的程序申請資源,并分配給內(nèi)部任務(wù)、負(fù)責(zé)數(shù)據(jù)的切分、監(jiān)控任務(wù)的執(zhí)行及容錯 - NodeManager
管理單個節(jié)點的資源、處理來自ResourceManager的命令、處理來自ApplicationMaster的命令
MapReduce四個階段
- Split階段
- Map階段(需要編碼)
- Shuffle階段
- Reduce階段(需要編碼)
MapReduce編程模型
- 輸入一個大文件,通過split之后將其分為多個分片
- 每個文件分片由單獨的機(jī)器去處理,這就是Map方法
- 將各個機(jī)器計算的結(jié)果進(jìn)行匯總并得到最終的結(jié)果,這就是Reduce方法。
新聞標(biāo)題:Hadoop相關(guān)概念
分享網(wǎng)址:
http://weahome.cn/article/igsepo.html