一種基于列存儲的大數(shù)據(jù)并行處理系統(tǒng)及方法
【專利摘要】一種基于列存儲的大數(shù)據(jù)并行處理系統(tǒng)及方法,涉及大數(shù)據(jù)處理領(lǐng)域,包括客戶端、主控節(jié)點和多個數(shù)據(jù)節(jié)點,所述主控節(jié)點包括HBase主控制器和SQL主引擎,HBase主控制器負責管理和維護所述數(shù)據(jù)節(jié)點,SQL主引擎負責SQL語句的解析并將SQL語句繼續(xù)向數(shù)據(jù)節(jié)點進行分發(fā);每個所述數(shù)據(jù)節(jié)點包括HBase分區(qū)節(jié)點和SQL從引擎,HBase分區(qū)節(jié)點負責每個數(shù)據(jù)節(jié)點上數(shù)據(jù)的存儲和管理,SQL從引擎負責SQL在該數(shù)據(jù)節(jié)點的解析和執(zhí)行,主控節(jié)點和數(shù)據(jù)節(jié)點均包括HBase表,還分別包括SQL表。本發(fā)明適合大規(guī)模數(shù)據(jù)量的環(huán)境,提供更完善的結(jié)構(gòu)化關(guān)系數(shù)據(jù)模型的SQL接口。
【專利說明】一種基于列存儲的大數(shù)據(jù)并行處理系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及大數(shù)據(jù)處理領(lǐng)域,具體來講是一種基于列存儲的大數(shù)據(jù)并行處理系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著移動互聯(lián)網(wǎng)、智能終端、物聯(lián)網(wǎng)、云計算以及智慧城市的普及,人們逐漸的進入了 “大數(shù)據(jù)”時代。大數(shù)據(jù)是規(guī)模非常巨大和復雜的數(shù)據(jù)集,數(shù)據(jù)量達到PB、EB或ZB的級別后,傳統(tǒng)數(shù)據(jù)庫管理工具處理起來面臨很多問題,比如說獲取、存儲、檢索和分析等。大數(shù)據(jù)引發(fā)了一些問題,如對數(shù)據(jù)庫高并發(fā)讀寫要求、對海量數(shù)據(jù)的高效率存儲和訪問需求、對數(shù)據(jù)庫高可擴展性和高可用性的需求,傳統(tǒng)數(shù)據(jù)庫以及數(shù)據(jù)倉庫技術(shù)顯得力不從心。
[0003]Hadoop是一個能夠?qū)Υ罅繑?shù)據(jù)進行分布式處理的開源軟件框架,Hadoop帶來了廉價的處理大數(shù)據(jù)的能力。Hadoop是一個龐大的生態(tài)系統(tǒng),為處理大數(shù)據(jù)提供了各種工具和平臺。在Hadoop生態(tài)系統(tǒng)中Hive扮演數(shù)據(jù)倉庫的角色,Hive的核心是將結(jié)構(gòu)化查詢語言接口轉(zhuǎn)化為MapReduce任務(wù),直接對Hadoop分布式文件系統(tǒng)上的保存的文件進行分析,由于文件沒有進行結(jié)構(gòu)化的組織,而MapReduce本身非常耗時,因此Hive在性能上通常無法滿足用戶需求。
[0004]HBase是一個高可靠性、高性能、可伸縮的、面向列存儲的分布式數(shù)據(jù)庫系統(tǒng),具有非常好的查詢性能和擴展性。HBase以表的形式存儲數(shù)據(jù),表由行和列族組成,每個列族(column family)又有若干列組成;HBase中可以有任意多個表,這由用戶決定,如表1所示,為一個HBase表,包括行主鍵(row key)和列族I,列族I中具有列I和列2。
[0005]表1
[0006]
【權(quán)利要求】
1.一種基于列存儲的大數(shù)據(jù)并行處理系統(tǒng),包括客戶端、主控節(jié)點和多個數(shù)據(jù)節(jié)點,其特征在于:所述主控節(jié)點包括HBase主控制器和SQL主引擎,HBase主控制器負責管理和維護所述數(shù)據(jù)節(jié)點,SQL主引擎負責SQL語句的解析并將SQL語句繼續(xù)向數(shù)據(jù)節(jié)點進行分發(fā);每個所述數(shù)據(jù)節(jié)點包括HBase分區(qū)節(jié)點和SQL從引擎,HBase分區(qū)節(jié)點負責每個數(shù)據(jù)節(jié)點上數(shù)據(jù)的存儲和管理,SQL從引擎負責SQL在該數(shù)據(jù)節(jié)點的解析和執(zhí)行,主控節(jié)點和數(shù)據(jù)節(jié)點均包括HBase表,還分別包括SQL表。
2.如權(quán)利要求1所述的基于列存儲的大數(shù)據(jù)并行處理系統(tǒng),其特征在于:所述SQL主引擎和SQL從引擎組成并行SQL查詢引擎,SQL主引擎和SQL從引擎之間的通信由其內(nèi)部會話完成。
3.如權(quán)利要求1所述的基于列存儲的大數(shù)據(jù)并行處理系統(tǒng),其特征在于:所述客戶端通過主控節(jié)點通信來訪問系統(tǒng)數(shù)據(jù)。
4.如權(quán)利要求1所述的基于列存儲的大數(shù)據(jù)并行處理系統(tǒng),其特征在于:所述HBase表中的元素是SQL表中元素的映射,其中SQL表的名稱不做任何變換映射為HBase表的名稱,SQL表中非主鍵的列映射為HBase中列族中的列,SQL表中的主鍵列映射為HBase中的行主鍵。
5.一種基于權(quán)利要求1所述系統(tǒng)的基于列存儲的大數(shù)據(jù)并行處理方法,其特征在于,包括如下步驟 : 51.客戶端發(fā)送一個SQL語句給主控節(jié)點; 52.主控節(jié)點解析所述SQL語句,判斷所述SQL語句是數(shù)據(jù)定義類型的語句還是數(shù)據(jù)操作類型的語句,若是數(shù)據(jù)定義類型的語句,進入S3,若是數(shù)據(jù)操作類型的語句,進入S4 ; 53.主控節(jié)點對SQL語句解析后,修改元數(shù)據(jù)信息并存放在列存儲的元數(shù)據(jù)表內(nèi);并將SQL語句映射到HBase表,并完成與SQL語句相應的操作;最后,主控節(jié)點通知各數(shù)據(jù)節(jié)點重新獲取元數(shù)據(jù)信息; 54.主控節(jié)點根據(jù)SQL語句的解析結(jié)果判斷涉及的范圍,若涉及索引的查找,則確定索引表的范圍;若涉及主表的查找,確定主表的范圍;根據(jù)所涉及表的確定的范圍,得出該SQL語句所涉及分區(qū)名字列表以及這些分區(qū)對應的分區(qū)節(jié)點的名字列表,將該SQL語句及分區(qū)名字列表逐個發(fā)送到對應的分區(qū)節(jié)點,進入S5 ; 55.每個數(shù)據(jù)節(jié)點收到該SQL語句及分區(qū)名字列表,為SQL語句所涉及的每個分區(qū)啟動一個線程,每個線程進行SQL語句解析以及對應的查詢和計算,執(zhí)行完成后匯總結(jié)果,將結(jié)果返回至主控節(jié)點; 56.所述主控節(jié)點對所有數(shù)據(jù)節(jié)點的結(jié)果進行合并操作,合并的結(jié)果返回給客戶端。
6.如權(quán)利要求5所述的基于列存儲的大數(shù)據(jù)并行處理方法,其特征在于:所述數(shù)據(jù)定義類型語句涉及創(chuàng)建表、創(chuàng)建索引、刪除表、刪除索引或修改表的處理;所述數(shù)據(jù)操作類型語句涉及數(shù)據(jù)插入、數(shù)據(jù)刪除、數(shù)據(jù)查詢的處理。
7.如權(quán)利要求5所述的基于列存儲的大數(shù)據(jù)并行處理方法,其特征在于:所述S3中,將SQL語句映射到HBase表,映射規(guī)則為:所述HBase表中的元素是SQL表中元素的映射,其中SQL表的名稱不做任何變換映射為HBase表的名稱,SQL表中非主鍵的列映射為HBase中列族中的列,SQL表中的主鍵列映射為HBase中的行主鍵。
8.如權(quán)利要求5所述的基于列存儲的大數(shù)據(jù)并行處理方法,其特征在于:所述確定索引表的范圍在HBase里表現(xiàn)為主表的主鍵的一個范圍,或者是索引表的主鍵的范圍:〈開始值,結(jié)束值〉;根據(jù)這個范圍計算出該SQL語句的操作是在哪個分區(qū)節(jié)點的分區(qū)上,計算結(jié)果是一系列分區(qū)節(jié)點的名字列表,以及該分區(qū)節(jié)點上涉及該SQL語句操作的分區(qū)。
9.如權(quán)利要求8所述的基于列存儲的大數(shù)據(jù)并行處理方法, 其特征在于:所述數(shù)據(jù)節(jié)點將接收到的分區(qū)信息記錄下來。
【文檔編號】G06F17/30GK103646051SQ201310616040
【公開日】2014年3月19日 申請日期:2013年11月27日 優(yōu)先權(quán)日:2013年11月27日
【發(fā)明者】郝俊瑞, 向智宇, 高漢松, 唐業(yè)祎, 郭嘉, 許德瑋, 王靜 申請人:武漢郵電科學研究院