Hive面試篇之Hive與Hbase的區別

Hive面試篇之Hive與Hbase的區別

使用方面區別

Hive是一個構建在Hadoop平臺上的數據倉庫,可以將結構化的數據文件映射爲一張數據庫表。通過Hive可以使用HQL語言查詢存放在HDFS上的數據。HQL是一種類SQL語言,這種語言最終被轉化成Map/Reduce。
HBase 是基於HDFS平臺的Key/Value類型的NoSql數據庫,是一個分佈式、可擴展、存儲海量數據的數據庫,並且對與null值保存不佔用空間。HBase能夠在數據庫上實時運行,而不是運行MapReduce任務。HBase被分區成表,表格又進一步分割成列族。列族必須使用Schema定義,列族將某一類型的列集合起來。例如:“message"列族可能包含"to”、“from” 、“date” 、"body"等列。HBase中每一個Key/Value被定義爲一個cell,一個完整的cell由rowkey、列族、列、時間戳組成。在HBase中,行是Key/Value映射的集合,整個映射通過rowkey來唯一標識。HBase利用Hadoop的基礎設施,可以進行水平擴展。

兩者的特點

Hive幫助熟悉SQL的人運行MapReduce任務。運行Hive查詢會花費較長時間,因爲Hive的默認計算引擎是Hadoop的MapReduce。當然Hive也可以將底層計算引擎更換爲Spark/Tez等。
HBase通過存儲Key/Value類型數據來工作。它支持四種主要的操作:增加或者更新行、查看一個範圍內的cell、獲取指定的行、刪除指定的行、列或者列的版本。HBase數據的版本信息主要用來獲取歷史數據,每一行的歷史數據可以被刪除,然後通過HBase 的Compactions可以釋放空間。雖然HBase包括表格,但是schema僅僅被表格和列族所要求,列不需要schema。HBase的表包括增加和計數功能。

限制

Hive目前僅支持ORCFile文件格式的數據更新操作(前提是需要開啓事務支持),Hive必須提供預先定義好的schema,將文件映射成表。
HBase的SQL查詢功能可以通過 Apache Phonenix實現,需要提供表的schema。HBase的運行需要zookeeper的支持,zookeeper用來分佈式協調服務(配置服務、維護元信息、命名空間服務)
應用場景
Hive主要用戶構建基於Hadoop平臺的數據倉庫,處理大數據量的離線處理工作;
HBase適合用來大數據的實時查詢、海量數據的存儲、離散型數據的存儲;

總結

Hive和Hbase是兩種基於Hadoop的不同技術–Hive是一種類SQL的引擎,並且運行MapReduce任務,HBase是一種在Hadoop之上的NoSQL 的Key/value數據庫。當然,這兩種工具是可以同時使用的。Hive可以用來進行統計查詢,HBase可以用來進行實時查詢,數據也可以從Hive寫到Hbase,設置再從Hbase寫回Hive。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章