怎么為大數(shù)據(jù)處理構(gòu)建高性能Hadoop集群

越來越多的企業(yè)開始使用hadoop來對大數(shù)據(jù)進(jìn)行處理分析,但Hadoop集群的整體性能卻取決于CPU、內(nèi)存、網(wǎng)絡(luò)以及存儲之間的性能平衡。而在這篇文章中,我們將探討如何為Hadoop集群構(gòu)建高性能網(wǎng)絡(luò),這是對大數(shù)據(jù)進(jìn)行處理分析的關(guān)鍵所在。

  關(guān)于Hadoop

“大數(shù)據(jù)”是松散的數(shù)據(jù)集合,海量數(shù)據(jù)的不斷增長迫使企業(yè)需要通過一種新的方式去管理。大數(shù)據(jù)是結(jié)構(gòu)化或非結(jié)構(gòu)化的多種數(shù)據(jù)類型的大集合。而 Hadoop則是Apache發(fā)布的軟件架構(gòu),用以分析PB級的非結(jié)構(gòu)化數(shù)據(jù),并將其轉(zhuǎn)換成其他應(yīng)用程序可管理處理的形式。Hadoop使得對大數(shù)據(jù)處理成為可能,并能夠幫助企業(yè)可從客戶數(shù)據(jù)之中發(fā)掘新的商機(jī)。如果能夠進(jìn)行實時處理或者接近實時處理,那么其將為許多行業(yè)的用戶提供強(qiáng)大的優(yōu)勢。

  Hadoop是基于谷歌的MapReduce和分布式文件系統(tǒng)原理而專門設(shè)計的,其可在通用的網(wǎng)絡(luò)和服務(wù)器硬件上進(jìn)行部署,并使之成為計算集群。

  Hadoop模型

Hadoop的工作原理是將一個非常大的數(shù)據(jù)集切割成一個較小的單元,以能夠被查詢處理。同一個節(jié)點的計算資源用于并行查詢處理。當(dāng)任務(wù)處理結(jié)束后,其處理結(jié)果將被匯總并向用戶報告,或者通過業(yè)務(wù)分析應(yīng)用程序處理以進(jìn)行進(jìn)一步分析或儀表盤顯示。

  為了最大限度地減少處理時間,在此并行架構(gòu)中,Hadoop“moves jobs to data”,而非像傳統(tǒng)模式那樣“moving data to jobs”。這就意味著,一旦數(shù)據(jù)存儲在分布式系統(tǒng)之中,在實時搜索、查詢或數(shù)據(jù)挖掘等操作時,如訪問本地數(shù)據(jù),在數(shù)據(jù)處理過程中,各節(jié)點之間將只有一個本地查詢結(jié)果,這樣可降低運營開支。

  Hadoop的最大特點在于其內(nèi)置的并行處理和線性擴(kuò)展能力,提供對大型數(shù)據(jù)集查詢并生成結(jié)果。在結(jié)構(gòu)上,Hadoop主要有兩個部分:

  Hadoop分布式文件系統(tǒng)(HDFS)將數(shù)據(jù)文件切割成數(shù)據(jù)塊,并將其存儲在多個節(jié)點之內(nèi),以提供容錯性和高性能。除了大量的多個節(jié)點的聚合I/O,性能通常取決于數(shù)據(jù)塊的大小——如128MB。而傳統(tǒng)的Linux系統(tǒng)下的較為典型的數(shù)據(jù)塊大小可能是4KB。

  MapReduce引擎通過JobTracker節(jié)點接受來自客戶端的分析工作,采用“分而治之”的方式來將一個較大的任務(wù)分解成多個較小的任務(wù),然后分配給各個TaskTrack節(jié)點,并采用主站/從站的分布方式(具體如下圖所示):

Hadoop系統(tǒng)有三個主要的功能節(jié)點:客戶機(jī)、主機(jī)和從機(jī)??蛻魴C(jī)將數(shù)據(jù)文件注入到系統(tǒng)之中,從系統(tǒng)中檢索結(jié)果,以及通過系統(tǒng)的主機(jī)節(jié)點提交分析工作等。主機(jī)節(jié)點有兩個基本作用:管理分布式文件系統(tǒng)中各節(jié)點以及從機(jī)節(jié)點的數(shù)據(jù)存儲,以及管理Map/Reduce從機(jī)節(jié)點的任務(wù)跟蹤分配和任務(wù)處理。數(shù)據(jù)存儲和分析處理的實際性能取決于運行數(shù)據(jù)節(jié)點和任務(wù)跟蹤器的從機(jī)節(jié)點性能,而這些從機(jī)節(jié)點則由各自的主機(jī)節(jié)點負(fù)責(zé)溝通和控制。從節(jié)點通常有多個數(shù)據(jù)塊,并在作業(yè)期間被分配處理多個任務(wù)。

  部署實施Hadoop

  各個節(jié)點硬件的主要要求是市縣計算、內(nèi)存、網(wǎng)絡(luò)以及存儲等四個資源的平衡。目前常用的并被譽(yù)為“最佳”的解決方案是采用相對較低成本的舊有硬件,部署足夠多的服務(wù)器以應(yīng)對任何可能的故障,并部署一個完整機(jī)架的系統(tǒng)。

  Hadoop模式要求服務(wù)器與SAN或者NAS進(jìn)行直接連接存儲(DAS)。采用DAS主要有三個原因,在標(biāo)準(zhǔn)化配置的集群中,節(jié)點的縮放數(shù)以千計,隨著存儲系統(tǒng)的成本、低延遲性以及存儲容量需求不斷提高,簡單配置和部署個主要的考慮因素。隨著極具成本效益的1TB磁盤的普及,可使大型集群的TB級數(shù)據(jù)存儲在DAS之上。這解決了傳統(tǒng)方法利用SAN進(jìn)行部署極其昂貴的困境,如此多的存儲將使得Hadoop和數(shù)據(jù)存儲出現(xiàn)一個令人望而卻步的起始成本。有相當(dāng)大一部分用戶的Hadoop部署構(gòu)建都是采用大容量的DAS服務(wù)器,其中數(shù)據(jù)節(jié)點大約1-2TB,名稱控制節(jié)點大約在1-5TB之間,具體如下圖所示:

對于大多數(shù)的Hadoop部署來說,基礎(chǔ)設(shè)施的其他影響因素可能還取決于配件,如服務(wù)器內(nèi)置的千兆以太網(wǎng)卡或千兆以太網(wǎng)交換機(jī)。上一代的CPU和內(nèi)存等硬件的選擇,可根據(jù)符合成本模型的需求,采用匹配數(shù)據(jù)傳輸速率要求的千兆以太網(wǎng)接口來構(gòu)建低成本的解決方案。采用萬兆以太網(wǎng)來部署Hadoop也是相當(dāng)不錯的選擇。

 萬兆以太網(wǎng)對Hadoop集群的作用

千兆以太網(wǎng)的性能是制約Hadoop系統(tǒng)整體性能的一個主要因素。使用較大的數(shù)據(jù)塊大小,例如,如果一個節(jié)點發(fā)生故障(甚至更糟,整個機(jī)架宕機(jī)),那么整個集群就需要對TB級的數(shù)據(jù)進(jìn)行恢復(fù),這就有可能會超過千兆以太網(wǎng)所能提供的網(wǎng)絡(luò)帶寬,進(jìn)而使得整個集群性能下降。在擁有成千上萬個節(jié)點的大型集群中,當(dāng)運行某些需要數(shù)據(jù)節(jié)點之間需要進(jìn)行中間結(jié)果再分配的工作負(fù)載時,在系統(tǒng)正常運行過程中,某個千兆以太網(wǎng)設(shè)備可能會遭遇網(wǎng)絡(luò)擁堵。

  每一個Hadoop數(shù)據(jù)節(jié)點的目標(biāo)都必須實現(xiàn)CPU、內(nèi)存、存儲和網(wǎng)絡(luò)資源的平衡。如果四者之中的任意一個性能相對較差的話,那么系統(tǒng)的潛在處理能力都有可能遭遇瓶頸。添加更多的CPU和內(nèi)存組建,將影響存儲和網(wǎng)絡(luò)的平衡,如何使Hadoop集群節(jié)點在處理數(shù)據(jù)時更有效率,減少結(jié)果,并在Hadoop集群內(nèi)添加更多的HDFS存儲節(jié)點。

  幸運的是,影響CPU和內(nèi)存發(fā)展的摩爾定律,同樣也正影響著存儲技術(shù)(TB級容量的磁盤)和以太網(wǎng)技術(shù)(從千兆向萬兆甚至更高)的發(fā)展。預(yù)先升級系統(tǒng)組件(如多核處理器、每節(jié)點5-20TB容量的磁盤,64-128GB內(nèi)存),萬兆以太網(wǎng)卡和交換機(jī)等網(wǎng)絡(luò)組件是重新平衡資源最合理的選擇。萬兆以太網(wǎng)將在Hadoop集群證明其價值,高水平的網(wǎng)絡(luò)利用率將帶來效益更高的帶寬。下圖展示了Hadoop集群與萬兆以太網(wǎng)的連接:

許多企業(yè)級數(shù)據(jù)中心已經(jīng)遷移到10GbE網(wǎng)絡(luò),以實現(xiàn)服務(wù)器整合和服務(wù)器虛擬化。隨著越來越多企業(yè)開始部署Hadoop,他們發(fā)現(xiàn)他們完全不必要大批量部署1U的機(jī)架服務(wù)器,而是部署更少,但性能更高的服務(wù)器,以方便擴(kuò)展每個數(shù)據(jù)節(jié)點所能運行的任務(wù)數(shù)量。很多企業(yè)選擇部署2U或4U的服務(wù)器(如戴爾 PowerEdge C2100),每個節(jié)點大約12-16個核心以及24TB存儲容量。在這種環(huán)境下的合理選擇是充分利用已經(jīng)部署的10GbE設(shè)備和Hadoop集群中的 10GbE網(wǎng)卡。

  在日常的IT環(huán)境中構(gòu)建一個簡單的Hadoop集群。可以肯定的是,盡管有很多細(xì)節(jié)需要微調(diào),但其基礎(chǔ)是非常簡單的。構(gòu)建一個計算、存儲和網(wǎng)絡(luò)資源平衡的系統(tǒng),對項目的成功至關(guān)重要。對于擁有密集節(jié)點的Hadoop集群而言,萬兆以太網(wǎng)能夠為計算和存儲資源擴(kuò)展提供與之相匹配的能力,且不會導(dǎo)致系統(tǒng)整體性能下降。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容