天天看點

Hadoop之旅 — 1.Hadoop簡述(初學者)

@初識Hadoop

Hadoop

分布式計算架構,可以在大量低成本硬體裝置組成的叢集上運作應用程式。

@起源與發展(​​http://baike.baidu.com/item/Hadoop​​)

Hadoop之旅 — 1.Hadoop簡述(初學者)
Hadoop之旅 — 1.Hadoop簡述(初學者)

名字起源

Hadoop這個名字不是一個縮寫,而是一個虛構的名字。該項目的建立者,Doug Cutting解釋Hadoop

的得名 :“這個名字是我孩子給一個棕黃色的大象玩具命名的。我的命名标準就是簡短,容易發音和

拼寫,沒有太多的意義,并且不會被用于别處。小孩子恰恰是這方面的高手。”

@什麼是Hadoop

第一印象:

1)資料量 可以是PB級别以上

2)上千個節點上的分布式處理方式

3)可靠性:啟動和維護多個資料副本 用于確定失敗的節點重新分布式處理資料

4)并行的方式處理,是以處理速度很快

5)可伸縮性->用于不同的資料級别

6)依賴于社群服務,費用低

7)開發語言:java(主要)c++(也可以)

8)平台:Linux、windows(cygwin)

進一步了解:

設計目标

1)故障檢測與快速恢複

2)大 資料吞吐量,但是反應速度相對慢

3)移動計算:(計算過程 在 資料存儲的位置,個人了解)

4)資料一次寫入,多次讀寫

5)超大規模的資料集

6)可移植性強

模型:

Master/Slave

資料的複制與存放

# 統一機架

# 副本就近選擇

# 安全模式 (檢測資料塊[包括副本]的有效性,并根據政策需要删除/複制部分資料塊)

通信協定

# HDFS通信協定

#  TCP/IP 網絡協定

Hadoop之旅 — 1.Hadoop簡述(初學者)

健壯性:

1)磁盤資料錯識

NameNode 通過向 DateNode發送心跳信号判斷該DateNode是否發生宕(讀音:dang [捂臉])機,

若當機,NameNode将啟動複制操作。

2)叢集均衡

3)資料完整性

HDFS寫入的時候計算出校驗和,然後每次讀的時候再計算校驗和,

DateNode在存儲收到的資料前會校驗資料的校驗和。

通路:

FS Shell(​​https://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html​​)

浏覽器

存儲空間回收:

#删除和恢複功能

#有效減少副本數量

@Hadoop的組成(核心架構)

Hadoop叢集搭建官方文檔(​​https://hadoop.apache.org/docs/r1.0.4/cn/cluster_setup.html​​)

*  Hadoop叢集中的兩大角色

通常,叢集裡的一台機器被指定為 NameNode,另一台不同的機器被指定為JobTracker。這些機器是masters。

餘下的機器即作為DataNode也作為TaskTracker。這些機器是slaves。

Hadoop之旅 — 1.Hadoop簡述(初學者)

NameNode:

# HDFS的守護程式 

# 紀錄檔案是如何分割成資料塊的,還有這些資料塊被存儲到哪些節點上 

# 對記憶體和I/O進行集中管理 

# 是個單點,發生故障将使叢集崩潰

SecondaryNameNode:

#監控HDFS狀态的輔助背景程式

#與NameNode進行通訊,定期儲存HDFS中繼資料快照

#當NameNode故障可以作為備用NameNode使用 

#每個叢集都有一個

JobTracker:

#用于處理作業(使用者送出代碼)的背景程式

#決定有哪些檔案參與處理,然後切割task并配置設定節點 

#監控task,重新開機失敗的task(于不同的節點) 

#每個叢集隻有唯一一個JobTracker,位于Master節點 

Hadoop之旅 — 1.Hadoop簡述(初學者)

DateNode:

# 每個 從伺服器

# 根據用戶端或者是NameNode的排程存儲和檢索資料,并且定期向NameNode發送他們所存儲的塊(block)的清單。

TaskTracker:

#每個節點隻有一個TaskTracker,但一個TaskTracker可以啟動多個JVM,用于并行執行Map或Reduce任務 

# 位于Slave節點上,與DateNode結合(代碼與資料同位置) 

#管理各自節點上的Task(由JobtTracker配置設定) 

# 與JobTracker互動 

1)HDFS(​​Hadoop分布式檔案存儲系統​​ )

資料塊(block):大檔案會被分割成多個塊進行存儲,塊(block)大小預設為64MB。

每一塊會在多個DateNode上存儲多份副本,預設是3份。

NameNode:負責管理檔案目錄、檔案和塊(block)的對應關系以及塊和DateNode的對應關系。

DateNode:負責存儲,大部分容錯機制都是在DateNode上實作的。

Hadoop之旅 — 1.Hadoop簡述(初學者)

2)MapReduce(​​分布式計算架構​​)

一個Map/Reduce 作業(job) 通常會把輸入的資料集切分為若幹獨立的資料塊,

由 Map任務(task)以完全并行的方式處理它們。架構會對Map的輸出先進行排序,

然後把結果輸入給Reduce任務。

通常作業的輸入和輸出都會被存儲在檔案系統(HDFS)中。整個架構負責任務

的排程和監控,以及重新執行已經失敗的任務。

Hadoop之旅 — 1.Hadoop簡述(初學者)

在運作一個MapReduce計算任務時候,任務過程被分為兩個階段:map階段和reduce階段,

每個階段都是用鍵值對(key/value)作為輸入(input)和輸出(output)。而程式員要做

的就是定義好這兩個階段的函數:map函數和reduce函數。

3)子項目家族

Hadoop之旅 — 1.Hadoop簡述(初學者)

繼續閱讀