亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種面向混合型大數(shù)據(jù)處理系統(tǒng)的分區(qū)連接方法

文檔序號:6631914閱讀:296來源:國知局
一種面向混合型大數(shù)據(jù)處理系統(tǒng)的分區(qū)連接方法【專利摘要】本發(fā)明提供一種面向混合型大數(shù)據(jù)處理系統(tǒng)的分區(qū)連接方法,本發(fā)明提出的面向混合型大數(shù)據(jù)處理系統(tǒng)的分區(qū)連接方法,能夠滿足行業(yè)大數(shù)據(jù)針對不同處理系統(tǒng)的交互分析業(yè)務應用需求,并且通過分區(qū)、coprocessr和mapjoin,大大提高了此類分析的性能,并可以進一步應用于基于join的分組、統(tǒng)計、排序等交互分析。通過確定Hive查詢分區(qū),減少參與傳輸、緩存和join過程的數(shù)據(jù)量,并且充分利用分布式架構(gòu)優(yōu)勢,使所有節(jié)點的緩存過程并行執(zhí)行,通過在各節(jié)點緩存數(shù)據(jù),能夠加快join執(zhí)行效率,并且HBase表的數(shù)據(jù)量和節(jié)點數(shù)量能夠按需擴展?!緦@f明】一種面向混合型大數(shù)據(jù)處理系統(tǒng)的分區(qū)連接方法【
技術領域
】[0001]本發(fā)明涉及大數(shù)據(jù)【
技術領域
】,具體地說是一種面向混合型大數(shù)據(jù)處理系統(tǒng)的分區(qū)連接方法?!?br>背景技術
】[0002]針對行業(yè)大數(shù)據(jù)業(yè)務應用需求,面向數(shù)據(jù)密集型應用的計算框架和系統(tǒng)不斷出現(xiàn),這些系統(tǒng)僅針對各自的問題域提供解決方案。為了應對行業(yè)日益復雜的業(yè)務需求,需要在大規(guī)模集群或數(shù)據(jù)中心中綜合運用多種處理架構(gòu)來存儲和處理海量數(shù)據(jù)。因此,當前出現(xiàn)了混合型大數(shù)據(jù)處理系統(tǒng),融合了批處理、內(nèi)存計算、流處理、NoSQL數(shù)據(jù)庫等多種處理模式,如YARN架構(gòu),滿足行業(yè)大數(shù)據(jù)的實時處理、交互處理、高效檢索、深入數(shù)據(jù)挖掘和商業(yè)智能等多樣性和多維度需求,在實現(xiàn)資源調(diào)度和作業(yè)管理分離的基礎上,提供對計算、存儲和網(wǎng)絡等集群資源的統(tǒng)一監(jiān)控和分配,并解決當前單一數(shù)據(jù)處理系統(tǒng)普遍存在的管理節(jié)點單點失效和安裝部署困難等問題,在提高資源利用率的同時促進對大數(shù)據(jù)技術的全方位有效利用。[0003]在混合型大數(shù)據(jù)處理系統(tǒng)支持的處理模式中,由于MapReduce、Spark、HBase等都引入了新的編程模型,學習成本較大,因此,基于各類大數(shù)據(jù)處理系統(tǒng)構(gòu)建的交互分析應用最為廣泛。交互分析的模式和效果與傳統(tǒng)數(shù)據(jù)庫應用非常相似的,數(shù)據(jù)以表的形式存儲,應用層采用標準的SQL語句發(fā)起各種數(shù)據(jù)請求,支持對數(shù)據(jù)掃描、統(tǒng)計、聚合、多表關聯(lián)等操作的高并發(fā)、低延遲的處理。當前出現(xiàn)的基于MapReduce的Hive、基于Spark的Shark都屬于這一類交互分析引擎。然而,現(xiàn)有混合型大數(shù)據(jù)架構(gòu)中的交互分析引擎,還僅是針對單一的大數(shù)據(jù)系統(tǒng),無法實現(xiàn)跨系統(tǒng)的數(shù)據(jù)處理。例如,當前Hive與HBase中的數(shù)據(jù)無法直接建立關聯(lián),通常的做法是將進行一次數(shù)據(jù)遷移,在Hive或HBase單一系統(tǒng)中進行,在大量數(shù)據(jù)情況下造成的數(shù)據(jù)冗余以及傳輸延遲都是不可容忍的。為了實現(xiàn)混合型大數(shù)據(jù)架構(gòu)中各類處理系統(tǒng)的真正融合,需要研究跨異構(gòu)系統(tǒng)間的數(shù)據(jù)交互分析方法,其中比較重要的一種就是關聯(lián)join分析。【
發(fā)明內(nèi)容】[0004]本發(fā)明的目的是提供一種面向混合型大數(shù)據(jù)處理系統(tǒng)的分區(qū)連接方法。[0005]本發(fā)明的目的是按以下方式實現(xiàn)的,本發(fā)明提出的面向混合型大數(shù)據(jù)處理系統(tǒng)的分區(qū)連接方法,通過分區(qū)、coprocessr和mapjoin方法,大大提高了跨Hive和HBase系統(tǒng)的關聯(lián)分析性能,能夠滿足行業(yè)大數(shù)據(jù)針對混合處理系統(tǒng)的交互分析業(yè)務應用需求。[0006]面向混合型大數(shù)據(jù)處理系統(tǒng)基于HBase數(shù)據(jù)庫及基于內(nèi)存計算引擎的Hive系統(tǒng)構(gòu)建,交互查詢sql語句由客戶端發(fā)出,包括針對Hive表和HBase表的join操作,以及針對Hive表某個字段的過濾where條件。分區(qū)連接方法包括數(shù)據(jù)準備過程和運行時執(zhí)行過程。[0007]在數(shù)據(jù)準備階段,建立Hive表并按過濾字段分區(qū),按分區(qū)導入數(shù)據(jù);建立HBase表,將HBase表主鍵設計為同Hive表一直,并導入數(shù)據(jù)。[0008]在查詢執(zhí)行階段客戶端Driver解釋sql語句,編譯執(zhí)行計劃,在客戶端構(gòu)造內(nèi)存空間、線程池等用于驅(qū)動執(zhí)行的運行時環(huán)境。[0009]利用HBase的coprocessor引擎實現(xiàn)分區(qū)連接。Coprocessor是一個可構(gòu)建分布式服務編程模型,在HBaseMaster和Reg1nServer進程內(nèi)的運行時框架執(zhí)行用戶代碼,在HBase內(nèi)實現(xiàn)靈活、輕量級的分布式數(shù)據(jù)處理功能,并可以隨HBase自動擴展和負載均衡等。Coprocessor分為Observer和EndPoint,Observer可以監(jiān)聽HBaseGet,Put,Delete,Scan等數(shù)據(jù)操作,以及元數(shù)據(jù)和日志操作,可實現(xiàn)類似數(shù)據(jù)庫驅(qū)動器的功能;EndPoint屬于遠過程調(diào)用RPC類型的Coprocessor,客戶端通過調(diào)用PRC接口可按每個row/range的位置自動分片為多個并行的RPC調(diào)用,實現(xiàn)類似數(shù)據(jù)庫中存儲過程的功能。[0010]在分區(qū)連接方法中,客戶端調(diào)用HBase的Endpoint類型coprocessorServerCachingProtocal進行數(shù)據(jù)緩存。在ServerCachingProtocal的實現(xiàn)中,每個Reg1nServer調(diào)用Hive驅(qū)動查詢分區(qū)數(shù)據(jù),Hive引擎僅僅針對所需分區(qū)執(zhí)行查詢操作,返回結(jié)果后,以HashMap形式緩存在內(nèi)存cache中,并通知客戶端。[0011]客戶端Driver調(diào)用設定scan的類型為join,發(fā)出scan調(diào)用原語;每個Reg1nServer的Obesever型coprocessorreg1nseverScanObserver攔截該join請求,調(diào)用MapJoinScanner;MapJoinScanner執(zhí)行Hashjoin算法。針對在本Reg1nSever上掃描結(jié)果result中的每個tuple,判斷是否在cache中存在相同key的數(shù)據(jù),如有,貝U進行j1n處理;各個Reg1nServer將join結(jié)果返回客戶端。[0012]上述方法通過確定Hive查詢分區(qū),能夠大大減少參與數(shù)據(jù)傳輸、數(shù)據(jù)緩存和join過程的數(shù)據(jù)量,并且充分利用大數(shù)據(jù)系統(tǒng)的分布式架構(gòu)使所有節(jié)點的緩存過程同時并行執(zhí)行,減少處理延遲、避免緩存溢出。此外,通過在各節(jié)點緩存數(shù)據(jù),能夠加快join執(zhí)行效率,并且HBase表的數(shù)據(jù)量和節(jié)點數(shù)量能夠按需擴展。[0013]本發(fā)明的目的有益效果是:本發(fā)明提出的面向混合型大數(shù)據(jù)處理系統(tǒng)的分區(qū)連接方法,能夠滿足行業(yè)大數(shù)據(jù)針對不同處理系統(tǒng)的交互分析業(yè)務應用需求,并且通過分區(qū)、coprocessr和mapjoin,大大提高了此類分析的性能,并可以進一步應用于基于join的分組、統(tǒng)計、排序等交互分析。【專利附圖】【附圖說明】[0014]圖1是分區(qū)連接運行機制和處理過程圖。【具體實施方式】[0015]參照說明書附圖對本發(fā)明的作以下詳細地說明。[0016]以下將結(jié)合附圖及實施例來詳細說明本發(fā)明的實施方式,借此對本發(fā)明如何應用技術手段來解決技術問題,并達成技術效果的實現(xiàn)過程能充分理解并據(jù)以實施。需要說明的是,如果不沖突,本發(fā)明實施例以及實施例中的各個特征的相互均在本發(fā)明的保護范圍之內(nèi)。[0017]本發(fā)明以一個具體的執(zhí)行過程為例說明本系統(tǒng)的運行機制和處理過程。[0018]設有Hive系統(tǒng)的表hive_table,包括主鍵id,分區(qū)字段part,內(nèi)容字段value,HBase系統(tǒng)中表hbase—table,包括主鍵id,內(nèi)容字段value。對此執(zhí)行如下join查詢;selectid,a.value,b.valuefromhive_tableasajoinhbase_tableasbona.1d=b.1dwherea.part=’2,1.數(shù)據(jù)準備過程(1)建立Hive表并分區(qū),按分區(qū)導入數(shù)據(jù)。[0019]createtablehive—table(idint,valuestring)partit1nedby(partstring)storedasrcfile;fromdatasourcesinsertoverwritetablehive_tablepartit1n(part=“I,,)selectid,valuewherepart=“I,,insertoverwritetablehive_tablepartit1n(part=“2,,)selectid,valuewherepart=“2,,insertoverwritetablehive_tablepartit1n(part=“3,,)selectid,valuewherepart=“3,,;(2)建立hbase表并導入數(shù)據(jù);create‘hbase—table’,‘Cf’put^hbase—table’,’001’^cf:value^,’vf2.分區(qū)連接方法selectid,a.value,b.valuefromhive_tableasajoinhbase_tableasbona.1d=b.1dwherea.part=’2,分區(qū)連接的運行機制和處理過程,如圖1所示:(1)客戶端Driver解釋sql語句,編譯執(zhí)行計劃,在客戶端構(gòu)造內(nèi)存空間、線程池等用于驅(qū)動執(zhí)行的運行時環(huán)境;(2)客戶端調(diào)用ServerCachingProtocal進行數(shù)據(jù)緩存,在ServerCachingProtocal的實現(xiàn)中,每個Reg1nServer調(diào)用hive驅(qū)動查詢分區(qū)數(shù)據(jù),Hive引擎僅僅針對所需分區(qū)執(zhí)行查詢操作,返回結(jié)果后,以HashMap形式緩存在內(nèi)存cache中,并通知客戶端ServerCachecache=hashClient.addHashCache(“Hive,,,,,selectid,a.valuefromhive_tableasawherea.part=’2”,)(3)客戶端Driver調(diào)用設定scan的類型為join,發(fā)出scan調(diào)用原語(4)每個Reg1nServer的reg1nseverScanObserver攔截請求,判斷為join,調(diào)用MapJoinScanner,(5)MapJoinScanner執(zhí)行Hashjoin算法。即針對在本Reg1nSever上掃描結(jié)果result中的每個tuple,判斷是否在cache中存在相同key的數(shù)據(jù),如有,貝丨j進行j1n處理。[0020]for(TupletupleA:result)key=getkey(tupleA)tupleB=cache.get(key)!if(tupleB!=null)join(tupleA,tupleB)(6)各個Reg1nServer將join結(jié)果返回客戶端。[0021]上例partit1n方法與完全mapjoin方式相比,減少了數(shù)據(jù)傳輸量和參與join的數(shù)據(jù)量,避免了HBase端緩存溢出的可能性,處理性能提高1/3以上。[0022]除說明書所述的技術特征外,均為本專業(yè)技術人員的已知技術?!緳?quán)利要求】1.一種面向混合型大數(shù)據(jù)處理系統(tǒng)的分區(qū)連接方法,其特征在于,通過確定Hive查詢分區(qū),減少參與傳輸、緩存和join過程的數(shù)據(jù)量,并且充分利用分布式架構(gòu)優(yōu)勢,使所有節(jié)點的緩存過程并行執(zhí)行,通過在各節(jié)點緩存數(shù)據(jù),能夠加快join執(zhí)行效率,并且HBase表的數(shù)據(jù)量和節(jié)點數(shù)量能夠按需擴展,其中:1)在數(shù)據(jù)準備階段,建立Hive表并按過濾字段分區(qū),按分區(qū)導入數(shù)據(jù);建立HBase表,將HBase表主鍵設計為同Hive表一致,并導入數(shù)據(jù);2)在查詢執(zhí)行階段,客戶端Driver解釋sql語句,編譯執(zhí)行計劃,在客戶端構(gòu)造內(nèi)存空間、線程池用于驅(qū)動執(zhí)行的運行時環(huán)境;3)在分區(qū)連接方法中,客戶端調(diào)用HBase的Endpoint類型coprocessorServerCachingProtocal進行數(shù)據(jù)緩存,在ServerCachingProtocal的實現(xiàn)中,每個Reg1nServer調(diào)用Hive驅(qū)動查詢分區(qū)數(shù)據(jù),Hive引擎僅僅針對所需分區(qū)執(zhí)行查詢操作,返回結(jié)果后,以HashMap形式緩存在內(nèi)存cache中,并通知客戶端;4)客戶端Driver調(diào)用設定scan的類型為join,發(fā)出scan調(diào)用原語;每個Reg1nServer的Obesever型coprocessorreg1nseverScanObserver攔截該join請求,調(diào)用MapJoinScanner;MapJoinScanner執(zhí)行Hashjoin算法,針對在本Reg1nSever上掃描結(jié)果result中的每個tuple,判斷是否在cache中存在相同key的數(shù)據(jù),如有,貝U進行j1n處理;各個Reg1nServer將join結(jié)果返回客戶端;系統(tǒng)的運行機制和處理過程如下:設有Hive系統(tǒng)的表hive_table,包括主鍵id,分區(qū)字段part,內(nèi)容字段value,HBase系統(tǒng)中表hbase_table,包括主鍵id,內(nèi)容字段value,對此執(zhí)行如下join查詢;selectid,a.value,b.valuefromhive_tableasajoinhbase_tableasbona.1d=b.1dwherea.part=’2’1.數(shù)據(jù)準備過程(1)建立Hive表并分區(qū),按分區(qū)導入數(shù)據(jù);createtablehive_table(idint,valuestring)partit1nedby(partstring)storedasrcfile;fromdatasourcesinsertoverwritetablehive_tablepartit1n(part=“I,,)selectid,valuewherepart=“I,,insertoverwritetablehive_tablepartit1n(part=“2,,)selectid,valuewherepart=“2,,insertoverwritetablehive_tablepartit1n(part=“3,,)selectid,valuewherepart=“3,,;(2)建立hbase表并導入數(shù)據(jù)create‘hbase—table’,‘Cf’put^hbase—table’,’001’^cf:value^,’vf2.分區(qū)連接方法selectid,a.value,b.valuefromhive_tableasajoinhbase_tableasbona.1d=b.1dwherea.part=’2,分區(qū)連接的運行機制和處理過程:(1)客戶端Driver解釋sql語句,編譯執(zhí)行計劃,在客戶端構(gòu)造內(nèi)存空間、線程池等用于驅(qū)動執(zhí)行的運行時環(huán)境;(2)客戶端調(diào)用ServerCachingProtocal進行數(shù)據(jù)緩存,在ServerCachingProtocal的實現(xiàn)中,每個Reg1nServer調(diào)用hive驅(qū)動查詢分區(qū)數(shù)據(jù),Hive引擎僅僅針對所需分區(qū)執(zhí)行查詢操作,返回結(jié)果后,以HashMap形式緩存在內(nèi)存cache中,并通知客戶端;ServerCachecache=hashClient.addHashCache(“Hive,,,”selectid,a.valuefromhive_tableasawherea.part=’2”,)(3)客戶端Driver調(diào)用設定scan的類型為join,發(fā)出scan調(diào)用原語;(4)每個Reg1nServer的reg1nseverScanObserver攔截請求,判斷為join,調(diào)用MapJoinScanner;(5)MapJoinScanner執(zhí)行Hashjoin算法,即針對在本Reg1nSever上掃描結(jié)果result中的每個tuple,判斷是否在cache中存在相同key的數(shù)據(jù),如有,貝丨j進行j1n處理:for(TupletupleA:result)key=getkey(tupleA)tupleB=cache.get(key)!if(tupleB!=null)join(tupleA,tupleB)(6)各個Reg1nServer將join結(jié)果返回客戶端?!疚臋n編號】G06F17/30GK104346447SQ201410585204【公開日】2015年2月11日申請日期:2014年10月28日優(yōu)先權(quán)日:2014年10月28日【發(fā)明者】亓開元,盧軍佐,楊勇,辛國茂申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1