NO IMAGE
Hive VS HBase
Hive是建立在Hadoop之上為了減少MapReduce jobs編寫工作的批處理系統,HBase是為了支援彌補Hadoop對實時操作的缺陷的專案 。
想象你在操作RMDB資料庫,如果是全表掃描,就用Hive Hadoop,如果是索引訪問,就用HBase Hadoop 。
Hive query就是MapReduce jobs可以從5分鐘到數小時不止,HBase是非常高效的,肯定比Hive高效的多。
Hive是為了簡化編寫MapReduce程式而生的,使用MapReduce做過資料分析的人都知道,很多分析程式除業務邏輯不同外,程式流程基本一樣。在這種情況下,就需要Hive這樣的使用者程式設計介面。Hive本身不儲存和計算資料,它完全依賴於HDFS和MapReduce,Hive中的表純邏輯,就是些表的定義等,也就是表的後設資料。使用SQL實現Hive是因為SQL大家都熟悉,轉換成本低,類似作用的Pig就不是SQL。
HBase為查詢而生的,它通過組織起節點內所有機器的記憶體,提供一個超大的記憶體Hash表,它需要組織自己的資料結構,包括磁碟和記憶體中的,而Hive是不做這個的,表在HBase中是物理表,而不是邏輯表,搜尋引擎使用它來儲存索引,以滿足查詢的實時性需求。
hive類似CloudBase,也是基於hadoop分散式計算平臺上的提供data warehouse的sql功能的一套軟體。使得儲存在hadoop裡面的海量資料的彙總,即使查詢簡單化。hive提供了一套QL的查詢語言,以sql為基礎,使用起來很方便。
HBase是一個分散式的基於列儲存的非關係型資料庫。HBase的查詢效率很高,主要由於查詢和展示結果。
hive是分散式的關係型資料庫。主要用來並行分散式 處理 大量資料。hive中的所有查詢除了”select * from table;”都是需要通過Map\Reduce的方式來執行的。由於要走Map\Reduce,即使一個只有1行1列的表,如果不是通過select * from table;方式來查詢的,可能也需要8、9秒。但hive比較擅長處理大量資料。當要處理的資料很多,並且Hadoop叢集有足夠的規模,這時就能體現出它的優勢。
通過hive的儲存介面,hive和Hbase可以整合使用。
1、hive是sql語言,通過資料庫的方式來操作hdfs檔案系統,為了簡化程式設計,底層計算方式為mapreduce。
2、hive是面向行儲存的資料庫。
3、Hive本身不儲存和計算資料,它完全依賴於HDFS和MapReduce,Hive中的表純邏輯。
4、HBase為查詢而生的,它通過組織起節點內所有機器的記憶體,提供一個超大的記憶體Hash表
5、hbase不是關係型資料庫,而是一個在hdfs上開發的面向列的分散式資料庫,不支援sql。
6、hbase是物理表,不是邏輯表,提供一個超大的記憶體hash表,搜尋引擎通過它來儲存索引,方便查詢操作。
7、hbase是列儲存。
Hive和Hbase有各自不同的特徵:hive是高延遲、結構化和麵向分析的,hbase是低延遲、非結構化和麵向程式設計的。Hive資料倉儲在hadoop上是高延遲的。
轉:
覺得在問區別之前,我應該顯示說相同點,這麼一想,又糊塗了,hive和hbase哪裡像了,好像哪裡都不像,既然哪裡都不像,又何來的“區別是什麼”這一問題,他倆所有的都算區別。
那麼,hive是什麼?
白話一點再加不嚴格一點,hive可以認為是map-reduce的一個包裝。hive的意義就是把好寫的hive的sql轉換為複雜難寫的map-reduce程式。
於是,hbase是什麼?
同樣白話一點加不嚴格一點,hbase可以認為是hdfs的一個包裝。他的本質是資料儲存,是個NoSql資料庫;hbase部署於hdfs之上,並且克服了hdfs在隨機讀寫方面的缺點。
所以要問hive和hbase的區別,就應該問問map-reduce和hdfs之間的區別,問區別,就要先說說他倆哪裡像。
於是,你說map-reduce和hdfs哪裡像了呢?