1. 程式人生 > >Apache Hive

Apache Hive

watermark .com mysq 數據模型 執行 conf 成本 and 圖片

1. Hive 簡介
1.1. 什麽是Hive
Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,並提供類SQL查詢功能。
本質是將SQL轉換為MapReduce程序。
主要用途:用來做離線數據分析,比直接用MapReduce開發效率更高。
技術分享圖片
1.2. 為什麽使用Hive
直接使用Hadoop MapReduce處理數據所面臨的問題:
人員學習成本太高
MapReduce實現復雜查詢邏輯開發難度太大
使用Hive :
操作接口采用類SQL語法,提供快速開發的能力
避免了去寫MapReduce,減少開發人員的學習成本
功能擴展很方便
2. Hive 架構
2.1. Hive架構圖
技術分享圖片
2.2. Hive組件
用戶接口:包括 CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)為shell命令行;JDBC/ODBC是Hive的JAVA實現,與傳統數據庫JDBC類似;WebGUI是通過瀏覽器訪問Hive。
元數據存儲:通常是存儲在關系數據庫如 mysql/derby中。Hive 將元數據存儲在數據庫中。Hive 中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否為外部表等),表的數據所在目錄等。
解釋器、編譯器、優化器、執行器:完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在 HDFS 中,並在隨後有 MapReduce 調用執行。
2.3. Hive與Hadoop的關系
Hive利用HDFS存儲數據,利用MapReduce查詢分析數據。
3. Hive與傳統數據庫對比
hive用於海量數據的離線數據分析。
hive具有sql數據庫的外表,但應用場景完全不同,hive只適合用來做批量數據統計分析。
更直觀的對比請看下面這幅圖:
技術分享圖片
4. Hive數據模型
Hive中所有的數據都存儲在HDFS中,沒有專門的數據存儲格式
在創建表時指定數據中的分隔符,Hive 就可以映射成功,解析數據。
Hive中包含以下數據模型:
db:在hdfs中表現為hive.metastore.warehouse.dir目錄下一個文件夾
table:在hdfs中表現所屬db目錄下一個文件夾
external table:數據存放位置可以在HDFS任意指定路徑
partition:在hdfs中表現為table目錄下的子目錄
bucket:在hdfs中表現為同一個表目錄下根據hash散列之後的多個文件

5. Hive 安裝部署
Hive安裝前需要安裝好JDK和Hadoop。配置好環境變量。
根據元數據存儲的介質不同,分為下面兩個版本,其中derby屬於內嵌模式。實際生產環境中則使用mysql來進行元數據的存儲。
內置derby版:
解壓hive安裝包
bin/hive 啟動即可使用
缺點:不同路徑啟動hive,每一個hive擁有一套自己的元數據,無法共享
mysql版:
解壓、修改配置文件
vi conf/hive-site.xml
配置Mysql元數據庫信息
詳細安裝步驟查看《Hive安裝手冊》

Apache Hive