hive与hbase的以及mongodb和cassandra区别整理
?
?
| Hive | Hbase |
| 數據處理和計算問題 | 實時數據查詢問題 |
| 不是數據庫 | NoSQL數據庫 |
| 清洗數據 | 海量數據查詢接口 |
| OLAP | OLTP(嚴格講只是OLP,不包含T) |
| 邏輯表,不存儲實際數據 | 物理表 |
| 行模式 | 列模式 |
| 不提供row-level的更新 | 支持row-level的更新 |
| 完整的SQL實現 | 不適用于有join,多級索引,表關系復雜 |
| HDFS文件的視圖,HDFS文件的SQL接口 | 建了索引的key-value表 |
| 批處理 | 事務處理(例如和web開發結合) |
| 單次Hive查詢都需要耗費分鐘級以上的時間(哪怕一個再小的表),因此無法作為web后端的數據庫使用。 | HBase可以替代MySQL使用,至少淘寶就是這么做了。 HBase是建造在HDFS基礎上的分布式數據庫,可以支持海量數據(比MySQL高一到兩個量級)的存儲和查詢。 |
| DataGrip | Phoenix |
| hive可以掛接hbase,即針對hbase開放出SQL的接口 | 不用Hive,也能操作HBase |
| Hive是建立在Hadoop之上為了減少MapReduce jobs編寫工作的批處理系統 | HBase是為了支持彌補Hadoop對實時操作的缺陷的項目 。 |
| 蜜蜂 | 蜂蜜 |
| Hive支持標準SQL查詢 | HBase不支持SQL,有自己的語法規則 |
| 一種客戶端工具 | 一種db |
?
從上面的表格可以看出,hbase可以替換hive嗎?不行,因為hbase支持不了復雜的sql
?
比起單機的Oracle和MySQL,好處就是伸縮性好啊
劣勢就是分布式帶來的可用性,一致性,分區容忍性~等問題,以及分布式事務難以實現。
Hbase,主要用于明細查詢,即席查詢,因為他快啊,但是不適合多條件查詢
?
?
hive更像是hadoop客戶端,可以將SQL任務轉化為mapreduce任務操作hdfs中的數據。
hbase則是支持大數據存儲和查詢的數據倉庫,在CAP理論中,選擇了CA,保留了一致性,舍棄了可用性,簡單直白理解就是不容易丟數據。是noSQL典型代表。
?
使用關系
?? ?源數據生產者 -Flume/Kafka-> Flume/消費者 -write-> HDFS -Hive.load-> Hive -ETL/Analyze.result-> HBase
?? ?源數據生產者 -Kafka-> SparkStreaming/消費者 -write-> HDFS [-SparkSQL-> Hive] && [-SparkSQL-> HBase]
?
類比于單機系統。hdfs就是linux的文件系統,hbase就是資源管理器,hive就是圖形化界面,GUI再快,不可能快過命令行
?
個人理解:
hive的優勢是在于對于集群文件HDFS的查詢功能。
HBase早期在國內被很多大型互聯網公司大規模使用,促進了國內的生態發展,而Cassandra似乎在國外發展得更好
?
?
Hbase,主要用于明細查詢,即席查詢,因為他快啊,但是不適合多條件查詢
?
?hbase適合寫密集型應用,每天寫入量巨大,而相對讀數量較小的應用,比如IM的歷史消息,游戲的日志等等
HBase是根據谷歌的BigTable設計的。典型的應用場景就是不斷插入新的信息(谷歌的情況下就是互聯網上新生成的網頁),而不怎么修改。比如現在Facebook的messenger就是用HBase實現的。
這里要提到HBase是按行存儲的,所以特點就是插入(ingest)快。但是做分析的時候經常是要按列掃描(scan)的。比如算一個公司員工的平均工資。
Cloudera在推出新的列存儲引擎Kudu的時候討論過HDFS,HBase,和Kudu的應用場景。
?
根據[2]其實Cassandra的寫入性能比Hbase更勝一籌,并且讀取性能也優于hbase
?
下面是商用的公司:
| 數據庫 | 公司 |
| Hbase | 美團,淘寶 |
| Cassandra | 蘋果 |
?
注意,無論是國內的前程無憂還是國外的indeed,目前hbase的崗位需求都高于cassandra十倍以上。
Reference:
[1]HBase 和 Hive 的差別是什么,各自適用在什么場景中?
[2]Cassandra HBase和MongoDb性能比較
總結
以上是生活随笔為你收集整理的hive与hbase的以及mongodb和cassandra区别整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 制作复选框(Toggle)
- 下一篇: jQuery文档加载完毕的几种写法