1. 程式人生 > >hadoop是什麼?新手自學hadoop教程(一)

hadoop是什麼?新手自學hadoop教程(一)

百科釋義:Hadoop是一個由Apache基金會所開發的分散式系統基礎架構。

Hadoop是一個專為離線和大規模資料分析而設計的,並不適合那種對幾個記錄隨機讀寫的線上事務處理模式。

Hadoop=HDFS(檔案系統,資料儲存技術相關)+ Mapreduce(資料處理),Hadoop的資料來源可以是任何形式,在處理半結構化和非結構化資料上與關係型資料庫相比有更好的效能,具有更靈活的處理能力,不管任何資料形式最終會轉化為key/value,key/value是基本資料單元。

用函式式變成Mapreduce代替SQL,SQL是查詢語句,而Mapreduce則是使用指令碼和程式碼,而對於適用於關係型資料庫,習慣SQL的Hadoop有開源工具hive代替。

hadoop使用java編寫,版本較為混亂,初學者可從1.2.1開始學習

1.成百上千臺伺服器組成叢集,需要時刻檢測伺服器是否故障

2.用流讀取資料更加高效快速

3.儲存節點具有運算功能,省略了伺服器之間來回傳資料的網路頻寬限制

4.一次寫入,多次訪問,不修改資料

5.多平臺

namenode:master,負責總體排程,處理協調請求等

(一個叢集只能有一個namenode,但是可以多個叢集組成一個更大的叢集,這時就有多個namenode,這時的namenode有兩種狀態,一種叫active並且一個大叢集只能有一個namenode處於該狀態,一種為standby)

namenode兩大功能:接受客戶端讀寫服務,存放元資料(DataNode儲存的位置等基本資訊,fsimage和edits檔案)

fsimage是namenode格式化時產生的,edits是使用者操作增刪改查的時候生成的日誌

datanode:slave,儲存節點,會備份,一般本地2分,其他伺服器一份

機架:多個DataNod節點組成,master通過機架感知技術得知所需資料的位置

資料塊:儲存單元,一般64M(hadoop2中是128M)

時刻保持心跳通訊,保證每個資料都備份於3個節點上

5的read為第一個資料塊讀完後,讀下一個資料塊,如果在讀取過程中某一個數據塊出問題,則會記錄下來並且找其他的備份,並且以後不再讀取錯誤資料塊

map負責分批運算,如果要統計1TB資料中my的出線次數,則可以啟用100個map,每個map統計0.01TB資料,最終由reduce彙總

作業(Job):執行一個MapReduce所需要用到的所有jar元件

任務(Task):mapTask和ReduceTask

Key相同的結果進行reduce統計合併

作業提交一般提交jar包和配置檔案

排程一般來說預設採取FIFO排程,即先考慮優先順序,然後先進先出

TaskTracker會不斷想JobTracker傳達任務資訊,如果空閒會主動申請作業

一般的生產環境都是完全分散式模式。