大數據的倉庫Hive學習(一)

      我們接着之前學習的大數據來學習。之前說到了NoSql的HBase數據庫以及Hadoop中的HDFS存儲系統,可是我們發現這跟我們平時常用的關係型數據庫有很大區別,爲了使用方便,產生了針對大數據存儲的數據倉庫Hive。

一、是什麼

1、概念

      Hive 是一個基於 Hadoop 的開源數據倉庫工具,用於存儲和處理海量結構化數據。 它把海量數據存儲於 hadoop 文件系統,而不是數據庫,但提供了一套類數據庫的數據存儲和處理機制,並採用 HQL (類 SQL )語言對這些數據進行自動化管理和處理。我們可以把 Hive 中海量結構化數據看成一個個的表,而實際上這些數據是分佈式存儲在 HDFS 中的。 Hive 經過對語句進行解析和轉換,最終生成一系列基於 hadoop 的 map/reduce 任務,通過執行這些任務完成數據處理。

2、體系結構

這裏寫圖片描述

  • hiveserver

hiveserver啓動方式:hive –service hiveserver
HiveServer支持多種連接方式:Thrift、JDBC、ODBC

  • metastore

      metastore用來存儲hive的元數據信息(表格、數據庫定義等),默認情況下是和hive綁定的,部署在同一個JVM中,將元數據存儲到Derby中
      這種方式不好的一點是沒有辦法爲一個Hive開啓多個實例(Derby在多個服務實例之間沒有辦法共享)

這裏寫圖片描述

      Hive提供了增強配置,可將數據庫替換成MySql等關係數據庫,將存儲數據獨立出來在多個服務實例之間共享

這裏寫圖片描述

      甚至還可以將metastore Service也獨立出來,部署到其他JVM中去,在通過遠程調用的方式去訪問

這裏寫圖片描述

3、優缺點

  • 優點
可擴展

      Hive可以自由的擴展集羣的規模,一般情況下不需要重啓服務

延展性

      Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數

容錯

      良好的容錯性,節點出現問題SQL仍可完成執行

  • 缺點
不支持記錄級別的更新、插入和刪除操作

      Hive不是一個完整的數據庫。Hadoop以及hdfs的設計本身約束和侷限性地限制了hive所能勝任的工作。Hive不支持記錄級別的更新、插入和刪除操作。但是用戶可以通過查詢生成新表或者將查詢結果導入到文件中。

查詢延時比較嚴重

      因爲Hadoop是一個面向批處理的系統,而mapreduce任務(job)的啓動過程需要消耗較長的時間,所以hive查詢延時比較嚴重。傳統數據庫中在秒級可以完成的查詢,在hive中,即時數據集相對較小,往往也需要執行更長的時間。
由於Hadoop本身的時間開銷很大,並且Hadoop所被設計用來處理的數據規模非常大,因此提交查詢和返回結果是可能具有非常大的延時的,所以hive並不能滿足OLAP的“聯機”部分,至少目前並沒有滿足。如果用戶需要對大規模數據使用OLTP功能的話,那麼應該選擇使用一個NOSQL數據庫。例如,和Hadoop結合使用的HBase及Cassandra.

不支持事務 

二、相關聯繫

1、與HBase的關係

      Hive是基於Hadoop的一個數據倉庫工具,是爲簡化編寫MapReduce程序而生的,Hive十分適合數據倉庫的統計分析。
HBase是一個分佈式的、面向列的開源數據庫,它是一個適合於非結構化數據存儲的數據庫。

2、與RDBMS的關係

這裏寫圖片描述


總結:

      今天我們通過對Hive的學習,對大數據的處理又有了一定的認識。在以後的實際操作中,我們去慢慢掌握Hive的使用方法。通過不斷學習,達到自己所追求的目標。

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