天天看點

Hive和Hbase的各自适用場景

來源:

https://www.zhihu.com/question/21677041/answer/185664626

作者:有點文

大資料技術與架構

點選右側關注,大資料開發領域最強公衆号!

暴走大資料

點選右側關注,暴走大資料!

By 

大資料技術與架構

場景描述:

先放結論:

Hbase和Hive在大資料架構中處在不同位置,Hbase主要解決實時資料查詢問題,Hive主要解決資料處理和計算問題,一般是配合使用

關鍵詞:Hbase Hive

先放結論:Hbase和Hive在大資料架構中處在不同位置,Hbase主要解決實時資料查詢問題,Hive主要解決資料處理和計算問題,一般是配合使用。

一、差別:

  1. Hbase: Hadoop database 的簡稱,也就是基于Hadoop資料庫,是一種NoSQL資料庫,主要适用于海量明細資料(十億、百億)的随機實時查詢,如日志明細、交易清單、軌迹行為等。
  2. Hive:Hive是Hadoop資料倉庫,嚴格來說,不是資料庫,主要是讓開發人員能夠通過SQL來計算和處理HDFS上的結構化資料,适用于離線的批量資料計算。
  • 通過中繼資料來描述Hdfs上的結構化文本資料,通俗點來說,就是定義一張表來描述HDFS上的結構化文本,包括各列資料名稱,資料類型是什麼等,友善我們處理資料,目前很多SQL ON Hadoop的計算引擎均用的是hive的中繼資料,如Spark SQL、Impala等;
  • 基于第一點,通過SQL來處理和計算HDFS的資料,Hive會将SQL翻譯為Mapreduce來處理資料;

二、關系

在大資料架構中,Hive和HBase是協作關系,資料流一般如下圖:

  1. 通過ETL工具将資料源抽取到HDFS存儲;
  2. 通過Hive清洗、處理和計算原始資料;
  3. HIve清洗處理後的結果,如果是面向海量資料随機查詢場景的可存入Hbase
  4. 資料應用從HBase查詢資料;

更為細緻的差別如下:

  • Hive中的表是純邏輯表,就隻是表的定義等,即表的中繼資料。Hive本身不存儲資料,它完全依賴HDFS和MapReduce。這樣就可以将結構化的資料檔案映射為為一張資料庫表,并提供完整的SQL查詢功能,并将SQL語句最終轉換為MapReduce任務進行運作。而HBase表是實體表,适合存放非結構化的資料。
  • Hive是基于MapReduce來處理資料,而MapReduce處理資料是基于行的模式;HBase處理資料是基于列的而不是基于行的模式,适合海量資料的随機通路。
  • HBase的表是疏松的存儲的,是以使用者可以給行定義各種不同的列;而Hive表是稠密型,即定義多少列,每一行有存儲固定列數的資料。
  • Hive使用Hadoop來分析處理資料,而Hadoop系統是批處理系統,是以不能保證處理的低遲延問題;而HBase是近實時系統,支援實時查詢。
  • Hive不提供row-level的更新,它适用于大量append-only資料集(如日志)的批任務處理。而基于HBase的查詢,支援和row-level的更新。
  • Hive提供完整的SQL實作,通常被用來做一些基于曆史資料的挖掘、分析。而HBase不适用與有join,多級索引,表關系複雜的應用場景。

歡迎點贊+收藏+轉發朋友圈素質三連

繼續閱讀