公懷予,徐勁松,王攀
(1.中國電信股份有限公司濟源分公司,河南 濟源 454650;2.南京郵電大學,江蘇 南京 210003)
一種關聯感知的大數據導入方法
公懷予1,徐勁松2,王攀2
(1.中國電信股份有限公司濟源分公司,河南 濟源 454650;2.南京郵電大學,江蘇 南京 210003)
針對現有數據庫向大數據遷移的背景,Apache推出了Sqoop作為關系數據庫向大數據遷移的主要工具。Sqoop簡單地將數據表切分并隨機存儲到不同的節(jié)點上。針對Hadoop的這種存儲方式帶來的關系查詢的低效率問題,設計了一種關聯度感知的數據導入預處理方法。將關聯度較高的表盡量存儲在相鄰的虛擬機節(jié)點,以降低關聯數據查詢帶來的網絡傳輸時延,提高系統的性能。對比實驗表明,將關聯性較強的數據表存放在相同或相鄰節(jié)點上,可以成倍提高數據查詢的性能。
大數據;Sqoop;Hadoop;NoSQL
大數據從最初為Google、Facebook等公司解決大量數據的存儲問題,到現在被越來越多的企業(yè)應用。目前,對于大數據的解決方案,主要有商業(yè)解決方案和Hadoop生態(tài)系統解決方案兩種。商業(yè)解決方案具有使用方便、集成度高以及性能穩(wěn)定的特點。但Hadoop生態(tài)系統多樣、靈活、高擴展性等優(yōu)勢吸引了中小企業(yè)的注意并成為其主要的大數據解決方案。
大數據應用中,數據主要源于互聯網和已有的結構化數據兩者。其中,互聯網數據催生了各種各樣的大數據創(chuàng)新應用。而結構化數據是已有應用的保障,在我國,7成以上的大數據來源都是結構化數據[1]。為了實現關系型數據倉庫向大數據的遷移,Apache提供了 Sqoop[2]工具,以協助傳統的關系型數據庫管理系統 (relational database management system,RDBMS)與Hadoop之間進行高效的大數據交流。
實踐發(fā)現,在使用Sqoop導入Hadoop的過程中,初始的設定將會把一張表切分成4等分,再使用mapper通過JDBC將數據導入NoSQL (如 HDFS、HBase等),而這些mapper會根據Hadoop的工作配置,隨機地存儲在被啟動空間的節(jié)點上,當數據庫應用中的查詢語句中包含join語法時,需要將兩個表中的相應字段進行合并,這時候數據的傳輸需要通過網絡傳輸來完成。考慮到網絡傳輸會比直接在硬盤上讀取數據慢了很多,本文提出一種稱為基于關聯感 知 Sqoop(association-based Sqoop,AB_Sqoop)的數 據導入算法,通過數據表關聯性分析的方法對關系數據庫進行預處理,在數據導入的過程中,將相關性較高的數據表盡量存放在同一硬盤或相鄰節(jié)點,以減少數據的網絡傳輸,加速大數據應用的整體性能。
由于現在的企業(yè)環(huán)境中有著大量的結構化數據,這些數據并不能簡單地使用MapReduce來處理,因此需要建立一種不更改復雜的Hadoop架構的機制來處理結構化數據[3,4]。大多數的 NoSQL 查詢語句使用 Hive 來作為 SQL 到MapReduce的翻譯工具,但很多論文提到 Hive[5]所翻譯出的MapReduce并不是很有效率。參考文獻[6]提出將整個查詢語句根據其關聯性將不必要的join進行合并,以減少非必要的join操作,大大降低了查詢所需要的時間,這種做法在2012年被Hive合并。
由于join是數據庫中常見的耗時操作,許多的研究都針對join操作的優(yōu)化進行探索,參考文獻[7]在reduce階段將中間產物重新分區(qū)并復制給其他已經完成的節(jié)點上以加速運算,參考文獻[8]使用MapReduce的簡化join模型,參考文獻[9]使用MapReduce模型的自然延伸加入過濾動作,使MapReduce先使用邏輯過濾來省略中間而讓整個完成時間減少。

圖1 基于關聯感知的Sqoop導入基本流程
基于關聯感知的Sqoop導入的流程如圖1所示,第一步是分析數據庫的日志,根據數據表之間的關聯查詢的數目獲得數據表之間的關聯性,第二步是考慮數據表的大小,計算獲得數據表之間關聯度的關系效用,最后查表獲得數據表之間的關聯度,再根據這個關聯度導入Hadoop環(huán)境中。
關系數據庫中的日志記錄了數據庫中的所有操作,包括數據庫的設定、數據的修改以及查詢。設計關系數據庫的日志的目的是在數據庫發(fā)生問題的時候,可以通過查詢日志的方式解決問題。
由于關系數據庫的日志記錄了數據庫查詢的記錄,因此發(fā)生的關聯查詢也會在日志中體現,因此,分析數據庫日志可以獲得關系數據庫之間表的關聯性,比如表1與表2之間產生的關聯查詢?yōu)?5次,則該兩表之間的關聯性記為15。且記表n與表n之間的關聯性為0。將這些關聯性通過一個二維表可以將其列出,記該表為table association(TA)。
除了考慮表之間的關聯性以外,還需要考慮數據表的大小問題。這是因為當兩張表的關聯性非常大,但其大小相對于數據庫中其他的表很小的情況下,將兩張表放在一起與否,并不能對關聯查詢的性能起到很好的作用。這是因為,Hadoop在執(zhí)行任務的時候,會在數據量比較大的節(jié)點上發(fā)起任務,通過這樣的手段減少網絡傳輸,從而提高執(zhí)行的效率。
同樣,將數據庫中的表兩兩比較,選出較小的表作為代表,形成一個二維列表TS(table size)。如表1的大小是10 MB,而表2的大小是30 MB,則表1行與表2列的數據記錄為10,同樣,記表n與表n之間的大小記錄為0。
關系效用(effective association)使用 TA和 TS對應的位置兩兩相乘即可得出,即求TA與TS的點積:

從TA與TS的生成可以看出,TAT=TA,且TST=TS,由式(1)同樣可以得出ECTT=ECT。
由于ECT是一個對稱矩陣,因此可以從主對角線取其上半部分,也就是說將ECT的下半部分都記為0,得到ECT'。實際上由于TA與TS都對稱,在計算之初就可以將其下半部分取0,得到TA'和 TS'。即:

考慮到需要將關系效用最大的表盡量存放到一起,因此,首先需要明確每個虛擬機(VM)能存放的表的分片(table split)的大小,該容量限制記為 CA(capacity),則導入的流程如下:
步驟1 將ECT'中的每行取CA-1個較大的值相加為St;
步驟2 取St中最大的為Smax,并首先將Smax組成的表首先導入,并將Smax組成的表標示為已導入;
步驟3 如果剩余表的數量大于CA,則重復步驟1、步驟 2;
步驟4 將剩余的表做最后一次導入。
為了驗證算法的有效性,在步驟2中引入變量數據位置(data locality,DL)。在這一步驟的導入過程由于數據存放在相同節(jié)點,因此可以理解為這些數據的關聯查詢不需要網絡傳輸。假設Smax的組成為第 n行上的i、j、k……列,則該DL的值為:

由式(3)可知,DL的值包括了所有需要標記為已導入的表的效用關系量,該值累加得到最后的DL值。當DL值越大,則意味著所需要的網絡傳輸數據越小。
Sqoop導入的算法描述如下。
算法 基于感知度的Sqoop導入算法
輸入 ECT':關系效用表
n:數據庫表的數量
CA:每一個節(jié)點可以存儲的數據表分片的數量
DL=0 :初始化DL值
P=1
輸出 數據表位置的集合{S1,S2,…,Sβ},β=n/CA

由以上算法可知,該算法拆解部分的時間復雜度為n2,而總共需要完成n/CA次循環(huán),則總的時間復雜度為n3/CA。
模擬實驗主要以原始的Sqoop與使用了基于關聯感知的Sqoop對DL值進行模擬比較。
首先定義模擬實驗的相關數據如下。
· 數據表大小:1~10 GB,指一個表的隨機大小值。
· 數據表關聯性:1~1 000,指模擬數據庫日志中的關聯查詢書目。
· 節(jié)點容量:2~50,指節(jié)點能夠存儲數據表分片的上限。
· 表的數目:20~300,指數據庫中表的數量。
· 節(jié)點數目:20~100,指數據節(jié)點的數量。
如圖2所示,當取數據表的數目為100、節(jié)點容量為20、表的大小取隨機1~10 GB、關聯性取隨機1~500的時候,隨著節(jié)點數目的變化,其DL值的變化。
從圖2可知,當數據節(jié)點很少的時候,使用關聯感知導入的效率并不占優(yōu),但隨著節(jié)點數目的變大,該算法的DL值的變化比較穩(wěn)定,而原始Sqoop會隨著節(jié)點數目變大,其DL值不斷變小。從第2.4節(jié)的分析可知,由于數據隨機存放在不同節(jié)點,因此,數據查詢的性能不斷降低,到了節(jié)點數為100的時候,關聯感知算法的性能達到了傳統算法的397%。
實測環(huán)境使用Apache Ambari工具在實驗室局域網環(huán)境下搭建一個Hadoop集群,15臺PC,其中1臺為master節(jié)點,14臺為 slave節(jié)點。安裝Hive、MapReduce和Sqoop。為了凸顯網絡傳輸對性能的影響,將PC的網絡傳輸調為10 Mbit/s共享。使用蘇州銳創(chuàng)公司的運營Oracle數據庫作為導入的數據源,該數據源數據241 MB,分別進行傳統的Sqoop導入和AB_Sqoop導入,使用join操作進行關聯查詢,其實驗結果如圖3所示。
從圖3可知,當數據查詢參與的數據表變多的時候,查詢的時間相對增大,而AB_Sqoop基本維持在Sqoop的一半時間,即使用AB_Sqoop能提高一半以上的性能。

圖2 不同節(jié)點數的數據距離

圖3 join操作的時間
基于Hadoop構建大數據的分析平臺是目前中小企業(yè)的共同選擇。在傳統的關系數據庫導入大數據平臺時,雖然Apache提供了Sqoop工具供數據的導入導出,但由于設計思想和數據查詢的方式不同,傳統的關系查詢應用會產生不利的影響,特別是join操作會激起消耗運算資源。本文的分析和實驗證明:將關聯性較大的數據表存放到相同節(jié)點或相鄰節(jié)點的做法可以有效地避免網絡傳輸帶來的性能影響。下一步需要進行的工作是考慮HDFS中數據副本對導入Hadoop后性能的影響。此外算法中節(jié)點容量上限的定義雖然簡化了節(jié)點存儲的問題,但實際情況中導入數據庫的過程不可能有一個空置的大數據平臺給用戶使用,需要更進一步考慮每個節(jié)點擁有的容量。
[1]中 國 大 數 據 發(fā) 展 調 查 研 究 結 果 [EB/OL].(2015-07-29)[2015-09-01].http://zhishi.moojnn.com/?/article/262.Research reportofChina big data development [EB/OL].(2015-07-29)[2015-09-01].http://zhishi.moojnn.com/?/article/262.[2] Apache Sqoop[EB/OL].[2015-09-01].http://sqoop.apache.org/.
[3]BALMIN A,KALDEWEY T,TATA S.Clydesdale:structured dataprocessingonHadoop [C]// 2012ACM SIGMOD International Conference on Management of Data,May 20-24,2012,Scottsdale,AZ,USA.New York:ACM Press,2012:705-708.
[4]BALMIN A,KALDEWEY T,TATA S.Clydesdale:structured dataprocessingon MapReduce [C]//2012 International Conference on Extending Database Technology,March 27-30,2012,Berlin,German.New York:ACM Press,2012:15-25.
[5]THUSOO A,SARMA J S,JAIN N,et al.Hive- a warehousing solution over a MapReduce framework [J].PVLDB,2009,2(2):1626-1629.
[6]LEE R B,LUO T,HUAI Y,et al.YSmart:yet another SQL-to-MapReduce translator[C]//2011 International Conference on Distributed Computing Systems, June 20-24, 2011,Minneapolis,Minnesota,USA.New Jersey:IEEE Press,2011:25-36.
[7]LYNDEN S,TANIMURA Y,KOJIMAL,et al.Dynamic data redistribution for MapReduce joins[C]//2011 IEEE International Conference on Coud Computing Technology and Science,November 29-December 1,2011,Athens,Greece.New Jersey:IEEE Press,2011:717-723.
[8] ALPER O,MIREK R.Processing theta-joins using MapReduce[C].//2011 ACM SIGMOD International Conference on Management of Data,June 12-16,2011,Athens,Greece.New Jersey:IEEE Press,2011:949-960.
[9]JIANG D W,TUNG A K H,CHEN G.Map-join-reduce:toward scalable and efficient data analysis on large clusters [J].IEEE Transactions on knowledge and Data Engineering,2011,23(9):1299-1311.
An associated perception import method for big data
GONG Huaiyu1,XU Jinsong2,WANG Pan2
1.Jiyuan Branch of China Telecom Co.,Ltd.,Jiyuan 454650,China 2 Nanjing University of Posts and Telecommunications,Nanjing 210003,China
Against the background of the existing database to the large data migration,Apache introduced the Sqoop as the main tool for the relational database to the big data migration.Sqoop simply cut the data table and randomly store it on diffe rent nodes.Being aimed at the problem of low efficiency of the query of the relationship between the Hadoop,a method of data importing and preprocessing was designed.To reduce the network transmission delay and improve the performance of the system,the high correlation degree was kept in the adjacent nodes.The contrast experiment shows that the performance of the data query can be improved greatly by the same or adjacent nodes.
big data,Sqoop,Hadoop,NoSQL
s:Jiangsu Province Project of Natural Science Foundation(No.BK2009426),Jiangsu Province Education Project of Natural Science Foundation(No.14KJD520005),2013 Six Talent Peaks Project in Jiangsu Province,2013 Information Security Special Funds of the National Development and Reform Commission,State Grid 2014 Science and Technology Project:Research and Application of Network Traffic Prediction and Smart Pipe Key Technologies for Electric Power Information Communication Network,2015 Industrialization,Education and Research Joint Prospective Project (No.BY2015011-02)
TP393
A
10.11959/j.issn.1000-0801.2016044
2015-09-01;
2015-12-20
江蘇省自然科學基金資助項目(No.BK2009426);江蘇省高校自然科學基金資助項目(No.14KJD520005);2013江蘇省六大人才高峰計劃基金資助項目;2013國家發(fā)展和改革委員會信息安全專項基金資助項目;國家電網公司2014年科技項目:電力信息通信網絡流量預測和管理智能化關鍵技術研究及其應用;2015江蘇省產學研前瞻性聯合研究項目(No.BY2015011-02)

公懷予(1973-),男,中國電信股份有限公司濟源分公司工程師、總經理,主要研究方向為大數據分析和流量經營。

徐勁松(1974-),男,博士,南京郵電大學通達學院副教授、教研室主任,主要研究方向為信息安全、云計算及大數據應用。

王攀(1979-),男,南京郵電大學副研究員,主要研究方向為大數據分析和流量經營。