一、hive基本介紹 |
Hive 是建立在 Hadoop 基礎上的數據倉庫基礎構架,可以將結構化的數據文件映射爲一張數據庫表。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。並提供簡單的sql查詢功能,可以將sql語句轉換爲MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
hive由facebook開源,最初用於解決海量結構化的日誌數據統計問題;數據計算使用MR,數據存儲使用HDFS(可以與hbase集合),運行在yarn之上。可認爲是一個HQL->MR的語言翻譯器。
數據倉庫
數據倉庫,英文名稱爲Data Warehouse,可簡寫爲DW或DWH。數據倉庫,是爲企業所有級別的決策制定過程,提供所有類型數據支持的戰略集合。它是單個數據存儲,出於分析性報告和決策支持目的而創建。 爲需要業務智能的企業,提供指導業務流程改進、監視時間、成本、質量以及控制,簡而言之,數據倉庫是用來做查詢分析的數據庫,基本不用來做插入,修改,刪除。
二、hive應用場景 |
日誌分析
統計網站一個時間段內的pv、 uv
多維度數據分析、
大部分互聯網公司使用Hive進行日誌分析,包括百度、淘寶等海量結構化數據離線分析
低成本進行數據分析(不直接編寫MR)
Hive的執行延遲比較高,因此hive常用於數據分析的,對實時性要求不高的場合;
Hive優勢在於處理大數據,對於處理小數據沒有優勢。
三、hive特點 |
不足
Hive的HQL表達的能力有限
迭代式算法無法表達
有些複雜運算用HQL不易表達 Hive效率不高
Hive自動生成MapReduce作業,通常不夠智能
HQL調優困難,粒度較粗
可控性差
優勢
操作接口採用類SQL語法,提供快速開發的能力(簡單、容易上手
避免了去寫MapReduce,減少開發人員的學習成本
統一的元數據管理,可與impala/spark等共享元數據
易擴展(HDFS+MapReduce:可以擴展集羣規模;支持自定義函數)
四、hive系統架構 |
客戶端組件
1. 命令行接口(CLI)(hive shell)(最常用)
2. Web界面
3. hive應用(JDBC/ODBC/Thrift)(java訪問hive)
驅動程序
該組件包括Complier、Optimizer和Executor,它的作用是將我們寫的HiveQL(類SQL)語句進行解析、編譯優化,生成執行計劃,然後調用底層的mapreduce計算框架。
元數據存儲
元數據服務組件,這個組件存儲hive的元數據,hive的元數據存儲在關係數據庫裏,hive支持的關係數據庫有derby、mysql。元數據對於hive十分重要,因此hive支持把metastore服務獨立出來,安裝到遠程的服務器集羣裏,從而解耦hive服務和metastore服務,保證hive運行的健壯性。默認存儲在自帶的數據庫derby中,線上使用時一般換爲MySQL。元數據包括:表名、表所屬的數據庫(默認是default)、表的擁有者、列/分區字段、表的類型(是否是外部表)、表的數據所在目錄等;
Hadoop服務器