越來越多的企業開始使用Hadoop來對大資料進行處理分析,但Hadoop集群的整體性能卻取決於CPU、記憶體、網路以及存儲之間的性能平衡。 而在這篇文章中,我們將探討如何為Hadoop集群構建高性能網路,這是對大資料進行處理分析的關鍵所在。
關於Hadoop
「大資料」是鬆散的資料集合,海量資料的不斷增長迫使企業需要通過一種新的方式去管理。 大資料是結構化或非結構化的多種資料類型的大集合。 而Hadoop則是Apache發佈的軟體架構,用以分析PB級的非結構化資料,並將其轉換成其他應用程式可管理處理的形式。 Hadoop使得對大資料處理成為可能,並能夠説明企業可從客戶資料之中發掘新的商機。 如果能夠進行即時處理或者接近即時處理,那麼其將為許多行業的使用者提供強大的優勢。
Hadoop是基於谷歌的MapReduce和分散式檔案系統原理而專門設計的,其可在通用的網路和伺服器硬體上進行部署,並使之成為計算集群。
Hadoop模型
Hadoop的工作原理是將一個非常大的資料集切割成一個較小的單元,以能夠被查詢處理。 同一個節點的計算資源用於並行查詢處理。 當任務處理結束後,其處理結果將被匯總並向使用者報告,或者通過業務分析應用程式處理以進行進一步分析或儀錶盤顯示。
為了最大限度地減少處理時間,在此並行架構中,Hadoop「moves jobs to data」,而非像傳統模式那樣「moving data to jobs」。 這就意味著,一旦資料存儲在分散式系統之中,在即時搜索、查詢或資料採礦等操作時,如訪問本地資料,在資料處理過程中,各節點之間將只有一個本地查詢結果,這樣可降低運營開支。
Hadoop的最大特點在於其內置的並行處理和線性擴展能力,提供對大型資料集查詢並生成結果。 在結構上,Hadoop主要有兩個部分:
Hadoop分散式檔案系統(HDFS)將資料檔案切割成資料塊,並將其存儲在多個節點之內,以提供容錯性和高性能。 除了大量的多個節點的聚合I/O,性能通常取決於資料塊的大小——如128MB。 而傳統的Linux系統下的較為典型的資料塊大小可能是4KB。
MapReduce引擎通過JobTracker節點接受來自用戶端的分析工作,採用「分而治之」的方式來將一個較大的任務分解成多個較小的任務,然後分配給各個TaskTrack節點,並採用主站/從站的分佈方式(具體如下圖所示) :
Hadoop系統有三個主要的功能節點:客戶機、主機和從機。 客戶機將資料檔案注入到系統之中,從系統中檢索結果,以及通過系統的主機節點提交分析工作等。 主機節點有兩個基本作用:管理分散式檔案系統中各節點以及從機節點的資料存儲,以及管理Map/Reduce從機節點的任務跟蹤分配和任務處理。 資料存儲和分析處理的實際性能取決於運行資料節點和任務跟蹤器的從機節點性能,而這些從機節點則由各自的主機節點負責溝通和控制。 從節點通常有多個資料塊,並在作業期間被分配處理多個任務。
(責任編輯:蒙遺善)