知名數倉技術及其核心思路,大盤點!
1?、Hive
Hive是一個基于HDFS(Hadoop Distributed File System , Hadoop分布式文件系統)的數倉系統,可以將存儲在HDFS之上的文件進行結構化解析,并向用戶提供使用SQL操作Hadoop的能力。由于Hive構建在基于HDFS和Spark/MapReduce的系統之上,使得Hive具備了理論上近乎無限的大數據處理能力,因此Hive迅速在業界占據主導地位,在其巔峰時期,Hive+SparkSQL就是大數據系統的標配。Hive使用的是中間件思路,構建在Hadoop的組件之上。
Hive本質是一個元數據系統,由于自身沒有存儲和計算引擎,因此Hive無法單獨使用,必須配合HDFS+Spark/MapReduce,才能完成整個數倉的功能。甚至Hive的元數據存儲都借助了MySQL等關系型數據庫。這樣的架構設計使得Hive成為事實上的Hadoop中間件系統,在大數據早期階段存在著如下非常重要的意義。
降低了Hadoop的技術門檻。
提高了Hadoop的使用效率。
投入產出比高。?
隨著技術的進步,Hadoop本身的問題越來越突出,使得Hive成為整個系統的瓶頸,這時候Hive的一些問題也隨之暴露,主要體現在以下幾點。
安裝運維困難:安裝Hive需要同時安裝更多的組件、易出現單點故障等。
受限于底層HDFS:小文件問題、不支持更新等。
受限于底層計算引擎:計算效率太低,延遲高無法支撐即席查詢等。
在ClickHouse技術尚未出現的年代,使用Hive需要同時配備非常龐大的大數據平臺,這使得傳統煙囪式數據開發模型由于成本原因無法在大數據時代早期廣泛應用,因此出現了數據中臺的概念。建設數據中臺的一個重要原因是技術的不成熟使得大數據應用成本非常高,企業沒有建設多個大數據平臺的動力,需要盡可能降低建設和維護成本,這就需要將所有數據整合到“大中臺小前臺”的架構中,并由此誕生了一大批數據中臺的公司,極大地推動了產業的發展和技術的應用。
煙囪式的數據開發模式在數據中臺時代被視為洪水猛獸,應該絕對避免。當然這個觀點在數據中臺時代是正確的。隨著大數據技術的成熟,使用全新技術的煙囪式數據開發模式其實也有著數據中臺無法比擬的優勢——成本低、研發快、架構靈活。這更體現出了計算機科學中的一個經典理論——沒有銀彈。作為架構師,應該理性平等地分析每個架構的優點和缺點來找到最合適的架構,而不是找到正確的架構。
2、HBase
和Hive類似,HBase也是建立在HDFS之上的NoSQL數據庫。和Hive不同的是,HBase實現了自己的存儲引擎,避開了HDFS低性能的缺陷,獲得了非常高的吞吐能力。由于HBase遠比Hive高的性能,因此在大數據的早期,部分場景也會將HBase當成數據倉庫來使用。
HBase采用重新設計的存儲引擎解決了一些數倉的技術瓶頸。HBase的存儲引擎是面向NoSQL設計的,由于無法真正完整地實現SQL的能力,因此除了少部分不需要強大SQL能力的場景之外,HBase的使用非常有限。HBase的出現也有著非常重要的意義。
證明了基于低效的HDFS也能設計出相對高性能的系統。
彌補了Hive無法支持實時場景的缺陷。
填補了大數據系統即席查詢的空白,擴充了大數據的應用場景.
3、Kylin
Kylin是一個多維OLAP數倉。前文提到Hive的查詢延遲很高,尤其在復雜的多維分析中顯得格外明顯,難以滿足某些實時場景下的查詢需求。Hbase雖然可以解決一部分場景下的高延遲問題,但因為不支持SQL特性,所以也無法支持復雜的多維分析。
Kylin就是在這樣的背景下應運而生。Kylin的基本原理是復雜的多維分析查詢速度慢,那就提前計算好結果保存到HBase中,即可在需要時快速得出結果。Kylin采用將復雜計算前置的思路,降低了復雜計算的延遲。從本質上看,可以認為Kylin也是一個大數據中間件。Kylin也面臨著如下一些挑戰。
維度爆炸:Kylin的本質上是將計算前置,由于很難事先預測需要組合維度,因此只能進行窮舉。這種窮舉的方式面臨著維度爆炸的風險。
數據實時性弱:由于Kylin存在預計算過程,新的數據必須經過預計算才能被檢索到,因此Kylin本質上只是解決了實時查詢的問題,沒有解決數據無法實時響應的缺陷。
資源浪費:由于預計算的結果并不一定會被使用,因此可能存在資源浪費的現象。
?指標逃逸:所需的數據未被預計算,這種情況需要重新使用Spark/MapReduce進行計算。
4、其他數倉
以上介紹了三款常用的數據倉庫及其核心思路,這三種數倉分別采用了三種不同的思路來實現大數據下的數據倉庫。而其他的數倉,大多也是采用其中的一種或幾種思路,例如Greenplum采用的是Hive類似的中間件思路,只不過其底層數據庫是PostgreSQL而不是Hive的Hadoop。ClickHouse則是采用類似HBase的思路,以極限單機性能為目標,重新設計了存儲引擎和計算引擎。
本文摘編自《ClickHouse性能之巔:從架構設計解讀性能之謎》,經出版方授權發布。(書號:9787111716587)轉載請保留文章出處。