Hadoop實戰讀書筆記(3)

"運行Hadoop"是什麼意思?服務器

這意味着在網絡分佈的不一樣服務器上運行一組守護進程(daemons)。這些守護進程有特殊的角色,一些僅存在於單個服務器上,一些則運行在多個服務器上。網絡

 

這些角色都有誰?架構

NameNode(名稱節點)分佈式

DataNode(數據節點)oop

Secondary NameNode(次名稱節點)spa

JobTracker(做業跟蹤節點)進程

TaskTracker(任務跟蹤節點)內存

 

分佈式存儲採用了神馬結構?資源

分佈式存儲系統被稱爲Hadoop文件系統,或簡稱爲HDFS虛擬機

Hadoop Distribution File System

Hadoop在分佈式計算與分佈式存儲中都採用了主/(master/slave)結構。

 

NameNode是什麼,幹啥的?

Hadoop守護進程中最重要的一個。

NameNode位於HDFS的主端,它指導從端的DataNode執行底層的I/O任務。

NamNode跟蹤文件如何被分割成文件塊,而這些塊又被哪些節點存儲,以及分佈式文件系統的總體運行狀態是否正常。

運行NameNode消耗大量的內存和I/O資源。所以,爲了減輕機器的負債,駐留NameNode的服務器一般不會存儲用戶數據或者執行MapReduce程序的計算任務。這意味着NameNode服務器不會同時是DataNode或者TaskTracker

不過NameNode的重要性也帶來了一個負面影響-Hadoop集羣的單點失效。對於任何其餘的守護進程,若是它們所駐留的節點發生軟件或硬件失效,Hadoop集羣極可能還會繼續平穩運行,否則你還能夠快速重啓這個節點。但這樣的方法並不適用於NameNode

 

DataNode是什麼,幹啥的?

每一個從節點會駐留一個DataNode守護進程,來執行分佈式文件系統的繁重工做-HDFS數據塊讀取或者寫入到本地文件系統的實際文件中。

當對HDFS文件進行讀寫時,文件被分割爲多個塊,由NameNode告知客戶端每一個數據塊駐留在哪一個DataNode。客戶端直接與DataNode守護進程通訊,來處理與數據塊相對應的本地文件。然後,DataNode會與其餘DataNode進行通訊,複製這些數據塊以實現冗餘。

 

NameNodeDataNode交互?

HDFS中交互,NameNode跟蹤文件的元數據。

 

NameNode持有的文件的元數據是?

描述系統中所包含的文件以及每一個文件如何被分割爲數據塊。DataNode提供數據塊的備份存儲,並持續不斷地向NameNode報告,以保持元數據爲最新狀態。

DataNode上的文件存儲是怎麼存的?

HDFS上文件是被分紅數據塊存儲的,默認大小(64MB),由NameNode指定這些文件塊存儲在哪些DataNode中,每一個文件塊默認有3個副本,確保若是一個DataNode垮掉,數據不會丟失。初始化時,每一個DataNode將當前存儲的數據塊告知NameNode,初始化完成以後,DataNode也會不斷的更新本地信息給NameNode,並接收指令。

 

Secondary NameNode是幹什麼的?

Secondary NameNode SNN是一個用於監測HDFS集羣狀態的輔助守護進程。就像NameNode同樣,每一個集羣有一個SNN,它一般也獨佔一臺服務器,該服務器不會運行其餘的DataNodeTaskTacker守護進程。SNNNameNode的不一樣在於它不接收或記錄HDFS的任何實時變化。相反,它與NameNode通訊,根據集羣所配置的時間間隔獲取HDFS元數據快照。

如前所述,NameNodeHadoop集羣的單一故障點,而SNN的快照能夠有助於減小停機的時間並下降數據丟失的風險。然而,NameNode的失效處理須要人工干預,即手動地從新配置集羣,將SNN用做主要得NameNode

 

JobTracker是什麼?

JobTracker守護進程是應用程序和Hadoop之間的紐帶。

JobTracker作了些什麼?

一旦提交代碼到集羣上,JobTracker就會肯定執行計劃,包括決定處理哪些文件、爲不一樣的任務分配節點以及監控全部任務的運行。若是任務失敗,JobTacker將自動重啓任務,但所分配的節點可能會不一樣,同時受到預約義的重試次數限制。

 

一個Hadoop集羣有幾個JobTracker的守護進程?

每一個Hadoop集羣只有一個JobTracker守護進程,它一般運行在服務器集羣的主節點上。

 

TaskTracker是什麼?

與存儲的守護進程同樣,計算的守護進程也遵循主/從架構:JobTracker做爲主節點,檢測MapReduce做業的整個執行過程,同時,TaskTracker管理各個任務在每一個從節點上的執行狀況。

每一個TaskTracker負責執行由JobTracker分配的單項任務。雖然每一個從節點上僅有一個TaskTracker,但每一個TaskTracker能夠生產多個JVM(Java虛擬機)來並行地處理許多mapreduce任務。

TaskTracker的一個職責是持續不斷地與JobTracker通訊。若是JobTracker在指定得時間內沒有收到來自TaskTracker"心跳",它會假定TaskTracker已經崩潰了,進而從新提交相應的任務到集羣中的其餘節點。

 

JobTracker是如何調用TaskTracker的?

JobTrackerTaskTracker的交互,當客戶端調用JobTracker來啓動一個數據處理做業時,JobTacker會將工做切分,並分配不一樣的mapreduce任務到集羣中的每一個TaskTracker上。

 

一個典型的Hadoop拓撲結構特色是?

在主節點上運行NameNodeJobTracker的守護進程,並使用獨立的節點運行SNN以防主節點失效。在小型集羣中,SNN也能夠駐留在某一個從節點上,而在大型集羣中,連NameNodeJobTracker都會分別駐留在兩臺機器上。每一個從節點均駐留一個DataNodeTaskTracker,從而在存儲數據的同一節點上執行任務。

相關文章
相關標籤/搜索