Hadoop教程:Hadoop集群和網(wǎng)絡(luò)的基本原理(一)
Hadoop里的服務(wù)器角色
Hadoop主要的任務(wù)部署分為3個(gè)部分,分別是:Client機(jī)器,主節(jié)點(diǎn)和從節(jié)點(diǎn)。主節(jié)點(diǎn)主要負(fù)責(zé)Hadoop兩個(gè)關(guān)鍵功能模塊HDFS、Map Reduce的監(jiān)督。當(dāng)Job Tracker使用Map Reduce進(jìn)行監(jiān)控和調(diào)度數(shù)據(jù)的并行處理時(shí),名稱節(jié)點(diǎn)則負(fù)責(zé)HDFS監(jiān)視和調(diào)度。從節(jié)點(diǎn)負(fù)責(zé)了機(jī)器運(yùn)行的絕大部分,擔(dān)當(dāng)所有數(shù)據(jù)儲存和指令計(jì)算的苦差。每個(gè)從節(jié)點(diǎn)既扮演者數(shù)據(jù)節(jié)點(diǎn)的角色又沖當(dāng)與他們主節(jié)點(diǎn)通信的守護(hù)進(jìn)程。守護(hù)進(jìn)程隸屬于Job Tracker,數(shù)據(jù)節(jié)點(diǎn)在歸屬于名稱節(jié)點(diǎn)。
Client機(jī)器集合了Hadoop上所有的集群設(shè)置,但既不包括主節(jié)點(diǎn)也不包括從節(jié)點(diǎn)。取而代之的是客戶端機(jī)器的作用是把數(shù)據(jù)加載到集群中,遞交給 Map Reduce數(shù)據(jù)處理工作的描述,并在工作結(jié)束后取回或者查看結(jié)果。在小的集群中(大約40個(gè)節(jié)點(diǎn))可能會面對單物理設(shè)備處理多任務(wù),比如同時(shí)Job Tracker和名稱節(jié)點(diǎn)。作為大集群的中間件,一般情況下都是用獨(dú)立的服務(wù)器去處理單個(gè)任務(wù)。
在真正的產(chǎn)品集群中是沒有虛擬服務(wù)器和管理層的存在的,這樣就沒有了多余的性能損耗。Hadoop在Linux系統(tǒng)上運(yùn)行的最好,直接操作底層硬件設(shè)施。這就說明Hadoop實(shí)際上是直接在虛擬機(jī)上工作。這樣在花費(fèi)、易學(xué)性和速度上有著無與倫比的優(yōu)勢。
Hadoop集群
上面是一個(gè)典型Hadoop集群的構(gòu)造。一系列機(jī)架通過大量的機(jī)架轉(zhuǎn)換與機(jī)架式服務(wù)器(不是刀片服務(wù)器)連接起來,通常會用1GB或者2GB的寬帶來支撐連接。10GB的帶寬雖然不常見,但是卻能顯著的提高CPU核心和磁盤驅(qū)動(dòng)器的密集性。上一層的機(jī)架轉(zhuǎn)換會以相同的帶寬同時(shí)連接著許多機(jī)架,形成集群。大量擁有自身磁盤儲存器、CPU及DRAM的服務(wù)器將成為從節(jié)點(diǎn)。同樣有些機(jī)器將成為主節(jié)點(diǎn),這些擁有少量磁盤儲存器的機(jī)器卻有著更快的CPU及更大的 DRAM。
下面我們來看一下應(yīng)用程序是怎樣運(yùn)作的吧:
Hadoop的工作流程
在計(jì)算機(jī)行業(yè)競爭如此激烈的情況下,究竟什么是Hadoop的生存之道?它又切實(shí)的解決了什么問題?簡而言之,商業(yè)及政府都存在大量的數(shù)據(jù)需要被快速的分析和處理。把這些大塊的數(shù)據(jù)切開,然后分給大量的計(jì)算機(jī),讓計(jì)算機(jī)并行的處理這些數(shù)據(jù) — 這就是Hadoop能做的。
下面這個(gè)簡單的例子里,我們將有一個(gè)龐大的數(shù)據(jù)文件(給客服部門的電子郵件)。我想快速的截取下“Refund”在郵件中出現(xiàn)的次數(shù)。這是個(gè)簡單的字?jǐn)?shù)統(tǒng)計(jì)練習(xí)。Client將把數(shù)據(jù)加載到集群中(File.txt),提交數(shù)據(jù)分析工作的描述(word cout),集群將會把結(jié)果儲存到一個(gè)新的文件中(Results.txt),然后Client就會讀結(jié)果文檔。
向HDFS里寫入File
Hadoop集群在沒有注入數(shù)據(jù)之前是不起作用的,所以我們先從加載龐大的File.txt到集群中開始。首要的目標(biāo)當(dāng)然是數(shù)據(jù)快速的并行處理。為了實(shí)現(xiàn)這個(gè)目標(biāo),我們需要竟可能多的機(jī)器同時(shí)工作。最后,Client將把數(shù)據(jù)分成更小的模塊,然后分到不同的機(jī)器上貫穿整個(gè)集群。模塊分的越小,做數(shù)據(jù)并行處理的機(jī)器就越多。同時(shí)這些機(jī)器機(jī)器還可能出故障,所以為了避免數(shù)據(jù)丟失就需要單個(gè)數(shù)據(jù)同時(shí)在不同的機(jī)器上處理。所以每塊數(shù)據(jù)都會在集群上被重復(fù)的加載。 Hadoop的默認(rèn)設(shè)置是每塊數(shù)據(jù)重復(fù)加載3次。這個(gè)可以通過hdfs-site.xml文件中的dfs.replication參數(shù)來設(shè)置。
Client把File.txt文件分成3塊。Cient會和名稱節(jié)點(diǎn)達(dá)成協(xié)議(通常是TCP 9000協(xié)議)然后得到將要拷貝數(shù)據(jù)的3個(gè)數(shù)據(jù)節(jié)點(diǎn)列表。然后Client將會把每塊數(shù)據(jù)直接寫入數(shù)據(jù)節(jié)點(diǎn)中(通常是TCP 50010協(xié)議)。收到數(shù)據(jù)的數(shù)據(jù)節(jié)點(diǎn)將會把數(shù)據(jù)復(fù)制到其他數(shù)據(jù)節(jié)點(diǎn)中,循環(huán)只到所有數(shù)據(jù)節(jié)點(diǎn)都完成拷貝為止。名稱節(jié)點(diǎn)只負(fù)責(zé)提供數(shù)據(jù)的位置和數(shù)據(jù)在族群中的去處(文件系統(tǒng)元數(shù)據(jù))。
來源:CSDN