Hive簡介
Hive最初是Facebook為了滿足對海量社交網絡數據的管理和機器學習的需求而產生和發展的。互聯網現在進入了大數據時代,大數據是現在互聯網的趨勢,而hadoop就是大數據時代里的核心技術,但是hadoop的mapreduce操作專業性太強,所以facebook在這些基礎上開發了hive框架,畢竟世界上會sql的人比會java的人多的多,hive可以說是學習hadoop相關技術的一個突破口。那么,hive是什么呢?
一、概述
Hive是建立在 Hadoop 上的數據倉庫基礎構架。
它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。
Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的復雜的分析工作。可以將SQL 查詢轉換為MapReduce 的job 在Hadoop集群上執行。
簡單的說:hive是基于hadoop的數據倉庫。那么為什么說hive是基于Hadoop的呢?
之所以說hive是構建在Hadoop之上的數據倉庫,簡單的說是因為:
- 數據存儲在hdfs上
- 數據計算用mapreduce
二、Hive常見的應用場景
1、日志分析:大部分互聯網公司使用hive進行日志分析,包括百度、淘寶等。
- 統計網站一個時間段內的pv、uv
- 多維度數據分析
2、海量結構化數據離線分析
三、Hive的特點(優缺點)
1、hive的優點
1)、簡單容易上手:提供了類SQL查詢語言HQL
2)、可擴展:為超大數據集設計了計算/擴展能力(MR作為計算引擎,HDFS作為存儲系統)
一般情況下不需要重啟服務Hive可以自由的擴展集群的規模。
3)、提供統一的元數據管理
4)、延展性:Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數
5)、容錯:良好的容錯性,節點出現問題SQL仍可完成執行
2、hive的缺點(局限性)
1)、hive的HQL表達能力有限
- 迭代式算法無法表達,比如pagerank
- 數據挖掘方面,比如kmeans
2)、hive的效率比較低
- hive自動生成的mapreduce作業,通常情況下不夠智能化
- hive調優比較困難,粒度較粗
- hive可控性差
四、Hive和數據庫的異同
由于Hive采用了SQL的查詢語言HQL,因此很容易將Hive理解為數據庫。其實從結構上來看,Hive和數據庫除了擁有類似的查詢語言,再無類似之處。數據庫可以用在Online的應用中,但是Hive是為數據倉庫而設計的,清楚這一點,有助于從應用角度理解Hive的特性。
Hive和數據庫的比較如下表:
MapReduce 開發人員可以把自己寫的 Mapper 和 Reducer 作為插件支持 Hive 做更復雜的數據分析。 它與關系型數據庫的 SQL 略有不同,但支持了絕大多數的語句(如 DDL、DML)以及常見的聚合函數、連接查詢、條件查詢等操作。
Hive 不適合用于聯機(online) 事務處理,也不提供實時查詢功能。它最適合應用在基于大量不可變數據的批處理作業。Hive的特點是可
伸縮(在Hadoop 的集群上動態的添加設備),可擴展、容錯、輸入格式的松散耦合。Hive 的入口是DRIVER ,執行的SQL
語句首先提交到 DRIVER 驅動,然后調用 COMPILER 解釋驅動, 最終解釋成 MapReduce 任務執行,最后將結果返回。