技術-Hadoop

http://guoli0813.blog.51cto.com/623863/293138/

1,什麼是hadoop

組成:HDFS,MapReduce和Hbase。
定義:一個分佈式系統基礎架構,由Apache基金會開發。用戶可以在不瞭解分佈式底層細節的情況下,開發分佈式程序。充分利用集羣的威力高速運算和存儲(維基百科)。

這裏面關鍵就是高速運算和海量存儲。

2,海量存儲

HDFS(Hadoop Distributed File System)  


上圖中展現了整個HDFS三個重要角色:NameNodeDataNodeClient

2.1 NameNode

NameNode可以看作是分佈式文件系統中的管理者,主要負責管理文件系統的命名空間、集羣配置信息和存儲塊的複製等。NameNode會將文件系統的Meta-data存儲在內存中,這些信息主要包括了文件信息、每一個文件對應的文件塊的信息和每一個文件塊在DataNode的信息等。

2.2 DataNode

DataNode是文件存儲的基本單元,它將Block存儲在本地文件系統中,保存了Block的Meta-data,同時週期性地將所有存在的Block信息發送給NameNode。

2.3 Client

Client就是需要獲取分佈式文件系統文件的應用程序。

2.4 交互關係

這裏通過三個操作來說明他們之間的交互關係。

文件寫入:
Client向NameNode發起文件寫入的請求。
NameNode根據文件大小和文件塊配置情況,返回給Client它所管理部分DataNode的信息。
Client將文件劃分爲多個Block,根據DataNode的地址信息,按順序寫入到每一個DataNode塊中。
文件讀取:
Client向NameNode發起文件讀取的請求。
NameNode返回文件存儲的DataNode的信息。
Client讀取文件信息。
文件Block複製:
NameNode發現部分文件的Block不符合最小複製數或者部分DataNode失效。
通知DataNode相互複製Block。
DataNode開始直接相互複製。

2.5 HDFS的幾個設計特點

Block的設置:

默認不配置。一個Block會有三份備份,一份放在NameNode指定的DataNode,另一份放在與指定 DataNode非同一Rack上的DataNode,最後一份放在與指定DataNode同一Rack上的DataNode上。備份無非就是爲了數據安全,考慮同一Rack的失敗情況以及不同Rack之間數據拷貝性能問題就採用這種配置方式。
心跳檢測DataNode的健康狀況,如果發現問題就採取數據備份的方式來保證數據的安全性。
數據複製(場景爲DataNode失敗、需要平衡DataNode的存儲利用率和需要平衡DataNode數據交互壓力等情況):這裏先說一下,使用HDFS的balancer命令,可以配置一個Threshold來平衡每一個DataNode磁盤利用率。例如設置了Threshold爲 10%,那麼執行balancer命令的時候,首先統計所有DataNode的磁盤利用率的均值,然後判斷如果某一個DataNode的磁盤利用率超過這個均值Threshold以上,那麼將會把這個DataNode的block轉移到磁盤利用率低的DataNode,這對於新節點的加入來說十分有用。
數據校驗:

採用CRC32作數據交驗。在文件Block寫入的時候除了寫入數據還會寫入交驗信息,在讀取的時候需要交驗後再讀入。
NameNode是單點:如果失敗的話,任務處理信息將會紀錄在本地文件系統和遠端的文件系統中。
數據管道性的寫入:當客戶端要寫入文件到DataNode上,首先客戶端讀取一個Block然後寫到第一個DataNode上,然後由第一個DataNode傳遞到備份的DataNode上,一直到所有需要寫入這個Block的NataNode都成功寫入,客戶端纔會繼續開始寫下一個 Block。
安全模式:

在分佈式文件系統啓動的時候,開始的時候會有安全模式,當分佈式文件系統處於安全模式的情況下,文件系統中的內容不允許修改也不允許刪除,直到安全模式結束。安全模式主要是爲了系統啓動的時候檢查各個DataNode上數據塊的有效性,同時根據策略必要的複製或者刪除部分數據塊。運行期通過命令也可以進入安全模式。在實踐過程中,系統啓動的時候去修改和刪除文件也會有安全模式不允許修改的出錯提示,只需要等待一會兒即可。

3,高速計算


上面的圖片是計算這個文件中每個單詞出現的次數,這個任務被分裂成三個子任務,然後映射到集羣中JobTracker指定的TaskTracker上運行子任務,每個子任務都可以在指定的TaskTracker上運行,然後把運行的結果保存在當地,然後reduce程序被調用。然後進行的是結果的整合,整合完畢,就是最終結果了。這是計算向數據靠攏的計算方式。
 
好了,我們開始說安裝,好多都在講0.17和0.18的安裝,hadoop這玩意兒因爲最近很火,所以變動很厲害,變動的速度估計和nginx有一拼,所以在安裝的時候得批判的繼承他們安裝過程。

4,環境和角色

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