有了HBase為什么還要Kudu?文章來源:企鵝號 - 大叔據(jù) Kudu這東西估計(jì)很多同學(xué)都聽過但是沒用過,那么我們先從最基本的問題開始:kudu是什么?能做什么? kudu是什么? kudu和Hbase類似也是一個(gè)分布式數(shù)據(jù)庫,據(jù)官方給它的定位是提供”fast analytics on fast data”(在更新更及時(shí)的數(shù)據(jù)上做更快的分析)。 據(jù)說Cloudera曾經(jīng)想直接通過修改HBase來支持kudu現(xiàn)在的功能,但是Kudu的數(shù)據(jù)模型和磁盤存儲都與Hbase不同,改造會非常大,所以Cloudera決定干脆開發(fā)一個(gè)全新的存儲系統(tǒng)。 0.作為Hadoop生態(tài)圈的一部分,對接生態(tài)系統(tǒng)的其他組件方便,會有官方提供的接口 1.kudu自己存儲數(shù)據(jù)不依賴與HDFS存儲;不依賴于zookeeper,將它的功能集成進(jìn)了自身的TMaster; 2.和HBase類似的LSM結(jié)構(gòu),用于支持?jǐn)?shù)據(jù)的隨機(jī)讀寫。 3.有表結(jié)構(gòu),需定義Schema信息 - 必須定義唯一鍵,這就造成了寫數(shù)據(jù)時(shí)多了一個(gè)判斷唯一的過程。 需在寫入數(shù)據(jù)前定義好每一列的類型(方便做類似于parquet的列式存儲) 可以像關(guān)系型數(shù)據(jù)庫一樣用Alter增刪列,不具有HBase動態(tài)列的特性 4.支持行級別的ACID 5.目前不支持二級索引 6.目前不支持BloomFilter優(yōu)化join 7.核心模塊用的C++來實(shí)現(xiàn),沒有full gc的風(fēng)險(xiǎn) kudu解決了什么問題? HDFS和HBase是大數(shù)據(jù)最常用的兩種存儲方式,它們的優(yōu)缺點(diǎn)非常明顯: HDFS,使用列式存儲格式Apache Parquet,Apache ORC,適合離線分析,不支持單條記錄級別的update操作,隨機(jī)讀寫性能差。這個(gè)就不多說了,用過HDFS的同學(xué)應(yīng)該都知道這個(gè)特點(diǎn)。 HBase,可以進(jìn)行高效隨機(jī)讀寫,卻并不適用于基于SQL的數(shù)據(jù)分析方向,大批量數(shù)據(jù)獲取時(shí)的性能較差。 那為什么HBase不適合做分析呢? 因?yàn)榉治鲂枰揩@取數(shù)據(jù),而HBase本身的設(shè)計(jì)并不適合批量獲取數(shù)據(jù) 1)都說HBase是列式數(shù)據(jù)庫,其實(shí)從底層存儲的角度來說它并不是列式的,獲取指定列數(shù)據(jù)時(shí)是會讀到其他列數(shù)據(jù)的??催^我之前文章的同學(xué)應(yīng)該比較清楚就不多說了。相對而言Parquet格式針對分析場景就做了很多優(yōu)化。 2)HBase是LSM-Tree架構(gòu)的數(shù)據(jù)庫,這導(dǎo)致了HBase讀取數(shù)據(jù)路徑比較長,從內(nèi)存到磁盤,可能還需要讀多個(gè)HFile文件做版本合并。 LSM 的中心思想就是將隨機(jī)寫轉(zhuǎn)換為順序?qū)憗泶蠓岣邔懭氩僮鞯男阅?/strong>,但是犧牲了部分讀的性能。 隨機(jī)讀寫是指對任意一個(gè)位置的讀和寫,磁盤隨機(jī)讀寫慢是因?yàn)樾枰獙さ?,倒帶才可以訪問到指定存儲點(diǎn),而內(nèi)存不需要,可以任意指定存儲點(diǎn) 為了讓數(shù)據(jù)平臺同時(shí)具備隨機(jī)讀寫和批量分析能力,傳統(tǒng)的做法是采用混合架構(gòu)(hybrid architecture),也就是我們常說的T+1的方式,數(shù)據(jù)實(shí)時(shí)更新在HBase,第二天凌晨同步到HDFS做離線分析。這樣的缺點(diǎn)很明顯,時(shí)效性差,數(shù)據(jù)鏈路長,過程復(fù)雜,開發(fā)成本高。 這個(gè)時(shí)候Kudu出現(xiàn)了,它是介于HDFS和HBase兩者之間的一個(gè)東西如下圖所示, 它不及HDFS批處理快,也不及HBase隨機(jī)讀寫能力強(qiáng),但是反過來它比HBase批處理快(適用于OLAP的分析場景),而且比HDFS隨機(jī)讀寫能力強(qiáng)(適用于實(shí)時(shí)寫入或者更新的場景),這就是它能解決的問題。 ———————————————— 最近真的忙,停更了接近一個(gè)月,抱歉,好多同學(xué)催更,感謝有那么多同學(xué)的支持,這一篇先簡單地介紹了下kudu,接下來還會有一系列的文章,2019年將繼續(xù)輸出,感謝關(guān)注。 覺得有價(jià)值請關(guān)注 ▼
|
|