Hive基礎知識

1、產生背景                                                                                   sql

1.MapReudce編程繁瑣,須要編寫大量的代碼數據庫

2.HDFS中存放的都是文件,在HDFS中沒有Scheme的概念,沒法用SQL進行快速的查詢。編程

2、Hive的概念                                                                               服務器

Hive是基於Hadoop的一個數據倉庫工具能夠將結構化的數據文件映射爲一張數據庫表,並提供簡單的SQL查詢功能能夠將SQL語句轉換爲MapReduce任務進行運行。它使用一種使用相似於SQL的查詢語句直接做用在分佈式存儲文件系統之上的數據倉庫工具,用於解決海量結構化的日誌數據統計問題。架構

Hive的數據存儲在HDFS中,Hive的底層的計算是經過MR、Spark(Hive On Spark)Tez來實現的。HQL語句經過Hive引擎被轉化成map做業並提交到集羣去運行,所以Hive的查詢具備高延時性。分佈式

特別指出,Hive和SQL語言同樣支持刪查增改,但對於分佈式文件系統中的大規模數據來講,Hive主要用於查詢。那麼Hive和關係型數據庫有什麼關聯呢?沒有任何關聯,只是HQL和SQL類似而已。工具

Hive和關係型數據庫比較:oop

  • Hive側重於分析,而不是實時在線交易
  • Hive也支持事務,可是用的很是少
  • Hive不能隨意地insert和update
  • Hive能夠利用MR、Spark、Tez進行分佈式處理,而傳統關係型數據庫不能夠
  • Hive能夠拓展到上百個服務器,而關係型數據庫最多隻能擴展到幾十個服務器

3、Hive的架構                                                                                post

1.用戶接口spa

命令行Cli接口、Web接口(WUI)、遠程服務接口(Client)

2.元數據(Meta)存儲

Hive的元數據能夠存放在Derby、MySQL、Oracle、postgres等關係型數據庫庫中,在實際開發中一般使用MySQL。Derby是一種單Session數據庫,不支持兩臺機器同時對一個數據倉庫進行訪問,不適用於生產環境。

Hive的元數據存放在關係型數據庫中,如MySQL中,下圖就是存儲在Hive安裝目錄的與元數據相關的sql文件:

Meta ==> HA Database : MySQL主備 vip 。Hive、Spark SQL、impala等SQL on Hadoop使用同一套元數據。

爲何須要元數據?由於HDFS裏的數據是以文件的形式存在的,沒法使用SQL進行快速查詢,而元數據的做用就是給HDFS中的文件做用上Scheme信息。

3、外部表和內部表的區別                                                              

內部表:存儲目錄默認是/user/hive/warehouse,其存儲目錄能夠經過修改hive-site.xml文件的hive.metastore.dir參數進行配置。

相關文章
相關標籤/搜索