国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

實(shí)現(xiàn)快速實(shí)時(shí)處理的一種新數(shù)據(jù)庫(kù)Kudu

2019-11-12 12:01李敏虞金中
電腦知識(shí)與技術(shù) 2019年25期
關(guān)鍵詞:大數(shù)據(jù)

李敏 虞金中

摘要:針對(duì)快速變化的數(shù)據(jù),目前的數(shù)據(jù)庫(kù)還無(wú)法做到快速處理。對(duì)于這樣的現(xiàn)狀,客戶希望有一種數(shù)據(jù)庫(kù)不僅能夠?qū)?shù)據(jù)快速地分析,而且能夠?qū)?shù)據(jù)快速地修改、刪除和隨機(jī)讀取。為此,Cloudera參考了Google發(fā)表的介紹其分布式數(shù)據(jù)庫(kù)[1](Spanner)的論文,在2012年開(kāi)始秘密研發(fā)的一款介于HDFS[2]和HBase[3]之間的高速分布式存儲(chǔ)數(shù)據(jù)庫(kù)Kudu[4]。Kudu不僅有效地兼具了HBase的實(shí)時(shí)性,HDFS的高吞吐,以及傳統(tǒng)數(shù)據(jù)庫(kù)的SQL支持,而且它更有效地利用了現(xiàn)代硬件的CPU和IO資源,降低了混合架構(gòu)系統(tǒng)的復(fù)雜性。Kudu作為一款實(shí)時(shí)、離線之間的存儲(chǔ)系統(tǒng)被譽(yù)為下一代分析平臺(tái)的重要組成部分,填補(bǔ)了HDFS和HBase之間的空白,并將進(jìn)一步把Hadoop[5]市場(chǎng)向傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)市場(chǎng)靠攏。

關(guān)鍵詞:Kudu;快速實(shí)時(shí)處理;分布式存儲(chǔ)數(shù)據(jù)庫(kù);大數(shù)據(jù)

中圖分類號(hào):TP392? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2019)25-0008-03

Abstract: For fast-changing data, current databases cannot be processed quickly. For such a status quo, customers want a database that not only can quickly analyze data, but also can quickly modify, delete and randomize data. To this end, Cloudera refers to a paper published by Google on its distributed database [1] (wrench), and in 2012 began a secret high-speed distribution between HDFS [2] and HBase[3]. Storage database [4]. Kudu not only effectively combines the real-time nature of HBase, the high throughput of HDFS, and the SQL support of traditional databases, but it also makes more efficient use of the CPU and IO resources of modern hardware, reducing the mix. The complexity of the architecture system. Kudu as a real-time, offline storage system is hailed as an important part of the next-generation analytics platform, filling the gap between HDFS and HBase, and will further put Hadoop [5] The market is moving closer to the traditional data warehouse market.

Key words: Kudu; fast real-time processing; distributed storage database; big Data

1引言

近幾年來(lái),隨著物聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、社會(huì)化網(wǎng)絡(luò)的快速發(fā)展,企業(yè)的數(shù)據(jù)增長(zhǎng)迅速,半結(jié)構(gòu)化及非結(jié)構(gòu)化的行業(yè)應(yīng)用數(shù)據(jù)規(guī)模將成幾何倍數(shù)增長(zhǎng)。隨著時(shí)間的推移,越來(lái)越多的人會(huì)意識(shí)到數(shù)據(jù)對(duì)于一個(gè)人甚至企業(yè)的重要性,它有可能重塑生產(chǎn)力格局,甚至有可能決定著企業(yè)的未來(lái)發(fā)展方向。

基于分布式存儲(chǔ)和并行計(jì)算的大數(shù)據(jù)技術(shù)和平臺(tái)不斷發(fā)展成熟,并逐步得到推廣。國(guó)內(nèi)外已形成普遍共識(shí):大數(shù)據(jù)[6]技術(shù)平臺(tái)在各個(gè)重大行業(yè)的推廣應(yīng)用已成為一個(gè)急迫的需求和必然的發(fā)展趨勢(shì)。在現(xiàn)有的各種大數(shù)據(jù)技術(shù)平臺(tái)中,目前比較穩(wěn)定成熟和廣為業(yè)界使用的主流大數(shù)據(jù)平臺(tái)當(dāng)數(shù)Apache Hadoop系統(tǒng),而且它是開(kāi)源的。Hadoop存儲(chǔ)層主要由HDFS和HBase 兩個(gè)系統(tǒng)把持著,一直沒(méi)有太大突破。在追求高吞吐的批處理場(chǎng)景下,我們選用HDFS,在追求低延遲,有隨機(jī)讀寫(xiě)需求的場(chǎng)景下,我們選用HBase。那么是否存在一種系統(tǒng),既能結(jié)合兩個(gè)系統(tǒng)優(yōu)點(diǎn),也能支持高吞吐率和低延遲呢?為了解決此問(wèn)題,進(jìn)一步提高大數(shù)據(jù)處理的性能,Cloundera在2012年秘密研究實(shí)現(xiàn)數(shù)據(jù)快速實(shí)時(shí)處理的Kudu數(shù)據(jù)庫(kù)。

2 Kudu設(shè)計(jì)的背景

Hadoop 系統(tǒng)有很多組件,每一個(gè)組件有不同的功能,在現(xiàn)實(shí)場(chǎng)景中,用戶往往需要同時(shí)部署很多 Hadoop工具來(lái)解決同一個(gè)問(wèn)題,這種架構(gòu)稱為混合架構(gòu)。近幾年來(lái),很多公司都成功地部署了HDFS/Parquet + HBase 混合架構(gòu)。這樣的一條工具鏈不僅煩瑣而復(fù)雜,而且還存在很多問(wèn)題,并且維護(hù)上也十分困難。雖然一些重大行業(yè)能夠成功地部署、維護(hù)這樣的混合架構(gòu),但是在這些行業(yè)內(nèi)更希望能有一個(gè)存儲(chǔ)系統(tǒng)能夠?yàn)槎喾N不同類型的工作負(fù)載提供高性能的處理能力,來(lái)應(yīng)付不同類型的工作流,并保持高性能的計(jì)算能力。Kudu于2015年相應(yīng)而生,它專門針對(duì)實(shí)時(shí)變化的數(shù)據(jù)進(jìn)行快速分析,彌補(bǔ)了在線事務(wù)處理(OLTP)和在線分析(OLAP[7])之前的空白。

3 Apache Kudu

3.1 Kudu 簡(jiǎn)介

Kudu是一個(gè)彌補(bǔ)HDFS和HBase 之間的缺口的新型的存儲(chǔ),它能夠更有效地利用現(xiàn)代硬件的CPU和IO資源,既能夠支持?jǐn)?shù)據(jù)分析,又能夠支持?jǐn)?shù)據(jù)更新、刪除和實(shí)時(shí)查詢。

在當(dāng)前的Hadoop生態(tài)系統(tǒng)下,客戶使用的都是一個(gè)混合的架構(gòu),而Kudu則是主要針對(duì)這個(gè)混合架構(gòu)的需求所設(shè)計(jì)開(kāi)發(fā)的一個(gè)存儲(chǔ)系統(tǒng),希望能夠降低這種混合架構(gòu)系統(tǒng)的復(fù)雜性,同時(shí)能夠滿足客戶類似的需求。

Kudu是Cloudera開(kāi)源的列式存儲(chǔ)引擎,是一個(gè)新的數(shù)據(jù)高速列式存儲(chǔ)系統(tǒng)。Kudu在Hadoop生態(tài)系統(tǒng)中扮演的角色打破了HBase和HDFS之間的不足,如圖1所示:

從上圖可知,Kudu既能夠滿足分析的需求(快速的數(shù)據(jù)吞吐量),也能夠滿足查詢的需求(快速的隨機(jī)訪問(wèn))。

3.2 Kudu設(shè)計(jì)與架構(gòu)

3.2.1 Kudu的基本框架

Kudu是以表的形式進(jìn)行結(jié)構(gòu)數(shù)據(jù)存儲(chǔ)的存儲(chǔ)系統(tǒng)。一個(gè)Kudu集群有多個(gè)表,每個(gè)表都是由schema進(jìn)行定義,包含有限列,每列有一個(gè)名字和類型,并且可以選擇是否支持空值;這些列中的一些有序的列可以定義為表的主鍵,主鍵有唯一性約束,不僅可以作為刪除和更新的索引,而且可以用來(lái)支持快速的隨機(jī)訪問(wèn)的索引;這些特性與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)相似,但是與Cassandra , MongoDB ,Riak , BigTable等分布式數(shù)據(jù)存儲(chǔ)卻非常不同。

Kudu 采用了類似 log-structured 存儲(chǔ)系統(tǒng)的方式,增刪改等操作都放在內(nèi)存的 buffer中(Kudu 使用 WALS 對(duì)內(nèi)存中的 buffer 進(jìn)行災(zāi)備),隨后通過(guò)歸并排序才能持久化到列式存儲(chǔ)中。

3.2.2列式存儲(chǔ)

持久化的列式存儲(chǔ),與HBase 完全不同,Kudu使用了類似 Parquet[8] 的方式,同一個(gè)列在磁盤(pán)上是作為一個(gè)連續(xù)的塊進(jìn)行存放的。例如下圖2所示,圖2中左邊twitter是保存數(shù)據(jù)的一張表,而圖2中的右邊表示表在磁盤(pán)中的存儲(chǔ)方式,就是將同一個(gè)列放在一起存放。這樣做的好處是:對(duì)于一些聚合和join語(yǔ)句,我們可以盡可能地減少磁盤(pán)的訪問(wèn)。例如,我們要用戶名為 newsycbot 的數(shù)量,使用查詢語(yǔ)句:SELECT COUNT(*) FROM tweets WHERE user_name = ‘newsycbot‘,我們只需要查詢User_name這個(gè) block 即可。

同一個(gè)列的數(shù)據(jù)是集中的,而且是相同格式的,Kudu 可以對(duì)數(shù)據(jù)進(jìn)行編碼,例如字典編碼,行長(zhǎng)編碼,bitshuffle 等。它通過(guò)這種方式可以很大的減少數(shù)據(jù)在磁盤(pán)上的大小,提高吞吐率。Kudu的Tablet存儲(chǔ)設(shè)計(jì)包括:快速的列掃描,能夠達(dá)到可以媲美Parquet和ORCFile[9]的類似的性能,從而可以支撐分析業(yè)務(wù);低延時(shí)的隨機(jī)更新,在隨機(jī)訪問(wèn)時(shí),希望達(dá)到O(log(n))的時(shí)間復(fù)雜度;性能的一致性。

4性能評(píng)測(cè)

1)Kudu與Parquet的性能進(jìn)行對(duì)比,同樣都是采用Impala集成,Kudu性能比Parquet提高31%。

Cloudera利用TPC-H對(duì)Impala-Kudu和Impala-Parquet進(jìn)行了性能的比較,結(jié)果如下圖3所示:

圖3是官方給出用Impala跑TPC-H的測(cè)試,對(duì)比Parquet和Kudu的計(jì)算速度。從上圖中我們可以發(fā)現(xiàn),Kudu的速度和Parquet的速度差距不大,甚至有些Query比Parquet還快。這是由于這些數(shù)據(jù)都是在內(nèi)存緩存過(guò)的。

對(duì)比Kudu和HBase的性能比較,官方給出的測(cè)試結(jié)果如下圖4:

從圖中我們可以看出,在scan和range查詢上,Kudu 和Parquet 比 HBase快很多,而隨機(jī)訪問(wèn)(random access)則比HBase稍慢。然而數(shù)據(jù)集僅只有60 億行數(shù)據(jù),所以很可能這些數(shù)據(jù)也是可以全部緩存在內(nèi)存的。對(duì)于從內(nèi)存查詢,除了隨機(jī)訪問(wèn)(random access)比HBase慢之外,Kudu的速度基本上要優(yōu)于HBase。

5結(jié)論

Kudu的本質(zhì)是將性能的優(yōu)化建立在列式存儲(chǔ)的基礎(chǔ)上,提高存儲(chǔ)的效率和較快投影字段過(guò)濾的效率,降低查詢時(shí)CPU的開(kāi)銷。然而其他大多數(shù)設(shè)計(jì),都是為解決在列式存儲(chǔ)的基礎(chǔ)上支持隨機(jī)讀寫(xiě)的問(wèn)題而存在的。

為應(yīng)對(duì)BI領(lǐng)域少量更新和大量掃描分析場(chǎng)景,Kudu借鑒了很多傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)等技術(shù)。在這個(gè)領(lǐng)域目前是Impala+ Kudu/Hive/Spark SQL/Green plum MPP數(shù)據(jù)庫(kù)[10]在混合使用,傳統(tǒng)的MPP數(shù)據(jù)庫(kù)將會(huì)是一個(gè)過(guò)渡產(chǎn)品,不同的數(shù)據(jù)庫(kù)優(yōu)良性能未來(lái)將趨向融合。與大多數(shù)關(guān)系型數(shù)據(jù)庫(kù)不同的是:Kudu當(dāng)前并不支持二級(jí)索引,除primary key外,其他列并沒(méi)有提供唯一性限制。目前,Kudu要求每個(gè)table有一個(gè)primary key,當(dāng)然我們期望將來(lái)的版本能夠自動(dòng)產(chǎn)生迭代的keys.

參考文獻(xiàn):

[1] James C. Corbett, Jeffrey Dean, Michael Epstein,etal.Spanner: Google's globally distributed database.Published: AUG 2013

[2] 郝樹(shù)魁. HadoopHDFS和MapReduce架構(gòu)淺析[J]. 郵電設(shè)計(jì)技術(shù),2012(07):37-42.

[3] 唐長(zhǎng)城,楊峰,代棟,等. 一種基于HBase的數(shù)據(jù)持久性和可用性研究[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2013(10):175-180.

[4] Lipcon T, Alves D,Burkert D,et al. Kudu : Storage for fast analytics on fast data. Draft ,2015.

[5] 黃素萍,葛萌. Hadoop平臺(tái)在大數(shù)據(jù)處理中的應(yīng)用研究[J]. 現(xiàn)代計(jì)算機(jī)(專業(yè)版),2013(29):12-15.

[6] 張東霞,苗新,劉麗平,等. 智能電網(wǎng)大數(shù)據(jù)技術(shù)發(fā)展研究[J]. 中國(guó)電機(jī)工程學(xué)報(bào),2015(01):2-12.

[7] 常冰琳:使用Kudu搭建OLAP云服務(wù)[EB/OL]. http://www.docin.com/p-1635604338.html.

[8] 新一代列式存儲(chǔ)格式Parquet[EB/OL]. http://www.2cto.com/database/201603/495571.html.

[9] Hive: ORC File Format存儲(chǔ)格式詳解[EB/OL].https://www.iteblog.com/archives/1014.html

[10]薛志云,何軍,張丹陽(yáng),等. Hadoop和Spark在實(shí)驗(yàn)室中部署與性能評(píng)估[J]. 實(shí)驗(yàn)室研究與探索,2015(11):77-81.

【通聯(lián)編輯:光文玲】

猜你喜歡
大數(shù)據(jù)
淺談大數(shù)據(jù)在出版業(yè)的應(yīng)用
“互聯(lián)網(wǎng)+”對(duì)傳統(tǒng)圖書(shū)出版的影響和推動(dòng)作用
大數(shù)據(jù)環(huán)境下基于移動(dòng)客戶端的傳統(tǒng)媒體轉(zhuǎn)型思路