最近看了些大拿的相關文章,做筆記如下:
Hadoop生態圈中HDFS一直用來保存底層數據。Hbase作為一款Nosql也是Hadoop生態圈的核心組件,它海量的存儲能力,優秀的隨機讀寫能力,能夠處理一些HDFS不足的地方。
Clickhouse是一個用於聯機分析(OLAP)的列式數據庫管理系統(DBMS)。能夠使用SQL查詢實時生成分析數據報告。它同樣擁有優秀的數據存儲能力。
Apache Kudu是Cloudera Manager公司16年發布的新型分布式存儲系統,結合CDH和Impala使用可以同時解決隨機讀寫和sql化數據分析的問題。分別彌補HDFS靜態存儲和Hbase Nosql的不足。
接着說一下Hbase與Kudu,可以說是Kudu師承Hbase,架構是類似的master-slave結構。
Hbase的物理模型是master和regionserver,regionserver存儲的是region,region里邊很有很多store,一個store對應一個列簇,一個store中有一個memstore和多個storefile,store的底層是hfile,hfile是hadoop的二進制文件,其中HFile和HLog是Hbase兩大文件存儲格式,HFile用於存儲數據,HLog保證可以寫入到HFile中;
Kudu的物理模型是master和tserver,其中table根據hash和range分區,分為多個tablet存儲到tserver中,tablet分為leader和follower,leader負責寫請求,follower負責讀請求,總結來說,一個ts可以服務多個tablet,一個tablet可以被多個ts服務(基於tablet的分區,最低為2個分區)
Clickhouse的特點在於它較快的查詢性能,雖然也能存儲數據,但並不是他的強項,而且Clickhouse還不能update/delete數據。
表格中列出幾個維度的對比:
Hbase | Kudu | Clickhouse | |
數據存儲 | Zookeeper保存元數據,數據寫入HDFS(非結構化數據) | master保存元數據,數據及副本存儲在tserver(強類型數據) | Zookeeper保存元數據,數據存儲在本地,且會壓縮 |
查詢 | 查詢比較麻煩,Phoenix集成之后比較好點 | 查詢比較麻煩,集成Impala之后表現優秀 | 高效的查詢能力 |
數據讀寫 | 支持隨機讀寫,刪除。更新操作是插入一條新timestamp的數據 | 支持讀寫,刪除,更新 | 支持讀寫,但不能刪除和更新 |
維護 | 需要同時維護HDFS、Zookeeper和Hbase(甚至於Phoenix) | CDH版本維護簡單,Apache版需要單獨維護,額外還有Impala | 額外維護Zookeeper |
應用場景:
Hbase更適合非結構化的數據存儲,對大數據進行實時讀寫及更新的場景,Kudu+Impala也可以很好的勝任,當然再結合CDH就更好了,瓶頸並不在Kudu,而在Impala的Apache部署,比較復雜。
ClickHouse 適合低並發,靈活即席查詢場景,也支持例如:報表分析,留存分析,用戶標簽畫像分析,用戶行為漏斗分析,歸因分析等。
備注:
1、CDH是Cloudera的100%開源平台發行版,包括Apache Hadoop,專為滿足企業需求而構建。CDH提供開箱即用的企業使用所需的一切。通過將Hadoop與十幾個其他關鍵的開源項目集成,Cloudera創建了一個功能先進的系統,可幫助您執行端到端的大數據工作流程。CDH 是一個擁有集群自動化安裝、中心化管理、集群監控、報警功能的一個工具(軟件),使得集群的安裝可以從幾天的時間縮短為幾個小時,運維人數也會從數十人降低到幾個人,極大的提高了集群管理的效率。