初識kudu

kudu是一個與hbase類似的列式存儲分佈式數據庫。
官方給kudu的定位是:在更新更及時的基礎上實現更快的數據分析

hdfs與hbase數據存儲的缺點:

目前數據存儲有了HDFS與hbase,爲什麼還要額外的弄一個kudu呢?
HDFS:使用列式存儲格式Apache Parquet,Apache ORC,適合離線分析,不支持單條紀錄級別的update操作,隨機讀寫性能差。
HBASE:可以進行高效隨機讀寫,卻並不適用於基於SQL的數據分析方向,大批量數據獲取時的性能較差。
正因爲HDFS與HBASE有上面這些缺點,KUDU較好的解決了HDFS與HBASE的這些缺點,它不及HDFS批處理快,也不及HBase隨機讀寫能力強,但是反過來它比HBase批處理快(適用於OLAP的分析場景),而且比HDFS隨機讀寫能力強(適用於實時寫入或者更新的場景),這就是它能解決的問題。

kudu是一個運行在hadoop平臺的列式存儲工具,kudu擁有hadoop生態圈的特性:它運行在商業硬件上,橫向擴展性好,支持高可用。
hadoop的存儲工具有很多,hbase,hdfs等,那爲什麼還有kudu呢?這是因爲hdfs適合靜態數據的離線分析(一次寫入,多次讀取),它的吞吐量很大,但同時數據延遲性大;而hbase剛好相反,它適合動態數據的快速分析,但是數據吞吐量小。
此時就需要一款基於頻繁更新數據同時能快速分析的工具——Kudu。


Kudu的典型使用場景

流式實時計算場景
流式計算場景通常有持續不斷地大量寫入,與此同時這些數據還要支持近乎實時的讀、寫以及更新操作。Kudu的設計能夠很好的處理此場景。

時間序列存儲引擎(TSDB)
Kudu的hash分片設計能夠很好地避免TSDB類請求的局部熱點問題。同時高效的Scan性能讓Kudu能夠比Hbase更好的支持查詢操作。

機器學習&數據挖掘
機器學習和數據挖掘的中間結果往往需要高吞吐量的批量寫入和讀取,同時會有少量的隨機讀寫操作。Kudu的設計可以很好地滿足這些中間結果的存儲需求。

與歷史遺產數據共存
在工業界實際生產環境中,往往有大量的歷史遺產數據。Impala可以同時支持HDFS、Kudu等多個底層存儲引擎,這個特性使得在使用的Kudu的同時,不必把所有的數據都遷移到Kudu。

Kudu+Impala爲實時數據倉庫存儲提供了良好的解決方案。這套架構在支持隨機讀寫的同時還能保持良好的Scan性能,同時其對Spark等流式計算框架有官方的客戶端支持。這些特性意味着數據可以從Spark實時計算中實時的寫入Kudu,上層的Impala提供BI分析SQL查詢,對於數據挖掘和算法等需求可以在Spark迭代計算框架上直接操作Kudu底層數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章