張軍鵬 張蕾
[摘要]海量數(shù)據(jù)的持續(xù)劇增促成大數(shù)據(jù)時(shí)代的到來,如何在信息化浪潮中挖掘“數(shù)字石油”,將大數(shù)據(jù)轉(zhuǎn)換為大市場(chǎng)、大智慧和大生態(tài),是我們面臨的歷史機(jī)遇。大數(shù)據(jù)的質(zhì)量保障大數(shù)據(jù)的價(jià)值。而數(shù)據(jù)清洗的最終目的就是提高大數(shù)據(jù)的質(zhì)量,本文以Hadoop平臺(tái)為例介紹大數(shù)據(jù)中數(shù)據(jù)清洗并分析其處理框架。
[關(guān)鍵詞]大數(shù)據(jù) 數(shù)據(jù)清洗 Hadoop
無所不在的移動(dòng)設(shè)備、RFID、無線傳感器分秒都在產(chǎn)生數(shù)據(jù),數(shù)以億計(jì)的用戶互聯(lián)網(wǎng)服務(wù)時(shí)刻在產(chǎn)生巨大的信息交互。要處理的數(shù)據(jù)量越來越大,而且還將更加快速地增長,傳統(tǒng)的數(shù)據(jù)處理技術(shù)已經(jīng)無法應(yīng)付,大數(shù)據(jù)時(shí)代已經(jīng)來臨。充分利用和挖掘大數(shù)據(jù)價(jià)值,對(duì)于各行業(yè)提升用戶服務(wù)質(zhì)量,降低運(yùn)營成本有著重要意義。大數(shù)據(jù)的維度包含了數(shù)量、多樣性、速度、精確性等,在如此大維度中不可避免的存在著粗糙的、不合時(shí)宜的數(shù)據(jù),如何將這些非潔凈數(shù)據(jù)有效轉(zhuǎn)化成高質(zhì)量的干凈數(shù)據(jù),涉及到大數(shù)據(jù)中的數(shù)據(jù)清理工作。基于劣質(zhì)數(shù)據(jù)的數(shù)據(jù)決策不僅影響效率而且存在誤差,高效的數(shù)據(jù)清洗解決“非潔凈數(shù)據(jù)”的問題'從而保證了原始大數(shù)據(jù)的正確性和準(zhǔn)確性。大數(shù)據(jù)有類別繁多的典型特點(diǎn),同時(shí)處理速度快亦是大數(shù)據(jù)的鮮明特征,其包含大量在線或?qū)崟r(shí)數(shù)據(jù)分析處理的需求,要求時(shí)效性即1秒定律,這也給數(shù)據(jù)清洗帶來巨大的挑戰(zhàn)。
1.大數(shù)據(jù)環(huán)境下的數(shù)據(jù)清洗
目前被廣泛認(rèn)可的數(shù)據(jù)清洗定義為發(fā)現(xiàn)和清除數(shù)據(jù)中的錯(cuò)誤和不一致來提高數(shù)據(jù)的質(zhì)量,那么數(shù)據(jù)清洗的任務(wù)就是通過各種措施從準(zhǔn)確性、一致性、無冗余、符合應(yīng)用的需求等方面提高已有數(shù)據(jù)的質(zhì)量。大數(shù)據(jù)的數(shù)據(jù)清洗可以視作知識(shí)發(fā)現(xiàn)(KDD)的預(yù)備階段。
傳統(tǒng)數(shù)據(jù)信息主要產(chǎn)生于服務(wù)器或個(gè)人電腦,這些設(shè)備位置相對(duì)固定。隨著移動(dòng)終端的快速發(fā)展,手機(jī)、平板電腦、GPS等產(chǎn)生的數(shù)據(jù)量呈現(xiàn)爆炸式增長,且產(chǎn)生的數(shù)據(jù)帶有明顯的時(shí)空特性。要盡可能收集異源甚至是異構(gòu)的數(shù)據(jù),多角度驗(yàn)證數(shù)據(jù)的全面性和可信性,數(shù)據(jù)的篩選在質(zhì)與量之間需要考量權(quán)衡。
產(chǎn)生數(shù)據(jù)質(zhì)量問題的原因很多,導(dǎo)致大數(shù)據(jù)中存在質(zhì)量問題,如數(shù)據(jù)的數(shù)值重復(fù)、缺失、數(shù)據(jù)的噪聲和異常值。數(shù)據(jù)清洗是一個(gè)非常復(fù)雜的任務(wù),并且包含著一些互相關(guān)聯(lián)的問題。一方面轉(zhuǎn)換必須盡可能具有通用性,而且不依賴大量的編程工作,也就是支持在多領(lǐng)域內(nèi)的多種錯(cuò)誤檢測(cè)算法;另一方面,系統(tǒng)需要支持一種簡單的接口定義來進(jìn)行錯(cuò)誤檢測(cè)和數(shù)據(jù)轉(zhuǎn)換。因此,需要在現(xiàn)有的算法和功能基礎(chǔ)上,設(shè)計(jì)相應(yīng)的數(shù)據(jù)清洗系統(tǒng),使它具有相對(duì)的通用性和可交互性。通用性的主要實(shí)現(xiàn)技術(shù)有數(shù)據(jù)標(biāo)準(zhǔn)化、術(shù)語化、通用的接口標(biāo)準(zhǔn),即通用的過程描述語言,通用的數(shù)據(jù)結(jié)構(gòu)以支持用戶進(jìn)行擴(kuò)展??山换バ灾С钟脩敉ㄟ^系統(tǒng)反饋的檢測(cè)統(tǒng)計(jì)圖表,實(shí)時(shí)地修改轉(zhuǎn)換過程,避免用戶與系統(tǒng)的隔離。
2.Hadoop大數(shù)據(jù)核心架構(gòu)
Hadoop之所以在大數(shù)據(jù)處理應(yīng)用中得到廣泛應(yīng)用,得益于其自身在數(shù)據(jù)提取、變形和加載(ETL方面上的天然優(yōu)勢(shì)。Hadoop的分布式架構(gòu),將大數(shù)據(jù)處理引擎盡可能的靠近存儲(chǔ)。
Hadoop由節(jié)點(diǎn)元素組成,主要包括NameNode節(jié)點(diǎn)和DataN-ode節(jié)點(diǎn)。NameNode節(jié)點(diǎn)負(fù)責(zé)管理文件系統(tǒng)名稱空間和控制外部客戶機(jī)的訪問。決定是否將文件映射到DataNode上的復(fù)制塊上,位于HDFS的頂端。DataNode節(jié)點(diǎn)是Hadoop集群的計(jì)算節(jié)點(diǎn),通常以機(jī)架的形式組織,機(jī)架通過一個(gè)交換機(jī)將所有系統(tǒng)連接起來。
3.Hadoop大數(shù)據(jù)中數(shù)據(jù)清洗模型分析
大數(shù)據(jù)處理平臺(tái)Hadoop及其Map-Reduce框架廣泛應(yīng)用于數(shù)據(jù)密集領(lǐng)域,Map-Reduce框架被廣泛使用,特別是TB級(jí)及以上數(shù)據(jù)處理方面有其獨(dú)特的優(yōu)勢(shì),由Map和Reduce函數(shù)組成,越來越多的ETL清洗過程都在使用Map-Reduce框架編程模式,需要對(duì)其運(yùn)行機(jī)制、算法、性能優(yōu)化、編程框架設(shè)計(jì)進(jìn)行開發(fā)定制。實(shí)現(xiàn)一個(gè)通用性比較強(qiáng)的Map-Reduce程序比較困難,由于各種數(shù)據(jù)源的復(fù)雜性和需求的不確定性,實(shí)際應(yīng)用中都存在大量的重復(fù)開發(fā),并沒有這樣減少開發(fā)的設(shè)計(jì)框架提出。
基于Hadoop的數(shù)據(jù)清洗框架設(shè)計(jì)思路基于使用Hadoop提高數(shù)據(jù)清洗性能,封裝隱藏Map-Reduce程序開發(fā)的復(fù)雜性,這對(duì)不熟悉Hadoop的開發(fā)人員起到很大的幫助。設(shè)計(jì)框架具備良好的可擴(kuò)展性,提高開發(fā)效率,提供配置文本,使得多路輸出分配到不同的HDFS目錄中,方便建立Hive分區(qū)表。
數(shù)據(jù)清洗使用了Map-Reduce數(shù)據(jù)流,在數(shù)據(jù)清洗的數(shù)據(jù)流中Map階段是核心。Map函數(shù)采用XML配置,相應(yīng)的清洗類動(dòng)態(tài)獲取、清洗規(guī)則設(shè)置,將數(shù)據(jù)從原始狀態(tài)清洗出來,并格式化為結(jié)構(gòu)化數(shù)據(jù)。Partitioner數(shù)據(jù)分區(qū)同樣在Map-Reduce框架設(shè)計(jì)中特別重要,其任務(wù)是分發(fā)Map端的輸出數(shù)據(jù)作為Reducer端的輸入數(shù)據(jù),如果處理不好,會(huì)造成Reducer端的數(shù)據(jù)不均勻,導(dǎo)致有些Re-duce任務(wù)運(yùn)行慢,進(jìn)而影響整體速度。Reduce的主要目的是將數(shù)據(jù)清洗的結(jié)果多路輸出到相應(yīng)的目錄,如果只需要將結(jié)果分配的單一目錄,可以不用Reducer更能提高性能。
目前對(duì)Hadoop的研究和使用已經(jīng)有了相應(yīng)的基礎(chǔ)和積累,但是對(duì)Map-Reduce框架理解和應(yīng)用不盡理想,利用Map-Reduce設(shè)計(jì)的軟件系統(tǒng)效率不高。本文對(duì)Map-Reduce編程框架的進(jìn)一步設(shè)計(jì)分析,以求達(dá)到優(yōu)化的目的。