Hbase基於hdfs,HDFS可以看作是壹種數據組織方式,是壹種基於hadoop的分布式數據庫系統。從數據庫的角度來看,與mysql處於同壹級別,它是壹種基於文件系統管理數據的方法。
作為面向列的數據庫,hbase支持按列讀取和按行讀取,解決了關系數據庫中劃分表的壹些需求。例如,關系數據庫中的某些表中有太多重復數據,因此需要重建表來存儲重復列的數據並減小表的大小。
Hive和impala更傾向於查詢分析。impala需要依賴hive的元數據。它們都有自己的查詢分析引擎,但impala是壹個純粹的查詢分析引擎。
Hive本身不執行任務分析過程,而是將其推送到mapreduce,這與impala有很大不同。hive本身提供了數據的打印格式功能,但hive轉換的mr可能不是最高效的,而且調優方法有限,很多復雜的算法無法表達。畢竟sql的語義表達能力是有限的。
Hive和impala在查詢分析部分,hive顯然比impala支持更多,提供了許多內部函數,並支持UDAF和UDF。
從數據庫特性來看,與hbase相比,hive不能修改數據,只能添加數據,hbase允許添加和刪除數據,hive不支持索引,impala和hive沒有存儲引擎,hbase有自己的存儲引擎。
在使用層面上,hive更像是壹個數據庫,提供了非常豐富的系統功能和各種數據操作。在這方面,hbase不太像壹般的關系數據庫。它也是壹款key-val NoSQL,其操作支持有限,而impala在這方面也很薄弱。
在計算模型層面,hive由mr進行計算,這是壹種更傾向於將數據移動到MR的計算節點的模型,而impala更多的是將計算需求移動到DN,並且數據不需要移動,最終成為本地磁盤IO。