零基礎Hadoop入門,哪裏學起?

1 Hadoop入門教程
Hadoop是Apache開源組織的一個分佈式計算開源框架(http://hadoop.apache.org/),用java語言實現開源軟件框架,實現在大量計算機組成的集羣中對海量數據進行分佈式計算。Hadoop框架中最核心設計就是:HDFS和MapReduce,HDFS實現存儲,而MapReduce實現原理分析處理,這兩部分是hadoop的核心。數據在Hadoop中處理的流程可以簡單的按照下圖來理解:數據通過Haddop的集羣處理後得到結果,它是一個高性能處理海量數據集的工具 。分享之前我還是要推薦下我自己創建的大數據學習交流Qun710219868 進Qun聊邀請碼填寫 南風(必填)我就知道是你了

1.2 HDFS文件系統
HDFS(Hadoop Distributed File System,Hadoop分佈式文件系統),它是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,適合那些有着超大數據集(largedata set)的應用程序。

HDFS的設計特點:

1、大數據文件,非常適合上T級別的大文件或者一堆大數據文件的存儲。

2、文件分塊存儲,HDFS會將一個完整的大文件平均分塊存儲到不同計算器上,它的意義在於讀取文件時可以同時從多個主機取不同區塊的文件,多主機讀取比單主機讀取效率要高得多。

3、流式數據訪問,一次寫入多次讀寫,這種模式跟傳統文件不同,它不支持動態改變文件內容,而是要求讓文件一次寫入就不做變化,要變化也只能在文件末添加內容。

4、廉價硬件,HDFS可以應用在普通PC機上,這種機制能夠讓給一些公司用幾十臺廉價的計算機就可以撐起一個大數據集羣。

5、硬件故障,HDFS認爲所有計算機都可能會出問題,爲了防止某個主機失效讀取不到該主機的塊文件,它將同一個文件塊副本分配到其它某幾個主機上,如果其中一臺主機失效,可以迅速找另一塊副本取文件。

HDFS的master/slave構架:

一個HDFS集羣是有一個Namenode和一定數目的Datanode組成。Namenode是一箇中心服務器,負責管理文件系統的namespace和客戶端對文件的訪問。Datanode在集羣中一般是一個節點一個,負責管理節點上它們附帶的存儲。在內部,一個文件其實分成一個或多個block,這些block存儲在Datanode集合裏。Namenode執行文件系統的namespace操作,例如打開、關閉、重命名文件和目錄,同時決定block到具體Datanode節點的映射。Datanode在Namenode的指揮下進行block的創建、刪除和複製。Namenode和Datanode都是設計成可以跑在普通的廉價的運行linux的機器上。

HDFS的關鍵元素:

1、Block:將一個文件進行分塊,通常是64M。

2、NameNode:保存整個文件系統的目錄信息、文件信息及分塊信息,這是由唯一一臺主機專門保存,當然這臺主機如果出錯,NameNode就失效了。在Hadoop2.*開始支持activity-standy模式----如果主NameNode失效,啓動備用主機運行NameNode。

3、DataNode:分佈在廉價的計算機上,用於存儲Block塊文件。

HDFS架構圖

4、Namenode全權管理數據塊的複製,它週期性地從集羣中的每個Datanode接收心跳信號和塊狀態報告(Blockreport)。接收到心跳信號意味着該Datanode節點工作正常。塊狀態報告包含了一個該Datanode上所有數據塊的列表。

5、參考資料

HDFS Java API:http://hadoop.apache.org/core/docs/current/api/

HDFS源代碼:http://hadoop.apache.org/core/version_control.html

1.3 MapReduce文件系統
MapReduce是一種編程模型,用於大規模數據集(大於1TB)的並行運算。MapReduce將分成兩個部分"Map(映射)"和"Reduce(歸約)"。

當你向MapReduce框架提交一個計算作業時,它會首先把計算作業拆分成若干個Map任務,然後分配到不同的節點上去執行,每一個Map任務處理輸入數據中的一部分,當Map任務完成後,它會生成一些中間文件,這些中間文件將會作爲Reduce任務的輸入數據。Reduce任務的主要目標就是把前面若干個Map的輸出彙總到一起並輸出。

MapReduce流程圖:
零基礎Hadoop入門,哪裏學起?

MapReduce流程圖

步驟1:首先對輸入數據源進行切片

步驟2:master調度worker執行map任務

步驟3:worker讀取輸入源片段

步驟4:worker執行map任務,將任務輸出保存在本地

步驟5:master調度worker執行reduce任務,reduce worker讀取map任務的輸出文件

步驟6:執行reduce任務,將任務輸出保存到HDFS

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章