胡昕
摘 要:對現(xiàn)有多款云計算平臺做了分析與對比。之后選定 Hadoop 開源云平臺作為項目的基礎研究平臺,對其進行深入的分析與討論。
關鍵詞:Hadoop;數(shù)據(jù)處理;挖掘
曾有一句話在互聯(lián)網(wǎng)業(yè)界廣為流傳:“大量的數(shù)據(jù)勝于好的算法”,這句話的意思是說對于某些應用,相比與優(yōu)秀的算法,大量可用的數(shù)據(jù)能夠帶來更好的推薦效果。這就是數(shù)據(jù)處理和挖掘。數(shù)據(jù)處理的根本目的是利用有效的手段快速準確的獲取數(shù)據(jù)、加工數(shù)據(jù)、應用數(shù)據(jù)。這其中,數(shù)據(jù)挖掘技術是將收集到的數(shù)據(jù)得以有效應用的核心技術。數(shù)據(jù)挖掘(Data Mining)技術又被稱作數(shù)據(jù)庫中的知識發(fā)現(xiàn),其核心就是從大量雜亂無章的、難以理解的數(shù)據(jù)中獲取有效的、新穎的、具有潛在應用價值的信息的過程。
目前比較有研究價值的 Web 挖掘的方向有:(1)數(shù)據(jù)預處理技術方向。(2)現(xiàn)有挖掘算法改進方向。(3)智能搜索引擎方向。(4)電子商務領域應用方向。
海量數(shù)據(jù)處理雖然剛剛興起,但數(shù)據(jù)在企業(yè)中一直處于核心地位,傳統(tǒng)的數(shù)據(jù)產(chǎn)品,在企業(yè)中部署運行多年,為企業(yè)的經(jīng)營決策貢獻巨大。企業(yè)現(xiàn)有數(shù)據(jù)產(chǎn)品的服務商,排在前六位的分別是 Oracle(27.93%)、IBM(15.99%)、Microsoft(14.41%)、Apache Hadoop(9.01%)、EMC(8.33%),以及SAP(7.66%)。Oracle 以絕對優(yōu)勢拔得頭籌,可見其在數(shù)據(jù)庫、數(shù)據(jù)分析和大數(shù)據(jù)方面的地位。值得一提的是Hadoop 的普及水平已超出我們的想象,成為繼 Oracle、IBM和 Microsoft 之后又一主流平臺產(chǎn)品。
Hadoop 云平臺由分布式文件系統(tǒng) HDFS 與并行計算構架MapReduce兩個核心組件構成。接下來將對 Hadoop 的核心組件、主要構造模塊及拓撲結構進行分析與討論。
分布式文件系統(tǒng) HDFS。HDFS(Hadoop Distributed FileSystem)是為Hacloop項目開發(fā)的分布式文件系統(tǒng),它采用主/從( master/slave)架構。HDFS 由一個NarneNode(文件索引服務器)以及眾多DataNode(數(shù)據(jù)節(jié)點)組成。HDFS 提供給用戶相應的文件命名空間供用戶將數(shù)據(jù)以文件的形式存放。HDFS 一般會把這些文件切分為幾個文件塊,切分后的文件塊將被存放在一組數(shù)據(jù)服務器上。然后由NameNode提供打開、關閉、重命名文件與目錄等基本功能,同時負責將文件塊映射到DataNode上。再由DataNode負責響應客戶端具體文件的讀寫操作,同時處理由NameNode發(fā)起的創(chuàng)建、刪除和備份數(shù)據(jù)塊的請求。
一般而言 HDFS 在 Linux 操作系統(tǒng)上運行。由于采用了Java語言,所以理論上任何支持Java語言的操作系統(tǒng)都可以運行NameNode與DataNodeo HDFS 采用主/從式系統(tǒng)架構,其中的所有元數(shù)據(jù)都存儲在NameNode上,故客戶端可以方便地通過NameNode得到全局數(shù)據(jù)存儲狀況,但如果出現(xiàn)NameNode死機的情況,用戶也將失去訪問數(shù)據(jù)的能力,為此 HDFS 在新版本中加入了備份NameNode功能,以防止上述故障。
并行計算架構MapReduce。MapReduce是一種為多臺計算機并行處理大量數(shù)據(jù)而設計的并行計算框架。MapReduce通常工作的輸入數(shù)據(jù)分割成獨立的數(shù)據(jù)塊,分割后的數(shù)據(jù)一般由多個 Map 任務并行處理。Mapper 從 HDFS 上取出數(shù)據(jù),處理后將結果存儲在本地硬盤,Reducer 在本地硬盤或通過網(wǎng)絡方法取得Mapper 的輸出結果后進一步計算,將結果輸出到 HDFS。
MapReduce框架關注調(diào)度任務,并監(jiān)視任務的執(zhí)行狀況,如果執(zhí)行失敗,將重新執(zhí)行該任務。
在 Hadoop 中計算節(jié)點通常與存儲節(jié)點在一起。這就使得MapReduce框架可以根據(jù)數(shù)據(jù)的存儲分布。情況來調(diào)度任務。
MapReduce框架包含一個獨立的主服務器JobTracker(工作分配服務器)及一組與DataNode安裝在一起的從服務器TaskTracker(任務執(zhí)行服務器)。主服務器負責將任務調(diào)度到從服務器上,并監(jiān)控任務,重新執(zhí)行失敗的任務。應用程序在 HDFS 上指定輸入與輸出位置,并通過實現(xiàn)專門的接口來提供相應的 Map 和 Reduce 方法。 Hadoop 客戶端負責發(fā)送工作相配置信息給JobTracker,由JobTracker來分發(fā)、調(diào)度任務給TaskTracker,并將相應的狀態(tài)信息反饋給 Hadoop 客戶端。
首先由JobClient向部署于 Master節(jié)點上的JobTracker守護進程提交MapReduce作業(yè)。JobTracker在接受到作業(yè)請求后計入隊列中去。駐留在 Slave 節(jié)點上的TaskTarcker守護進程在完成自己分配到的作業(yè)后會不斷向JobTracker發(fā)送心跳信息,查詢 Job 隊列中是否有新的任務可做,若隊列中有新的任務,JobTracker會在第一時間發(fā)送給空閑的TaskTracker進行處理。
Hadoop 有 5 大構造模塊構成,其分別為:NameNode(名字節(jié)點)、SecondaryNameNode(次名字節(jié)點)、DataNode(數(shù)據(jù)節(jié)點)、TaskTracker(任務跟蹤)、JobTracker(作業(yè)跟蹤)。每個模塊具備不同的功能,共同完成分布式數(shù)據(jù)處理任務。
在 Hadoop 云平臺基礎上,進行了海量 Web 日志數(shù)據(jù)預處理模型的研究,提出了改進型預處理模型,并在單機及Hadoop分布式平臺下分別進行了仿真驗證,對仿真結果進行了對比分析與研究。在海量 Web 日志數(shù)據(jù)預處理研究基礎上進行了Apriori并行分層搜索算法的研究,分析傳統(tǒng) CD、DD 算法的優(yōu)劣、提出改進型并行Apriori算法,并對其進行MapReduce化,部署于 Hadoop 平臺下做仿真分析,最后對仿真結果進行分析研究。