Hadoop教程:Hadoop集群和網(wǎng)絡(luò)的基本原理(一)

Hadoop里的服務(wù)器角色
Hadoop主要的任務(wù)部署分為3個部分,分別是:Client機器,主節(jié)點和從節(jié)點。主節(jié)點主要負(fù)責(zé)Hadoop兩個關(guān)鍵功能模塊HDFS、Map Reduce的監(jiān)督。當(dāng)Job Tracker使用Map Reduce進(jìn)行監(jiān)控和調(diào)度數(shù)據(jù)的并行處理時,名稱節(jié)點則負(fù)責(zé)HDFS監(jiān)視和調(diào)度。從節(jié)點負(fù)責(zé)了機器運行的絕大部分,擔(dān)當(dāng)所有數(shù)據(jù)儲存和指令計算的苦差。每個從節(jié)點既扮演者數(shù)據(jù)節(jié)點的角色又沖當(dāng)與他們主節(jié)點通信的守護(hù)進(jìn)程。守護(hù)進(jìn)程隸屬于Job Tracker,數(shù)據(jù)節(jié)點在歸屬于名稱節(jié)點。
Client機器集合了Hadoop上所有的集群設(shè)置,但既不包括主節(jié)點也不包括從節(jié)點。取而代之的是客戶端機器的作用是把數(shù)據(jù)加載到集群中,遞交給 Map Reduce數(shù)據(jù)處理工作的描述,并在工作結(jié)束后取回或者查看結(jié)果。在小的集群中(大約40個節(jié)點)可能會面對單物理設(shè)備處理多任務(wù),比如同時Job Tracker和名稱節(jié)點。作為大集群的中間件,一般情況下都是用獨立的服務(wù)器去處理單個任務(wù)。
在真正的產(chǎn)品集群中是沒有虛擬服務(wù)器和管理層的存在的,這樣就沒有了多余的性能損耗。Hadoop在Linux系統(tǒng)上運行的最好,直接操作底層硬件設(shè)施。這就說明Hadoop實際上是直接在虛擬機上工作。這樣在花費、易學(xué)性和速度上有著無與倫比的優(yōu)勢。

Hadoop集群
上面是一個典型Hadoop集群的構(gòu)造。一系列機架通過大量的機架轉(zhuǎn)換與機架式服務(wù)器(不是刀片服務(wù)器)連接起來,通常會用1GB或者2GB的寬帶來支撐連接。10GB的帶寬雖然不常見,但是卻能顯著的提高CPU核心和磁盤驅(qū)動器的密集性。上一層的機架轉(zhuǎn)換會以相同的帶寬同時連接著許多機架,形成集群。大量擁有自身磁盤儲存器、CPU及DRAM的服務(wù)器將成為從節(jié)點。同樣有些機器將成為主節(jié)點,這些擁有少量磁盤儲存器的機器卻有著更快的CPU及更大的 DRAM。
下面我們來看一下應(yīng)用程序是怎樣運作的吧:

Hadoop的工作流程
在計算機行業(yè)競爭如此激烈的情況下,究竟什么是Hadoop的生存之道?它又切實的解決了什么問題?簡而言之,商業(yè)及政府都存在大量的數(shù)據(jù)需要被快速的分析和處理。把這些大塊的數(shù)據(jù)切開,然后分給大量的計算機,讓計算機并行的處理這些數(shù)據(jù) — 這就是Hadoop能做的。
下面這個簡單的例子里,我們將有一個龐大的數(shù)據(jù)文件(給客服部門的電子郵件)。我想快速的截取下“Refund”在郵件中出現(xiàn)的次數(shù)。這是個簡單的字?jǐn)?shù)統(tǒng)計練習(xí)。Client將把數(shù)據(jù)加載到集群中(File.txt),提交數(shù)據(jù)分析工作的描述(word cout),集群將會把結(jié)果儲存到一個新的文件中(Results.txt),然后Client就會讀結(jié)果文檔。

向HDFS里寫入File
Hadoop集群在沒有注入數(shù)據(jù)之前是不起作用的,所以我們先從加載龐大的File.txt到集群中開始。首要的目標(biāo)當(dāng)然是數(shù)據(jù)快速的并行處理。為了實現(xiàn)這個目標(biāo),我們需要竟可能多的機器同時工作。最后,Client將把數(shù)據(jù)分成更小的模塊,然后分到不同的機器上貫穿整個集群。模塊分的越小,做數(shù)據(jù)并行處理的機器就越多。同時這些機器機器還可能出故障,所以為了避免數(shù)據(jù)丟失就需要單個數(shù)據(jù)同時在不同的機器上處理。所以每塊數(shù)據(jù)都會在集群上被重復(fù)的加載。 Hadoop的默認(rèn)設(shè)置是每塊數(shù)據(jù)重復(fù)加載3次。這個可以通過hdfs-site.xml文件中的dfs.replication參數(shù)來設(shè)置。
Client把File.txt文件分成3塊。Cient會和名稱節(jié)點達(dá)成協(xié)議(通常是TCP 9000協(xié)議)然后得到將要拷貝數(shù)據(jù)的3個數(shù)據(jù)節(jié)點列表。然后Client將會把每塊數(shù)據(jù)直接寫入數(shù)據(jù)節(jié)點中(通常是TCP 50010協(xié)議)。收到數(shù)據(jù)的數(shù)據(jù)節(jié)點將會把數(shù)據(jù)復(fù)制到其他數(shù)據(jù)節(jié)點中,循環(huán)只到所有數(shù)據(jù)節(jié)點都完成拷貝為止。名稱節(jié)點只負(fù)責(zé)提供數(shù)據(jù)的位置和數(shù)據(jù)在族群中的去處(文件系統(tǒng)元數(shù)據(jù))。
來源:CSDN