顧晉
摘要:伴隨著web2.0、云計算、物聯網等概念和技術的提出與快速發展,信息時代越來越體現出它的“大數據”特征。為了發揮大數據的價值,數據倉庫、數據挖掘技術在商業、軍事、經濟、學術等眾多領域越來越收到重視,正發揮著越來越大的作用。與此同時,龐大的數據規模也向傳統的數據挖掘工作提出了重大的挑戰。依靠云計算等分布式計算平臺所提供的強勁處理能力,將數據挖掘與云計算相結合正在成為行業的趨勢,正不斷地顯現出其強大的優勢和潛力。
1、Hadoop的來源
Hadoop源于2002年開始的Apache Lucene的子項目之一開源搜索引擎Apache Nutch。為了使Nutch搜索引擎可以適應越來越龐大的數據增長,提高數據處理能力,保證搜索速度和精度,急需引入一種高效的分布式計算結構。Hadoop在2008 年初就被Apache 公司列為了頂級項目,并成為了許多互聯網公司如雅虎、Facebook、Twitter等基礎計算平臺的一個基礎部分。目前的Hadoop系統已經逐漸發展成為包含HDFS、MapReduce、Pig、HBase、Hive 等眾多子項目的集合,越來越多的被用于分布式計算。
Hadoop的核心技術是MapReduce并行編程模型和HDFS 分布式文件系統,HDFS 采用分布式的方式存儲文件,其很高的容錯性使其可以方便可靠的部署在低廉的計算機集群中,提高了文件的讀寫速度,同時擴大了存儲用量。采用MapReduce來整合處理分布式文件系統上的數據,使分布式開發變得系統化,也保證了執行效率。
2.Hadoop平臺系統結構
Hadoop所采用的分布式系統屬于一種被稱為“向外擴展”的增強計算能力的方式。于此相對應的方式被稱為“向上擴展”,這種方式以大型單機服務器為代表。在過去的幾十年間,計算機的發展和計算能力的提高是遵守摩爾定律的。
隨著數據的不斷增加,人們發現,解決大規模計算問題不能單純的依賴于制造越來越大型的服務器,需要另辟新徑,開始在向外擴展的方向上考慮問題的解決辦法。Hadoop的向外擴展,即把許多低端或商用機器組織自在一起,形成一個功能專一的分布式系統。
利用Hadoop的集群合作,得到的不僅是強大的計算能力,同時通過將數據集劃分為較小的塊(通常為64M),依靠Hadoop將其適度的復制并分布到集群的多臺機器上,使得集群可以并行的讀取數據,進而提供了很高的系統吞吐量,這對于目前網絡上的大數據環境(數據密集型作業)而言,是必不可少的重要能力Hadoop主要處理的是數據密集型任務,這類任務的數據規模很大,數據遷移就變得十分困難。因此,Hadoop強調的是把代碼向數據遷移,在一個提供計算服務的Hadoop集群內部,既包含數據又包含計算環境。客戶端僅需向集群發送待執行的MapReduce程序,讓這些可執行移動到數據所在的機器上去,而這些程序通常在規模上比數據小幾個數量級,移動程序比移動數據容易很多。在計算的整個過程中,數據不動,總是存儲在進群中的各個數據節點上的,不會發生客戶端和集群間的計算數據交互。更重要的是,在Hadoop集群的內部,也體現了代碼向數據遷移的理念,數據被分塊后在集群中分布,Hadoop在執行任務時會盡可能讓對一段數據的處理發生在儲存這段數據的一臺計算機上。這種設計理念服務于Hadoop面向數據密集型任務處理的設計目標,極大地減少了數據在網絡上傳遞所占用的帶寬,降低IO 壓力,避免了任務計算時的數據瓶頸。
3、基于Hadoop平臺數據遷移基本任務
數據挖掘的任務決定著數據挖掘工作的方向,指導著算法尋找什么樣的數據模式。數據挖掘的步驟會隨不同的挖掘任務和不同的應用領域而有所變化,一般地,可以根據工作的特點,將數據挖掘任務分為兩大類:描述性挖掘和和預測性挖掘。描述性挖掘任務著眼于發現數據的一般特性,對與數據庫中已經存在的數據進行刻畫,包括概括、總結數據,尋找數據間關系、類型等。預測性挖掘主要根據當前數據做出推斷,以對更多的或者新加入的數據進行預測。根據數據挖掘的具體任務不同,挖掘結果中會得到不同的數據模式。數據挖掘系統要有挖掘多種類型數據模式的能力,以適應不同的任務和用戶要求,并允許用戶參與數據挖掘過程,指導或聚焦其感興趣的數據模式的挖掘。
3.1數據遷移算法
1)數據描述和可視化
數據庫中存放的數據條目通常含有大量的細節數據,這些細節數據可能含有某種整體趨勢,但是由于其瑣細而且雜亂,直觀的發現某些規律或趨勢變得十分困難。因此,用戶通常希望找到一種更加直觀形式來描述數據集。用匯總的、簡潔的、精確的方式描述數據庫中條目中包含的每個條目類型和概念是十分有用而且必要的。
這種描述數據的方法可以提供某一類數據的概貌,或者是將它與不同的某類數據進行區別。可以使用多種可視化方式將數據描述特征的的結果進行輸出,多種統計圖表是一種很方便直接的選擇,包括柱狀圖、曲線圖、餅圖、雷達圖等等。數據倉庫領域的多維數據方和包括交叉表在內的多維數據表也是很好的選擇。圖表中也可以加入一些針對性的特殊數據標注和度量,并允許用戶對可視化輸出進行操作。挖掘結果也可以通過規則敘述的方式描述給用戶,或者通過總結其中的泛化關系,將二次的結果提煉呈現給用戶。
2)相關性分組或關聯分析
數據來源于真實世界,因此,現實世界中事物間存在的聯系也體現在數據庫中的數據之間。數據挖掘中,若兩個或多個變量的取值之間存在某種規律性,就稱為關聯,比如在一次購買活動中有兩種或多種商品總是被同時購買。但是,數據之間的關聯是復雜的、而且總是隱含的。根據數據關系呈現的方式不同,可以分為簡單關聯、時序關聯、因果關聯和數量關聯等。這些關聯并不總是事先知道的,大多都需要通過對數據進行關聯規則挖掘而主動地去發現,往往在這些關系蘊含著在商業決策等方面的重要價值。
3.2Driver 和算法流程
完成了MapReduce過程的編寫以后,為了將k-means算法任務部署到Hadoop環境中去執行,還要完成其任務聲明和參數配置。為此,我們要完成MapReduce框架的核心run 方法,該run 方法被稱為MapReduce的Driver。Driver 的任務是實例化、配置并傳遞一個作業配置對象JonConf命名的作業,通過與JobTracker通信用在集群上啟動MapReduce作業。該JobConf對象應包含保持作業運行所需要的全部配置參數。在Driver 中,我們要為MapReduce作業定制基本參數,包括聚類數據集的輸入路徑、結果的輸出路徑、前面實現的Mapper 類和Reducer類。而且,還需要根據輸入數據和輸出數據的格式和程序要求,重置默認的作業屬性,這里我們使用TextInputFormat作為輸入數據集的輸入方式。一旦JobConf對象被完成并傳遞給JobClient,他就被視為作業的總體規劃,成為了決定這個作業如何運行的藍本
4、結論
使用多臺普通PC 主機搭建分布式集群,并在不同規模的人工生成數據集上進行了聚類式數據挖掘的實驗。通過對多次不同數據和計算機集群規模的對比試驗,證明了在Hadoop分布式計算環境上部署數據挖掘任務的可行性,并通過加速比,效率,數據伸縮性和集群的可擴展性等方面的分析,驗證了該方案的計算優勢和發展潛力。
參考文獻:
[1]Jeremy Chow, Redpoll: A machine learning library based on hadoop,CS Dept. Jinan University, Guangzhou,2010