隨著互聯網技術的發展,數宇信息正在成指數增加,根據Internet Data Cente:發布的Digital Universe報告顯示,在未來8年中所產生的數據量將達到40 ZB,相當于每人產生5200 G的數據,如何高效地計算和存儲這些海量數據成為互聯網企業所要而對的挑戰。傳統的大規模數據處理大多采用并行計算、網格計算、分布式高性能計算等,耗費昂貴的存儲與計算資源,而且對于大規模數據計算任務的有效分配和數據合理分割都需要復雜的編程才可以實現。基于Hadoop分布式云平臺的出現成為解決此類問題的良好途徑,本文將在綜述Hadoop核心技術:HDFS和MapReduce基礎上,利用VMware虛擬機搭建一個基于Hadoop分布式技術的高效、易擴展的云數據計算與存儲平臺,并通過實驗驗證分布式計算與存儲的優勢。
1、Hadoop及其相關技術
Hadoop是并行技術、分布式技術和網格計算技術發展的產物,是一種為適應大規模數據計算和存儲而發展起來的模型架構。Hadoop是Apache公司旗下的一個分布式計算和存儲的框架平臺,能夠高效存儲大量數據,而且可以編寫分布式應用程序來分析計算海量數據。Hadoop可在大量廉價硬件設備集群中運行程序,為各應用程序提供可靠穩定的接口來構建高擴展性和高可靠行的分布式系統。Hadoop具有成本低廉、可靠性高、容錯性高、擴展性強、效率高、可移植性強、免費開源的優點。
Hadoop集群為典型Master/Slave、結構,基于Hadoop的云計算與存儲架構模型如圖1所示。
圖 1 基于Hadoop的云計算與存儲架構模型
1.1 Hadoop分布式文件系統HDFS
HDFS是一個運行在大量廉價硬件之上的分布式文件系統,它是Hadoop平臺的底層文件存儲系統,主要負責數據的管理和存儲,對于大文件的數據訪問具有良好性能。HDFS與傳統的分布式文件系統相似,但是也存在著一定的不同,具有硬件故障、大數據集、簡單一致性、數據流式訪問、移動計算的便捷性等特點。HDFS的工作流程及架構如圖2所示。
圖 2 HDFS的工作流程及架構結構
一個HDFS集群中有一個NameNode和多個DataNode。如圖2所示,NameNode是中心服務器,它用來管理文件系統的元數據信息以及客戶端對文件的讀寫訪問,維護文件系統樹及其子節點下的所有文件和目錄。這些信息以編輯日志文件(Editlog)和命名空間鏡像文件(FsImage)的形式保存在磁盤中。NameNode還暫時記錄著各個塊(Block)所在的DataNode信息。其功能主要有:管理元數據和文件塊;簡化元數據更新操作;監聽和處理請求。
DataNode通常在集群中一個節點一個,用來存儲、檢索數據塊,響應NameNode下達的創建、復制、刪除數據塊的命令,并定時向NameNode發送“心跳”,通過心跳信息向NameNode匯報自己的負載情況,同時通過心跳信息來接受NameNode下達的指令信息;NameNode通過“心跳”信息來確定DataNode是否失效,它定時ping每個DataNode,如果在規定的時間內沒有收到DataNode的反饋就認為此節點失效,然后對整個系統進行負載調整。在HDFS中,每個文件劃分成一個或多個blocks(數據塊)分散存儲在不同的DataNode中,DataNode之間進行數據塊的相互復制而形成多個備份。
1.2 Map/Reduce編程框架
Map/Reduce是Hadoop用來處理云計算中海量數據的編程框架,簡單易用,程序員在不必了解底層實現細節的基礎上便可寫出程序來處理海量數據。利用Map/Reduce技術可以在數千部服務器上同時開展廣告業務和網絡搜索等任務,并可以方便地處理TB、PB,甚至是EB級的數據。
Map/Reduce框架由JobTracker和TaskTracker組成。JobTracker只有一個,它是主節點,負責任務的分配和調度,管理著幾個TaskTracker;TaskTracker一個節點一個,用來接受并處理JobTracker發來的任務。
MapReduce針對集群中的大型數據集進行分布式運算,它的整個框架由Map和Reduce函數組成,處理數據時先執行map再執行reduce。具體執行過程如圖3所示。執行map函數前先對輸入數據進行分片;然后將不同的片段分配給不同的map執行,map函數處理之后以(key,value)的形式輸出;在進入reduce階段前,map函數先將原來的(key,value)分成多組中間的鍵值對再發給一個reducer進行處理;最后reduce函數合并key相同的value,并輸出結果到磁盤上。
圖 3 MapReduce計算過程
2、基于Hadoop的云計算與存儲平臺設計
目前,多核計算機的廣泛使用使其在搭建Hadoop集群系統時,分給各DataNode節點的多個任務會產生對資源的競爭,例如:內存、CPU、輸入輸出帶寬等,這會導致暫時用不到的資源處于閑置狀態,致使一些資源的浪費以及響應時間的延長,資源開銷的增加最終會導致系統性能的降低。為解決此問題,本研究提出一種基于VMware虛擬機和Hadoop相結合的集群環境模型,如圖4所示,即在一臺計算機中搭建多臺虛擬操作系統,此種做法的優點是可以增加DataNode和TaskTracker節點,而且可以充分利用物理資源,提高運算和存儲的效率。
圖 4 基于VMware虛擬機和Hadoop結合的模型
3、實驗平臺搭建
3. 1硬件環境配置
準備3臺雙核計算機,并分別安裝2臺VMware虛擬機軟件,在虛擬機中裝入Linux OS,從而將3臺計算機擴展成為6臺計算機,3臺計算機具有相同的配置,配置具體如表1所示。
Hadoop集群包括1個NameNode服務器和5個DataNode月及務器,配置信息如表2所示。
3.2 Hadoop環境搭建
Hadoop環境搭建過程為:配置集群hosts列表、安裝JAVA JDK系統軟件、配置環境變量、生成登陸密鑰、創建用戶帳號和Hadoop部署目錄及數據目錄、配置hadoopenv.sh環境變量、配置core-site. xml、hdfs-site. xml、mapred-site. xml。
配置完畢之后進行格式化文件,命令為:
/opt/modules/hadoop/hadoop-1.0.3/bin/hadoop namenode deformat
然后啟動所有節點,輸入命令:startall.sh。通過界而查看集群是否部署成功,首先檢查NameNode和DataNode節點是否正常,打開瀏覽器輸入網址:http: //master: 50070,若Live Nodes有6個,說明全部節點成功啟動。然后檢查JobTracker和TaskTracker節點,輸入網址:http: //master:50030,若Nodes節點有6個說明節點啟動成功。
4、實驗內容及結果分析
在部署好的Hadoop云數據計算與存儲平臺上進行實驗來驗證基于分布式數據計算和存儲的方法在數據計算和存儲上存在優勢。
1)實驗一:運行Hadoop自帶的蒙特卡洛求PI程序驗證基于Hadoop分布式云計算的高效性。計算任務設為10個,計算量為10的3 、4、5 、6次方。
環境一:單機情況下運行;
環境二:3臺物理機搭建的集群系統中運行;
環境三:6臺虛擬機搭建的集群系統中運行。集群環境運行日志如圖5所示。
圖 5 蒙特卡洛求PI程序運行日志
每組實驗運行5次求所需時間的平均值,計算執行時間結果如圖6所示,縱軸為時間/s,橫軸是計算量/次方。從圖6中可以看出單機環境下的運算時間遠遠大于分布式系統下的運算時間,而且集群系統中的節點越多計算速度越快。
2)實驗二:通過運行宇符統計程序(wordcounter.jar)測試基于Hadoop分布式云數據讀寫的高效性來驗證其存儲性能。有4組數據,大小分別為400MB、600MB、1GB和1.5GB。
本組實驗設置Hadoop塊大小為16M默認情況下是64 M ) ,冗余備份參數設置為3(默認值),實驗環境同實驗一,程序運行5次,記錄時間并計算平均值,運行日志如圖7所示。
圖 7 字符統計程序運行日志
運行結果如圖8所示,縱軸為執行時間/s,橫軸為數據量/MB。從圖8中可以得出單機環境下的數據讀寫速度明顯低于分布式環境下的速度,而且節點越多讀寫速度越快。
圖 8 字符統計程序在3種環境中的性能對比
可以看出,與傳統數據計算與讀寫方式相比,本文提出的在虛擬化環境下搭建的基于Hadoop分布式技術的云計算與存儲平臺,有效地提高了海量數據分析與讀寫的速度和效率;而且利用虛擬化技術搭建的集群比物理機集群效率更高,速度更快,從而大大提高了資源的利用率。
5、結束語
本文通過對Hadoop分布式文件系統HDFS、 MapReduce編程框架進行研究,利用VMware虛擬機搭建基于Hadoop的云數據計算與存儲平臺,并通過實驗驗證其相對于傳統數據處理方式具有高效、快速的特點,滿足云計算領域的相關需求;而且通過應用虛擬化技術來擴展節點數量,既提高了運行效率又提高了硬件資源的利用率,為今后云計算的研究方向打下了基礎。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://m.guhuozai8.cn/
本文網址:http://m.guhuozai8.cn/html/consultation/10839716289.html