徐金玲,金 璐,李昆明,熊 政,仲春林,方 超(.江蘇省南京供電公司,江蘇南京,0008;.江蘇方天電力技術有限公司,江蘇南京,0)
基于Hadoop平臺的海量數據高效抽取方法及應用
徐金玲1,金 璐1,李昆明2,熊 政2,仲春林2,方 超2
(1.江蘇省南京供電公司,江蘇南京,210008;2.江蘇方天電力技術有限公司,江蘇南京,211102)
本文從數據抽取過程的本質出發,論述了傳統數據抽取過程與大數據平臺數據抽取過程的異同,以基于Hadoop的大數據平臺為例,結合傳統的關系型數據庫和非關系型數據庫(NoSQL)的特點,提出了一種從關系型數據庫到大數據平臺的高效數據抽取方法,實現了對數據源系統資源占用的最小化,并在電力公司用電大數據抽取中得到廣泛應用。
海量數據;數據抽?。籒oSQL;大數據平臺
對于大數據的抽取,一般通過使用Sqoop來實現。但是Sqoop組件自身的局限性導致其對于特定的場景并不適用(例如,進行TB級大數據量數據抽取時效率較低,進行增量數據抽取需改變源數據庫表結構,對源數據庫性能也有較大影響)。因此,本文提出了基于大數據平臺的一種海量數據抽取的高效方法,該方法可以快速、高效、可靠地將海量數據從關系型數據庫抽取到大數據平臺中。同時,由于通過對數據源日志文件的分析實現對增量數據的抽取,因此該方法在抽取數據時對源數據庫的影響非常小。
系統開發環境采用CentOS 6.5操作系統,以Cloudera CDH 5.0為大數據平臺框架,并結合Tomcat作為Web Server。集群由20臺服務器組成,劃分為2個機架,每臺服務器配置32核CPU、64GB內存和10塊磁盤。Cloudera是全球領先的Hadoop服務提供商,其CDH 5.0是最新的Hadoop發行版,提供了高度的穩定性和使用便捷性。數據源采用Oracle數據庫,抽取工具采用Golden Gate。

圖1 . 系統技術架構
2.1技術架構
系統以Oracle為數據源,以CDH 5.0為大數據平臺框架,結合Tomcat作為Web Server提供Web層的訪問服務。在大數據平臺中,以MapReduce作為大數據的計算引擎,以HDFS分布式文件系統存儲非結構化和半結構化的數據,以HBase分布式數據庫存儲結構化數據。在Oracle端,采用Golden Gate提取源數據。
(1)利用Golden Gate提取變化數據。Golden Gate可實現秒級的數據捕捉、轉換和投遞,提供了一種基于日志的結構化數據復制方式,可以從在線日志中準實時地抓取變化的數據,并將變化的數據保存在Trail格式的文件中。其優勢在于通過對日志文件的分析實現變化數據的抓取只會占用很小的系統資源,特別是當Oracle中存儲的數據量極大、Oracle系統負載很重時基本不會影響Oracle的運行效率。
(2)在大數據平臺實現數據的清洗、轉換和存儲。對于Golden Gate提取出的數據,首先將其以半結構化的數據形式存儲在HDFS中,然后根據規則對數據進行清洗和轉換、過濾異常數據,并轉換成更適合HBase存儲的格式。為了加快數據裝載到HBase的速度,采用了批量導入(Bulkload)數據的方式,即利用MapReduce并行計算引擎直接生成HBase能夠識別的HFile文件,大大縮短了數據入庫的時間。
(3)使用Tomcat作為Web Server提供Web層的訪問服務。由于Oracle和CDH大數據平臺處于兩個不同的集群中,因此以Web服務作為中間通道可以方便地連接這兩個集群,例如在集群間傳遞指令、查詢并展現集群中的數據等。
2.2抽取流程
對于存儲在關系型數據庫中的數據,被抽取出來后最終將被存儲在NoSQL(以HBase為例)數據庫中。我們的思路是,將關系型數據庫中的數據首先抽取出來并以中間格式(如Text File)導入到大數據平臺后,再將其導入到NoSQL數據庫中。當將數據從Oracle以中間格式文件的形式導出后,按照一定的策略將其導入到HBase中。
數據抽取流程可細分為三個部分,分別為利用Golden Gate提取數據、用MapReduce并行計算引擎加快處理速度、將數據裝載進HBase。
1843年7月22日,《中英五口通商章程》在香港公布實施。章程對中英貿易過程中船鈔的標準、納稅、驗貨、計量及貨船擔保等都做了詳細的約定。其中,章程第六條明確規定:“凡系進口、出口貨物,均按新定則例,五口一律納稅,此外各項規費絲毫不能加增。其英國商船運貨進口及販貨出口,均須按照則例,將船鈔、稅銀悉數輸納全完,由海關給發完稅紅單,該商呈送英國管事官驗明,方準發還船牌,令行出口?!?/p>

圖2 . 數據抽取流程圖
2.2.1使用Golden Gate提取數據
利用Golden Gate解析Oracle的日志文件,提取出初始數據及發生變化的增量數據。Golden Gate并沒有提供對Hadoop集群的直接支持,但是提供了將Trail文件解析為平面文件(Flat File)的功能。而平面文件是可以被Hadoop識別的。Oracle中數據的變化情況一般可以分為三類:插入數據、更新數據和刪除數據。因此,對于這三類情況,我們在解析Oracle的變化數據時,將這三類數據分別解析到各自的文件中,例如用后綴I代表插入的數據(Insert),用后綴D代表刪除的數據(Delete),用U代表更新的數據(Update)。
2.2.2利用MapReduce引擎加快處理
由于導出的原始數據往往非常大,如果繼續使用傳統的串行方法進行數據裝載,那么裝載過程將會很漫長。因此,我們使用Hadoop大數據平臺的MapReduce并行計算框架,來加速裝載抽取出的數據。MapReduce計算框架將輸入的數據分為多個塊(block)存儲在多個計算節點上,每個節點只計算本節點上的數據。在每個節點的計算完成之后,將結果輸出到MapReduce框架中。MapReduce框架自動匯聚(Aggregate)這些數據并進行排序,最后將最終的結果輸出到HDFS中。在這一過程中,多個節點的計算過程是同時進行的,因此整個計算與串行計算相比,速度會大大提高,且計算的時間將與計算節點的數量成反比。
2.2.3使用Bulkload裝載數據
NoSQL數據庫可以存儲相當大的數據,但是如果采用單客戶端來加載數據,則吞吐量會受到單機的帶寬及磁盤等硬件的限制。此外,NoSQL數據庫往往采取復雜的機制來保證數據的健壯性及一致性,數據的寫入會經歷一個復雜而耗時的過程。例如,HBase在寫入數據時,會首先將數據寫入預寫日志文件(WAL,Write-Ahead Log),然后將數據寫入到緩存區域(MemStore)中,等到緩存區域滿了之后才將其中的數據一次性地寫入到磁盤里。因此,為了加快數據導入的速度,我們一方面采用多節點并行寫入,另一方面直接生成HBase數據的存儲格式文件,即采取批量導入(Bulkload)的方法來裝載數據。

表1.串行數據裝載與并行批量導入數據比較
基于上述的架構思想與流程,開發并實現了一套大數據平臺數據抽取系統,用于對江蘇全省用戶用電數據的抽取。該系統以Cloudera CDH為大數據平臺的基礎支撐軟件,以Oracle為數據源,實現了每日自動將Oracle數據庫中的全省用戶用電的數據抽取并存儲到大數據平臺的HBase中。該系統的集群由20個節點構成,劃分為2個機架,每個節點配置32核CPU、64GB內存和10塊磁盤。開發環境基于Eclipse,程序代碼為Java,上層數據的查詢與展現采用了Restful API,可以在瀏覽器中方便地發出查詢數據的指令、實時地獲取查詢結果并展現在瀏覽器中。
在系統實現的過程中,采用了Golden Gate基于日志文件提取數據的方式,大大減少了數據抽取本身對數據源系統帶來的額外負擔,減少了數據抽取對原系統的影響。同時,針對HBase分布式文件系統的特點,采取了一些優化措施,如科學設計數據的Rowkey、合理規劃Region的分布、避免寫入WAL、規避數據熱點等,充分地體現了分布式數據庫在存儲容量、響應速度和數據可靠性上的優勢,為電力公司用電大數據提供了堅實的技術保障。
大數據平臺上的數據抽取面臨著數據量大、數據格式異構程度大、需要分布存儲等難點和挑戰。針對這些難點,提出了解決大數據平臺數據抽取的新方法,并開發了一套基于Cloudera CDH的系統,實現了大數據平臺海量用電數據的高效抽取。該系統采用Golden Gate從數據源提取數據,大大減少了抽取數據對數據源系統的影響,同時采用Bulkload方式導入數據,提高了裝載海量數據的速度。作為電力行業的一個典型應用,該系統較好地體現了利用大數據平臺抽取用電數據的優勢,為在大數據平臺上展開針對電力行業大數據的進一步研究提供了技術基礎。
[1] 俞立平.大數據與大數據經濟學[J].中國軟科學,2013,(7):177-183.
[2] 谷海彤.地區電力調度數據倉庫建模與數據處理[J].電力自動化設備,2006,26(10):49-53,106.
[3] 萇程,李善平.基于ETL的金融數據集成過程模型[J].計算機工程與設計,2010,31(9):2070-2072,2104.
[4] Lars George.HBase:The Definitive Guide.O’Reilly Media,2011.
Method and application of efficient extraction of mass data based on Hadoop platform
Xu Jinling1,Jin Lu1,Li Kunming2,Xiong Zheng2,Zhong Chunlin2,Fang Chao2
(1.Jiangsu Nanjing power supply company,Jiangsu Nanjing,210008;2.Jiangsu Fangtian Power Technology Co. Ltd.,Jiangsu Nanjing,211102)
This article from the essence of data extraction process,discusses the similarities and differences between traditional data extraction process and the data platform,data extraction process,the data platform based on Hadoop as an example,combining the traditional relational database and non relational database(NoSQL)characteristics,proposes a from relational database to efficient data extraction method of data platform,thereby minimizing the occupancy of the data source of the system resources, and the power companies in large data extraction has been widely applied in.
data;data extraction;NoSQL;data platform
徐金玲(1982-),女,江蘇南京人,碩士,工程師,長期從事電網營銷智能化業務管理工作。
金璐(1985-),女,江蘇泰興人,本科,助理工程師,長期從事電網營銷智能化業務管理工作。
李昆明(1984-),男,黑龍江安達人,本科,助理工程師,從事電力軟件開發與設計工作。
熊政(1976-),男,江西南昌人,本科,工程師,長期從事電力軟件開發管理工作。
方超(1985-),男,江蘇句容人,大專,助理工程師,從事電力軟件開發與設計工作。
仲春林(1981-),男,江蘇興化人,本科,工程師,從事電力軟件開發與設計工作。