記錄一下,作為備忘。
常用的分布式計算引擎
多表關聯的問題,由于NoSQL數據庫主要用于海量存儲和單表查詢,一般都不支持join,需借助更上層的計算框架來實現多表關聯,比如:
計算框架 | 支持數據源 | 執行效率 |
---|---|---|
Hive | 本地文件、HDFS、HBase,通過第三方工具也能支持MongoDB | Hive-on-MR的效率是很差的,3條記錄的表select count(*)花了18s!而且Hive2自己也不推薦再用Hive-on-MR了,而是用Hive-on-spark或Hive-on-Tez |
Spark | 本地文件、HDFS、HBase,通過第三方工具支持MongoDB、Cassandra | MR之外另辟蹊徑的準實時計算框架。數據量超過百萬行后的效率優于關系數據庫(RDB);10w以內的效率雖然比RDB慢,但也在一個數量級內。 |
Tez | HDFS | 與Hive結合使用,仍基于MR框架,但做了作業的裁剪和合并,減少HDFS讀寫,據說比優化前的MR效率提升百倍。 |
幾種計算框架之間的關系如下圖所示:
MR和Spark是兩種不同的底層計算框架,Tez是對MR的優化,Hive是一個高層的計算框架,負責將SQL翻譯成不同的底層計算模型(目前能翻譯為MR、Tez、Spark三種計算模型),SparkSQL和Hive是同級的計算框架(事實上,SparkSQL的開發時間先于Hive-on-Spark),如其名字所表明的,其只能將SQL翻譯為Spark計算模型。