好程式設計師大資料培訓分享如何區分Hive與HBase
好程式設計師大資料培訓分享如何區分Hive 與 HBase ,要想區分 Hive 與 HBase 是有一定難度的。下面是給大家整理的關於從其各自的定義、特點、限制、應用場景等角度來進行分析,以幫助大家更好的理解、區分 Hive 和 HBase 。
HBase 是什麼?
ApacheHBase 是執行於 HDFS 頂層的 NoSQL(NotOnlySQL ,泛指非關係型的資料庫 ) 資料庫系統。區別於 Hive , HBase 具備隨即讀寫功能,是一種面向列的資料庫。 HBase 以表的形式儲存資料,表由行和列組成,列劃分為若干個列簇 (rowfamily) 。例如:一個訊息列簇包含了傳送者、接受者、傳送日期、訊息標題以及訊息內容。每一對鍵值在 HBase 會被定義為一個 Cell ,其中,鍵由 row-key( 行鍵 ) ,列簇,列,時間戳構成。而在 HBase 中每一行代表由行鍵標識的鍵值對映組合。 Hbase 目標主要依靠橫向擴充套件,透過不斷增加廉價的商用伺服器,來增加計算和儲存能力。
Hive 是什麼?
ApacheHive 是一個構建於 Hadoop( 分散式系統基礎架構 ) 頂層的資料倉儲,注意這裡不是資料庫。 Hive 可以看作是使用者程式設計介面,它本身不儲存和計算資料;它依賴於 HDFS(Hadoop 分散式檔案系統 ) 和 MapReduce( 一種程式設計模型,對映與化簡;用於大資料並行運算 ) 。其對 HDFS 的操作類似於 SQL —名為 HiveQL ,簡稱 HQL ,它提供了豐富的 SQL 查詢方式來分析儲存在 HDFS 中的資料; HQL 經過編譯轉 MapReduce 作業後透過自己的 SQL 去查詢分析需要的內容;這樣一來,即使不熟悉 MapReduce 的使用者也可以很方便地利用 SQL 語言查詢、彙總、分析資料,降低學習成本,提高工作效率。而 MapReduce 開發人員可以把己寫的 mapper 和 reducer 作為外掛來支援 Hive 做更復雜的資料分析。
特性
遵從JDBC 的 Hive 不但可以讓具 SQL 知識的使用者來間接執行 MapReduce 作業,同時裡面也整合了目前基於 SQL 的操作工具。不過,由於預設的資料讀取是全表遍歷的,其時間的耗費也不可避免地相對較大。儘管如此,不盡相同的 Hive 分割槽方法,其遍歷讀取的資料量也是能夠有所限制的。 Hive 分割槽允許對儲存在獨立檔案上的資料進行篩選查詢,返回的是篩選後的資料。例如針對日期的日誌檔案訪問,前提是該類檔案的檔名包含日期資訊。
HBase 以鍵值對的形式儲存資料。其包含了 4 種主要的資料操作方式 :
1. 新增或更新資料行
2. 掃描獲取某範圍內的 cells
3. 為某一具體資料行返回對應的 cells
4. 從資料表中刪除資料行 / 列,或列的描述資訊
列資訊可用於獲取資料變動前的取值(透過HBase 壓縮策略可以刪除列資訊歷史記錄來釋放儲存空間)。
限制
Hive 不支援常規的 SQL 更新語句,如:資料插入,更新,刪除。因為其對資料的操作是針對整個資料表的。同時該特點也使得資料查詢用時以數分鐘甚至數小時來進行計算。此外,其 MapReduce 轉換過程必須遵從預定義的轉換規則。
HBase 的資料查詢是有一套屬於自己類似 SQL 的操作語言的,這個需要一定的學習來掌握。此外,要執行 HBase , ZooKeeper 是需要配備的。 ZooKeeper 是一個針對大型分散式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、分散式同步、組服務等。
應用舉例
Hive 適用於離線網路日誌等資料量大、靜態的資料查詢。例如:使用者消費行為記錄,網站訪問足跡等。但是不適用於聯機實時線上查詢的場合。
HBase 能在大資料聯機實時查詢場合大展身手。例如: Fackbook 就利用其對使用者間的傳送的訊息進行聯機實時分析。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2728233/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師大資料培訓分享HBase Filter過濾器概述程式設計師大資料Filter過濾器
- 好程式設計師大資料培訓分享之hive儲存過程程式設計師大資料Hive儲存過程
- 好程式設計師大資料培訓分享之hive常用內部函式程式設計師大資料Hive函式
- 好程式設計師大資料培訓分享Hive基礎知識講解程式設計師大資料Hive
- 好程式設計師大資料培訓分享MapReduce理解程式設計師大資料
- 好程式設計師大資料培訓分享之hive常見自定義函式程式設計師大資料Hive函式
- 好程式設計師大資料培訓分享Hive的靜態分割槽與動態分割槽程式設計師大資料Hive
- 好程式設計師大資料培訓分享HDFS讀流程程式設計師大資料
- 好程式設計師大資料培訓分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料培訓分享大資料的應用程式設計師大資料
- 好程式設計師大資料培訓分享大資料還學嗎?程式設計師大資料
- 好程式設計師大資料培訓分享mysql資料型別程式設計師大資料MySql資料型別
- 好程式設計師大資料培訓分享:Hadoop叢集同步程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享大資料的影響一程式設計師大資料
- 好程式設計師大資料培訓分享大資料兩大核心技術程式設計師大資料
- 好程式設計師大資料培訓分享HBase協處理器載入的三種方式程式設計師大資料
- 好程式設計師大資料培訓分享大資料就業方向有哪些?程式設計師大資料就業
- 好程式設計師大資料培訓分享大資料面試寶典三程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典四程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典六程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典一程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典二程式設計師大資料面試
- 好程式設計師大資料培訓分享Spark技術總結程式設計師大資料Spark
- 好程式設計師大資料培訓分享Hadoop的shuffle過程程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享Hadoop分散式叢集程式設計師大資料Hadoop分散式
- 好程式設計師大資料培訓分享MySQL8.0新特性程式設計師大資料MySql
- 好程式設計師大資料培訓分享Hadoop入門進階程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享Hadoop怎樣處理資料?程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享之Ambari和ClouderaManager對比程式設計師大資料Cloud
- 好程式設計師大資料培訓分享Hadoop技術優缺點程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享Spark需要什麼基礎?程式設計師大資料Spark
- 好程式設計師大資料培訓分享settings和mapping的意義程式設計師大資料APP
- 好程式設計師大資料培訓分享之MySQL資料庫SQL簡介程式設計師大資料MySql資料庫
- 好程式設計師Java培訓分享之RMI與RPC的區別程式設計師JavaRPC
- 好程式設計師Java培訓分享Java EE與Java的區別程式設計師Java
- 好程式設計師Java培訓分享本地快取如何設計程式設計師Java快取
- 好程式設計師大資料培訓分享之《MySQL資料庫》常用函式整理程式設計師大資料MySql資料庫函式
- 好程式設計師大資料培訓分享MySQL資料庫儲存引擎簡介程式設計師大資料MySql資料庫儲存引擎