越來越多的企業(yè)開始使用Hadoop來對(duì)大數(shù)據(jù)進(jìn)行處理分析,但Hadoop集群的整體性能卻取決于CPU、內(nèi)存、網(wǎng)絡(luò)以及存儲(chǔ)之間的性能平衡。而在這篇文章中,我們將探討如何為Hadoop集群構(gòu)建高性能網(wǎng)絡(luò),這是對(duì)大數(shù)據(jù)進(jìn)行處理分析的關(guān)鍵所在。
關(guān)于Hadoop
“大數(shù)據(jù)”是松散的數(shù)據(jù)集合,海量數(shù)據(jù)的不斷增長(zhǎng)迫使企業(yè)需要通過一種新的方式去管理。大數(shù)據(jù)是結(jié)構(gòu)化或非結(jié)構(gòu)化的多種數(shù)據(jù)類型的大集合。而Hadoop則是Apache發(fā)布的軟件架構(gòu),用以分析PB級(jí)的非結(jié)構(gòu)化數(shù)據(jù),并將其轉(zhuǎn)換成其他應(yīng)用程序可管理處理的形式。Hadoop使得對(duì)大數(shù)據(jù)處理成為可能,并能夠幫助企業(yè)可從客戶數(shù)據(jù)之中發(fā)掘新的商機(jī)。如果能夠進(jìn)行實(shí)時(shí)處理或者接近實(shí)時(shí)處理,那么其將為許多行業(yè)的用戶提供強(qiáng)大的優(yōu)勢(shì)。
Hadoop是基于谷歌的MapReduce和分布式文件系統(tǒng)原理而專門設(shè)計(jì)的,其可在通用的網(wǎng)絡(luò)和服務(wù)器硬件上進(jìn)行部署,并使之成為計(jì)算集群。
Hadoop模型
Hadoop的工作原理是將一個(gè)非常大的數(shù)據(jù)集切割成一個(gè)較小的單元,以能夠被查詢處理。同一個(gè)節(jié)點(diǎn)的計(jì)算資源用于并行查詢處理。當(dāng)任務(wù)處理結(jié)束后,其處理結(jié)果將被匯總并向用戶報(bào)告,或者通過業(yè)務(wù)分析應(yīng)用程序處理以進(jìn)行進(jìn)一步分析或儀表盤顯示。
為了最大限度地減少處理時(shí)間,在此并行架構(gòu)中,Hadoop“moves jobs to data”,而非像傳統(tǒng)模式那樣“moving data to jobs”。這就意味著,一旦數(shù)據(jù)存儲(chǔ)在分布式系統(tǒng)之中,在實(shí)時(shí)搜索、查詢或數(shù)據(jù)挖掘等操作時(shí),如訪問本地?cái)?shù)據(jù),在數(shù)據(jù)處理過程中,各節(jié)點(diǎn)之間將只有一個(gè)本地查詢結(jié)果,這樣可降低運(yùn)營(yíng)開支。
Hadoop的最大特點(diǎn)在于其內(nèi)置的并行處理和線性擴(kuò)展能力,提供對(duì)大型數(shù)據(jù)集查詢并生成結(jié)果。在結(jié)構(gòu)上,Hadoop主要有兩個(gè)部分:
Hadoop分布式文件系統(tǒng)(HDFS)將數(shù)據(jù)文件切割成數(shù)據(jù)塊,并將其存儲(chǔ)在多個(gè)節(jié)點(diǎn)之內(nèi),以提供容錯(cuò)性和高性能。除了大量的多個(gè)節(jié)點(diǎn)的聚合I/O,性能通常取決于數(shù)據(jù)塊的大小——如128MB。而傳統(tǒng)的Linux系統(tǒng)下的較為典型的數(shù)據(jù)塊大小可能是4KB。
MapReduce引擎通過JobTracker節(jié)點(diǎn)接受來自客戶端的分析工作,采用“分而治之”的方式來將一個(gè)較大的任務(wù)分解成多個(gè)較小的任務(wù),然后分配給各個(gè)TaskTrack節(jié)點(diǎn),并采用主站/從站的分布方式(具體如下圖所示):
Hadoop系統(tǒng)有三個(gè)主要的功能節(jié)點(diǎn):客戶機(jī)、主機(jī)和從機(jī)。客戶機(jī)將數(shù)據(jù)文件注入到系統(tǒng)之中,從系統(tǒng)中檢索結(jié)果,以及通過系統(tǒng)的主機(jī)節(jié)點(diǎn)提交分析工作等。主機(jī)節(jié)點(diǎn)有兩個(gè)基本作用:管理分布式文件系統(tǒng)中各節(jié)點(diǎn)以及從機(jī)節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ),以及管理Map/Reduce從機(jī)節(jié)點(diǎn)的任務(wù)跟蹤分配和任務(wù)處理。數(shù)據(jù)存儲(chǔ)和分析處理的實(shí)際性能取決于運(yùn)行數(shù)據(jù)節(jié)點(diǎn)和任務(wù)跟蹤器的從機(jī)節(jié)點(diǎn)性能,而這些從機(jī)節(jié)點(diǎn)則由各自的主機(jī)節(jié)點(diǎn)負(fù)責(zé)溝通和控制。從節(jié)點(diǎn)通常有多個(gè)數(shù)據(jù)塊,并在作業(yè)期間被分配處理多個(gè)任務(wù)。