hive Hbase mysql的區別

2022-03-15 21:36:43 字數 2448 閱讀 9583

1、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上是高延遲的。 

其中hbase位於結構化儲存層,hadoop hdfs為hbase提供了高可靠性的底層儲存支援,hadoop mapreduce為hbase提供了高效能的計算能力,zookeeper為hbase提供了穩定服務和failover機制。 

2、hive和hbase各是什麼?

1)hive是什麼? 

白話一點再加不嚴格一點,hive可以認為是map-reduce的一個包裝。hive的意義就是把好寫的hive的sql轉換為複雜難寫的map-reduce程式。 

2)hbase是什麼? 

同樣白話一點加不嚴格一點,hbase可以認為是hdfs的一個包裝。他的本質是資料儲存,是個nosql資料庫;hbase部署於hdfs之上,並且克服了hdfs在隨機讀寫方面的缺點。 

hive和hbase**像了,好像**都不像,既然**都不像,又何來的“區別是什麼”這一問題,所以要問hive和hbase的區別,就應該問問map-reduce和hdfs之間的區別,問區別,就要先說說他倆**像。 

3、hive和資料庫的比較

由於 hive 採用了 sql 的查詢語言 hql,因此很容易將 hive 理解為資料庫。其實從結構上來看,hive 和資料庫除了擁有類似的查詢語言,再無類似之處。本文將從多個方面來闡述 hive 和資料庫的差異。資料庫可以用在 online 的應用中,但是hive 是為資料倉儲而設計的,清楚這一點,有助於從應用角度理解 hive 的特性。

1)查詢語言

由於sql被廣泛的應用在資料倉儲中,因此,專門針對hive的特性設計了類sql的查詢語言hql。熟悉sql開發的開發者可以很方便的使用hive進行開發。

2)資料儲存位置

hive 是建立在 hadoop 之上的,所有 hive 的資料都是儲存在 hdfs 中的。而資料庫則可以將資料儲存在塊裝置或者本地檔案系統中。

3)資料格式

hive 中沒有定義專門的資料格式,資料格式可以由使用者指定,使用者定義資料格式需要指定三個屬性:列分隔符(通常為空格、”\t”、”\x001″)、行分隔符(”\n”)以及讀取檔案資料的方法(hive 中預設有三個檔案格式textfile,sequencefile以及rcfile)。由於在載入資料的過程中,不需要從使用者資料格式到 hive 定義的資料格式的轉換,因此,hive在載入的過程中不會對資料本身進行任何修改,而只是將資料內容複製或者移動到相應的hdfs目錄中。而在資料庫中,不同的資料庫有不同的儲存引擎,定義了自己的資料格式。所有資料都會按照一定的組織儲存,因此,資料庫載入資料的過程會比較耗時。

4)資料更新

由於hive是針對資料倉儲應用設計的,而資料倉儲的內容是讀多寫少的。因此,hive中不支援對資料的改寫和新增,所有的資料都是在載入的時候中確定好的。而資料庫中的資料通常是需要經常進行修改的,因此可以使用 insert into …  values 新增資料,使用 update … set修改資料。

6)執行

hive中大多數查詢的執行是通過 hadoop 提供的 mapreduce 來實現的(類似 select * from tbl的查詢不需要mapreduce)。而資料庫通常有自己的執行引擎。

7)執行延遲

之前提到,hive 在查詢資料的時候,由於沒有索引,需要掃描整個表,因此延遲較高。另外一個導致 hive 執行延遲高的因素是 mapreduce框架。由於mapreduce 本身具有較高的延遲,因此在利用mapreduce 執行hive查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即資料規模較小,當資料規模大到超過資料庫的處理能力的時 候,hive的平行計算顯然能體現出優勢。

8)可擴充套件性

由於hive是建立在hadoop之上的,因此hive的可擴充套件性是和hadoop的可擴充套件性是一致的(世界上最大的hadoop 叢集在 yahoo!,2009年的規模在4000 臺節點左右)。而資料庫由於 acid 語義的嚴格限制,擴充套件行非常有限。目前最先進的並行資料庫 oracle 在理論上的擴充套件能力也只有100臺左右。

9)資料規模

由於hive建立在叢集上並可以利用mapreduce進行平行計算,因此可以支援很大規模的資料;對應的,資料庫可以支援的資料規模較小。

hive vs hbase

hive和hbase區別 兩者分別是什麼? apache hive是一個構建在hadoop基礎設施之上的資料倉儲。通過hive可以使用hql...

hive與hbase整合

hive的複合資料型別如何取值 structs structs內部的資料可以通過dot 來存取,例如,表中一列c的型別為struct,我們可...

hive hbase區別

1 hive是sql語言,通過資料庫的方式來操作hdfs檔案系統,為了簡化程式設計,底層計算方式為mapreduce。 2 hive是面向行...