- 目錄
- 前言:
- 1、Hive簡介
- 2、Hive架構
- 3、Hive與Hadoop的關系
- 4、Hive與傳統數據庫對比
- 5、Hive的數據存儲
- 總結:
目錄
前言:
為什么使用Hive
直接使用hadoop所面臨的問題
人員學習成本太高
項目周期要求太短
MapReduce實現復雜查詢邏輯開發難度太大
使用Hive的優點:
操作接口采用類SQL語法,提供快速開發的能力。
避免了去寫MapReduce,減少開發人員的學習成本。
擴展功能很方便。
1、Hive簡介
1.1、什么是Hive
Hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供類SQL查詢功能。
1.2、Hive的特點
- 可擴展 :
Hive可以自由的擴展集群的規模,一般情況下不需要重啟服務。 - 延展性:
Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。 - 容錯:
良好的容錯性節點出現問題SQL仍可完成執行。
2、Hive架構
2.1、架構圖
2.2、基本組成
- 用戶接口:包括 CLI、JDBC/ODBC、WebGUI。
- 元數據存儲:通常是存儲在關系數據庫如 mysql , derby中。
- 解釋器、編譯器、優化器、執行器。
2.3、各組件的基本功能
用戶接口主要由三個:CLI、JDBC/ODBC和WebGUI。其中,CLI為shell命令行;JDBC/ODBC是Hive的JAVA實現,與傳統數據庫JDBC類似;WebGUI是通過瀏覽器訪問Hive。
元數據存儲:Hive 將元數據存儲在數據庫中。Hive
中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。解釋器、編譯器、優化器完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在 HDFS中,并在隨后有 MapReduce 調用執行。
3、Hive與Hadoop的關系
Hive利用HDFS存儲數據,利用MapReduce查詢數據
4、Hive與傳統數據庫對比
總結:hive具有sql數據庫的外表,但應用場景完全不同,hive只適合用來做批量數據統計分析。
5、Hive的數據存儲
1、Hive中所有的數據都存儲在 HDFS 中,沒有專門的數據存儲格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)
2、只需要在創建表的時候告訴 Hive 數據中的列分隔符和行分隔符,Hive 就可以解析數據。
3、Hive 中包含以下數據模型:DB、Table,External Table,Partition,Bucket。
- db:在hdfs中表現為${hive.metastore.warehouse.dir}目錄下一個文件夾。
- table:在hdfs中表現所屬db目錄下一個文件夾。
- external table:外部表,與table類似,不過其數據存放位置可以在任意指定路徑 普通表: 刪除表后, hdfs上的文件都刪了 External外部表刪除后,hdfs上的文件沒有刪除, 只是把文件刪除了。
- partition:在hdfs中表現為table目錄下的子目錄 。
- bucket:桶, 在hdfs中表現為同一個表目錄下根據hash散列之后的多個文件, 會根據不同的文件把數據放到不同的文件中。
總結:
對于Hive來說,個人感覺只要知道以下幾個知識點就算是達到和博主一樣的小菜鳥的境界,后期可以通過專項學習來進化為“大鵬”:
1、Hive是什么,干什么用的。
2、理解Hive的工作原理。
3、熟練掌握Hql的編寫,能夠運用Hql進行簡單的數據分析。
目前只想到了這些點,如有遺漏后續會接著補充。