Hadoop中使用Hive和Hbase的關係和區別

2021-07-29 11:54:29 字數 1756 閱讀 7463

1. 兩者分別是什麼?  

apache hive是乙個構建在hadoop基礎設施之上的資料倉儲。通過hive可以使用hql語言查詢存放在hdfs上的資料。hql是一種類sql語言,這種語言最終被轉化為map/reduce. 雖然hive提供了sql查詢功能,但是hive不能夠進行互動查詢--因為它只能夠在haoop上批量的執行hadoop。

apache hbase是一種key/value系統,它執行在hdfs之上。和hive不一樣,hbase的能夠在它的資料庫上實時執行,而不是執行mapreduce任務。hive被分割槽為**,**又被進一步分割為列簇。列簇必須使用schema定義,列簇將某一型別列集合起來(列不要求schema定義)。例如,「message」列簇可能包含:「to」, 」from」 「date」, 「subject」, 和」body」. 每乙個 key/value對在hbase中被定義為乙個cell,每乙個key由row-key,列簇、列和時間戳。在hbase中,行是key/value對映的集合,這個對映通過row-key來唯一標識。hbase利用hadoop的基礎設施,可以利用通用的裝置進行水平的擴充套件。

2. 兩者的特點

hive幫助熟悉sql的人執行mapreduce任務。因為它是jdbc相容的,同時,它也能夠和現存的sql工具整合在一起。執行hive查詢會花費很長時間,因為它會預設遍歷表中所有的資料。雖然有這樣的缺點,一次遍歷的資料量可以通過hive的分割槽機制來控制。分割槽允許在資料集上執行過濾查詢,這些資料集儲存在不同的資料夾內,查詢的時候只遍歷指定資料夾(分割槽)中的資料。這種機制可以用來,例如,只處理在某乙個時間範圍內的檔案,只要這些檔名中包括了時間格式。

hbase通過儲存key/value來工作。它支援四種主要的操作:增加或者更新行,檢視乙個範圍內的cell,獲取指定的行,刪除指定的行、列或者是列的版本。版本資訊用來獲取歷史資料(每一行的歷史資料可以被刪除,然後通過hbase compactions就可以釋放出空間)。雖然hbase包括**,但是schema僅僅被**和列簇所要求,列不需要schema。hbase的**包括增加/計數功能。

3. 限制

hive目前不支援更新操作。另外,由於hive在hadoop上執行批量操作,它需要花費很長的時間,通常是幾分鐘到幾個小時才可以獲取到查詢的結果。hive必須提供預先定義好的schema將檔案和目錄對映到列,並且hive與acid不相容。

hbase查詢是通過特定的語言來編寫的,這種語言需要重新學習。類sql的功能可以通過apache phonenix實現,但這是以必須提供schema為代價的。另外,hbase也並不是相容所有的acid特性,雖然它支援某些特性。最後但不是最重要的--為了執行hbase,zookeeper是必須的,zookeeper是乙個用來進行分布式協調的服務,這些服務包括配置服務,維護元資訊和命名空間服務。

4. 應用場景

hive適合用來對一段時間內的資料進行分析查詢,例如,用來計算趨勢或者**的日誌。hive不應該用來進行實時的查詢。因為它需要很長時間才可以返回結果。

hbase非常適合用來進行大資料的實時查詢。facebook用hbase進行訊息和實時的分析。它也可以用來統計facebook的連線數。

5. 總結

hive和hbase是兩種基於hadoop的不同技術--hive是一種類sql的引擎,並且執行mapreduce任務,hbase是一種在hadoop之上的nosql 的key/vale資料庫。當然,這兩種工具是可以同時使用的。就像用google來搜尋,用facebook進行社交一樣,hive可以用來進行統計查詢,hbase可以用來進行實時查詢,資料也可以從hive寫到hbase,設定再從hbase寫回hive。

關於如何開啟Hadoop和hive

關於如何開啟hadoop集群 安裝了hadoop之後,忘了怎麼開啟hadoop了,我在這裡記一下,如果以後又忘了的話就可以在這裡找到了。先按下ctrl alt t開啟linux終端,輸入 start all.sh hive 就可以啟動hadoop了 但是,這是配置好path的情況,我現在並不會配置p...

hive和Hadoop的版本關係

在這裡插入描述 參考官網 版本資訊來自於hive原始碼包的pom.xml hive 3.1.2 3.1.0 2.0.0 alpha4 2.3.0 2.11 2.11.8 3.4.6 hive 2.3.6 2.7.2 1.1.1 2.0.0 2.11 2.11.8 3.4.6 3.0.x 2.3.0 ...

如何使用 Hadoop 提公升 Hive 查詢效能

apache hive 是乙個 hadoop 之上構建起來的資料倉儲,用於資料的分析 彙總以及查詢。hive 提供了一種類 sql 的介面來查詢被儲存在各種資料來源和檔案系統中的資料。apache tez engine 是一種用來構建高效能批處理與互動式資料處理的可擴充套件框架。在 hadoop 中...