大資料技術之Hive基本概念及與資料庫的比較

2021-10-21 16:59:11 字數 3220 閱讀 6557

hive:由facebook開源用於解決海量結構化日誌的資料統計。

hive是基於hadoop的乙個資料倉儲工具,可以將結構化的資料檔案對映為一張表,並提供類

sql查詢功能。

本質是:將

hql轉化成

mapreduce程式

1)hive處理的資料儲存在hdfs

2)hive分析資料底層的預設實現是mapreduce

3)執行程式執行在yarn上

1)操作介面採用類sql語法,提供快速開發的能力(簡單、容易上手)。

2)避免了去寫mapreduce,減少開發人員的學習成本。

3)hive的執行延遲比較高,因此hive常用於資料分析,對實時性要求不高的場合。

4)hive優勢在於處理大資料,對於處理小資料沒有優勢,因為hive的執行延遲比較高。

5)hive支援使用者自定義函式,使用者可以根據自己的需求來實現自己的函式。

1.hive的hql表達能力有限

(1)迭代式演算法無法表達

(2)資料探勘方面不擅長,由於mapreduce資料處理流程的限制,效率更高的演算法卻無法實現。

2.hive的效率比較低

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

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

1.使用者介面:client

cli(command-line inte***ce)、jdbc/odbc(jdbc訪問hive)、webui(瀏覽器訪問hive)

2.元資料:metastore

元資料報括:表名、表所屬的資料庫(預設是default)、表的擁有者、列/分割槽字段、表的型別(是否是外部表)、表的資料所在目錄等;

預設儲存在自帶的

derby

資料庫中,推薦使用

mysql

儲存metastore

3.hadoop

使用hdfs進行儲存,使用mapreduce進行計算。

4.驅動器:driver

(1)解析器(sql parser):將sql字串轉換成抽象語法樹ast,這一步一般都用第三方工具庫完成,比如antlr;對ast進行語法分析,比如表是否存在、字段是否存在、sql語義是否有誤。

(2)編譯器(physical plan):將ast編譯生成邏輯執行計畫。

(3)優化器(query optimizer):對邏輯執行計畫進行優化。

(4)執行器(execution):把邏輯執行計畫轉換成可以執行的物理計畫。對於hive來說,就是mr/spark。

hive

通過給使用者提供的一系列互動介面,接收到使用者的指令

(sql)

,使用自己的

driver

,結合元資料

(metastore)

,將這些指令翻譯成

mapreduce

,提交到

hadoop

中執行,最後,將執行返回的結果輸出到使用者互動介面。

由於hive 

採用了類似

sql 

的查詢語言

hql(hive query language)

,因此很容易將

hive 

理解為資料庫。其實從結構上來看,

hive 

和資料庫除了擁有類似的查詢語言,再無類似之處。本文將從多個方面來闡述

hive 

和資料庫的差異。資料庫可以用在

online 

的應用中,但是

hive 

是為資料倉儲而設計的,清楚這一點,有助於從應用角度理解

hive 

的特性。

由於sql

被廣泛的應用在資料倉儲中,因此,專門針對

hive

的特性設計了類

sql的查詢語言

hql。熟悉

sql開發的開發者可以很方便的使用

hive

進行開發。

hive 

是建立在

hadoop 

之上的,所有

hive 

的資料都是儲存在

hdfs 

中的。而資料庫則可以將資料儲存在塊裝置或者本地檔案系統中。

由於hive

是針對資料倉儲應用設計的,而

資料倉儲的內容是讀多寫少的。

因此,hive

中不建議對資料的改寫,所有的資料都是在載入的時候確定好的。

而資料庫中的資料通常是需要經常進行修改的,因此可以使用

insert into …  values 

新增資料,使用

update … set

修改資料。

hive

中大多數查詢的執行是通過

hadoop 

提供的mapreduce 

來實現的。而資料庫通常有自己的執行引擎。

hive 

在查詢資料的時候,由於沒有索引,需要掃瞄整個表,因此延遲較高。另外乙個導致

hive 

執行延遲高的因素是

mapreduce

框架。由於

mapreduce 

本身具有較高的延遲,因此在利用

mapreduce 

執行hive

查詢時,也會有較高的延遲。相對的,資料庫的執行延遲較低。當然,這個低是有條件的,即資料規模較小,當資料規模大到超過資料庫的處理能力的時候,

hive

的平行計算顯然能體現出優勢。

由於hive

是建立在

hadoop

之上的,因此

hive

的可擴充套件性是和

hadoop

的可擴充套件性是一致的(世界上最大的

hadoop 

集群在yahoo!

,2009

年的規模在

4000 

臺節點左右)。而資料庫由於

acid 

語義的嚴格限制,擴充套件行非常有限。目前最先進的並行資料庫

oracle

在理論上的擴充套件能力也只有

100臺左右。

由於hive建立在集群上並可以利用mapreduce進行平行計算,因此可以支援很大規模的資料;對應的,資料庫可以支援的資料規模較小。

HIVE 基本概念

hive架構 hive架構圖 hive與hadoop的關係 hive利用hdfs儲存資料,利用mapreduce查詢資料 hive與hadoop關係圖 hive的資料儲存 1 hive中所有的資料都儲存在 hdfs 中,沒有專門的資料儲存格式 可支援text,sequencefile,parquet...

Hive基本概念

什麼是hive 是乙個基於hadoop的資料倉儲工具,可以將結構化資料對映成一張資料表,並提供類sql的查詢功能。hive的意義是什麼 背景 hadoop是個好東西,但是學習難度大,成本高,坡度陡。意義 目的 降低程式設計師使用hadoop的難度。降低學習成本。hive可以對資料進行儲存與計算 儲存...

Hive基本概念

hive由facebook開源,用於解決海量結構化日誌的資料統計問題。hive是hadoop的乙個資料倉儲工具,可以將結構化的資料檔案對映為一張表,並提供類sql查詢功能。其本至就是將hql轉化成mapreduce程式。缺點執行機制 hive通過使用者提供的一系列互動介面,接收使用者的指令 sql ...