Hive簡介、應用場景及架構原理

一塵在心發表於2018-08-20

Hive簡介、應用場景及架構原理

Hive背景介紹

Hive最初是Facebook為了滿足對海量社交網路資料的管理和機器學習的需求而產生和發展的。馬雲在退休的時候說網際網路現在進入了大資料時代,大資料是現在網際網路的趨勢,而hadoop就是大資料時代裡的核心技術,但是hadoop的mapreduce操作專業性太強,所以facebook在這些基礎上開發了hive框架,畢竟世界上會sql的人比會java的人多的多,hive可以說是學習hadoop相關技術的一個突破口,那些志立於投身hadoop技術開發的童鞋們,可以先從hive開始哦。那麼,hive是什麼呢?

Hive簡介

簡單的說:hive是基於hadoop的資料倉儲。

那麼為什麼說hive是基於Hadoop的呢?

之所以說hive是構建在Hadoop之上的資料倉儲,簡單的說是因為:

①資料儲存在hdfs上

②資料計算用mapreduce

下面我們來深入分析一下:

Hive是一種建立在Hadoop檔案系統上的資料倉儲架構,並對儲存在HDFS中的資料進行分析和管理;它可以將結構化的資料檔案對映為一張資料庫表,並提供完整的 SQL 查詢功能,可以將 SQL 語句轉換為 MapReduce 任務進行執行,通過自己的 SQL 去查詢分析需要的內容,這套 SQL 簡稱 Hive SQL(HQL),使不熟悉 MapReduce 的使用者也能很方便地利用 SQL 語言對資料進行查詢、彙總、分析。同時,這個語言也允許熟悉 MapReduce 開發

者們開發自定義的mappers和reducers來處理內建的mappers和reducers無法完成的複雜的

分析工作。Hive還允許使用者編寫自己定義的函式UDF,用來在查詢中使用。Hive中有3種

UDF:User Defined Functions(UDF)、User Defined Aggregation

Functions(UDAF)、User Defined Table Generating Functions(UDTF)。也就是說對

儲存在HDFS中的資料進行分析和管理,我們不想使用手工,我們建立一個工具吧,那麼這個工具就可以是hive。

Hive常見的應用場景

Hive 並不適合那些需要低延遲的應用;

Hive 的最佳使用場合是大資料集的批處理作業,例如,網路日誌分析。

(1)日誌分析:大部分網際網路公司使用hive進行日誌分析,包括百度、淘寶等。

1)統計網站一個時間段內的pv、uv

2)多維度資料分析

(2)海量結構化資料離線分析

Hive的特點(優缺點)

(一)hive的優點

(1)簡單容易上手:提供了類SQL查詢語言HQL

(2)可擴充套件:為超大資料集設計了計算/擴充套件能力(MR作為計算引擎,HDFS作為儲存系統)

一般情況下不需要重啟服務Hive可以自由的擴充套件叢集的規模。

(3)提供統一的後設資料管理

(4)延展性:Hive支援使用者自定義函式,使用者可以根據自己的需求來實現自己的函式

(5)容錯:良好的容錯性,節點出現問題SQL仍可完成執行

(二)hive的缺點(侷限性)

(1)hive的HQL表達能力有限

1)迭代式演算法無法表達,比如pagerank

2)資料探勘方面,比如kmeans

(2)hive的效率比較低

1)hive自動生成的mapreduce作業,通常情況下不夠智慧化

2)hive調優比較困難,粒度較粗

3)hive可控性差

Hive最後總結

 簡單容易上手:提供了類SQL查詢語言HQL

 可擴充套件:為超大資料集設計了計算/擴充套件能力(MR作為計算引擎,HDFS作為儲存系統)

 延展性:Hive支援使用者自定義函式,使用者可以根據自己的需求來實現自己的函式

 容錯:良好的容錯性,節點出現問題SQL仍可完成執行

 hive的HQL表達能力有限,比如迭代式演算法無法表達

 hive自動生成的mapreduce作業,通常情況下不夠智慧化

 hive調優比較困難,粒度較粗

 hive可控性差

Hive的預設儲存格式:TEXTFILE

相關文章