-
大小: 1.49MB文件類型: .pdf金幣: 1下載: 1 次發(fā)布日期: 2023-10-12
- 語(yǔ)言: 數(shù)據(jù)庫(kù)
- 標(biāo)簽: Hive??
資源簡(jiǎn)介
1. HIVE結(jié)構(gòu)
Hive 是建立在 Hadoop 上的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架。它提供了一系列的工具,可以用來(lái)進(jìn)行數(shù)
據(jù)提取轉(zhuǎn)化加載 (ETL),這是一種可以存儲(chǔ)、 查詢和分析存儲(chǔ)在 Hadoop 中的大規(guī)模數(shù)據(jù)的
機(jī)制。 Hive 定義了簡(jiǎn)單的類 SQL 查詢語(yǔ)言,稱為 QL,它允許熟悉 SQL 的用戶查詢數(shù)據(jù)。
同時(shí),這個(gè)語(yǔ)言也允許熟悉 MapReduce 開(kāi)發(fā)者的開(kāi)發(fā)自定義的 mapper 和 reducer 來(lái)處理
內(nèi)建的 mapper 和 reducer 無(wú)法完成的復(fù)雜的分析工作。
1.1HIVE 架構(gòu)
Hive 的結(jié)構(gòu)可以分為以下幾部分:
用戶接口:包括 CLI, Client, WUI
元數(shù)據(jù)存儲(chǔ)。通常是存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)如 mysql, derby 中
6
解釋器、編譯器、優(yōu)化器、執(zhí)行器
Hadoop:用 HDFS 進(jìn)行存儲(chǔ),利用 MapReduce 進(jìn)行計(jì)算
1、 用戶接口主要有三個(gè): CLI,Client 和 WUI。其中最常用的是 CLI , Cli 啟動(dòng)的時(shí)候,
會(huì)同時(shí)啟動(dòng)一個(gè) Hive 副本。 Client 是 Hive 的客戶端,用戶連接至 Hive Server 。
在啟動(dòng) Client 模式的時(shí)候, 需要指出 Hive Server 所在節(jié)點(diǎn),并且在該節(jié)點(diǎn)啟動(dòng) Hive
Server 。 WUI 是通過(guò)瀏覽器訪問(wèn) Hive 。
2、 Hive 將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,如 mysql 、 derby 。 Hive 中的元數(shù)據(jù)包括表的名字,
表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等。
3、 解釋器、編譯器、優(yōu)化器完成 HQL 查詢語(yǔ)句從詞法分析、語(yǔ)法分析、編譯、優(yōu)化以及
查詢計(jì)劃的生成。生成的查詢計(jì)劃存儲(chǔ)在 HDFS 中,并在隨后有 MapReduce 調(diào)用執(zhí)行。
4、 Hive 的數(shù)據(jù)存儲(chǔ)在 HDFS 中,大部分的查詢由 MapReduce 完成(包含 * 的查詢,比
如 select * from tbl 不會(huì)生成 MapRedcue 任務(wù))。
1.2Hive 和 Hadoop 關(guān)系
Hive 構(gòu)建在 Hadoop 之上,
HQL 中對(duì)查詢語(yǔ)句的解釋、優(yōu)化、生成查詢計(jì)劃是由 Hive 完成的
所有的數(shù)據(jù)都是存儲(chǔ)在 Hadoop 中
查詢計(jì)劃被轉(zhuǎn)化為 MapReduce 任務(wù),在 Hadoop 中執(zhí)行(有些查詢沒(méi)有 MR 任
務(wù),如: select * from table )
Hadoop和 Hive 都是用 UTF-8 編碼的
7
1.3Hive 和普通關(guān)系數(shù)據(jù)庫(kù)的異同
Hive RDBMS
查詢語(yǔ)言 HQL SQL
數(shù)據(jù)存儲(chǔ) HDFS Raw Device or Local FS
索引 無(wú) 有
執(zhí)行 MapReduce Excutor
執(zhí)行延遲 高 低
處理數(shù)據(jù)規(guī)模 大 小
1. 查詢語(yǔ)言。由于 SQL 被廣泛的應(yīng)用在數(shù)據(jù)倉(cāng)庫(kù)中,因此,專門(mén)針對(duì) Hive 的特性設(shè)計(jì)
了類 SQL 的查詢語(yǔ)言 HQL。熟悉 SQL 開(kāi)發(fā)的開(kāi)發(fā)者可以很方便的使用 Hive 進(jìn)行開(kāi)
發(fā)。
2. 數(shù)據(jù)存儲(chǔ)位置。 Hive 是建立在 Hadoop 之上的,所有 Hive 的數(shù)據(jù)都是存儲(chǔ)在 HDFS 中
的。而數(shù)據(jù)庫(kù)則可以將數(shù)據(jù)保存在塊設(shè)備或者本地文件系統(tǒng)中。
3. 數(shù)據(jù)格式。 Hive 中沒(méi)有定義專門(mén)的數(shù)據(jù)格式,數(shù)據(jù)格式可以由用戶指定,用戶定義數(shù)
據(jù)格式需要指定三個(gè)屬性:列分隔符(通常為空格、” t ”、” x001″)、行分隔符
(” n”)以及讀取文件數(shù)據(jù)的方法( Hive 中默認(rèn)有三個(gè)文件格式 TextFile ,
SequenceFile 以及 RCFile )。由于在加載數(shù)據(jù)的過(guò)程中,不需要從用戶數(shù)據(jù)格式到
Hive 定義的數(shù)據(jù)格式的轉(zhuǎn)換,因此, Hive 在加載的過(guò)程中不會(huì)對(duì)數(shù)據(jù)本身進(jìn)行任何修
改,而只是將數(shù)據(jù)內(nèi)容復(fù)制或者移動(dòng)到相應(yīng)的 HDFS 目錄中。而在數(shù)據(jù)庫(kù)中,不同的數(shù)
據(jù)庫(kù)有不同的存儲(chǔ)引擎,定義了自己的數(shù)據(jù)格式。所有數(shù)據(jù)都會(huì)按照一定的組織存儲(chǔ),
因此,數(shù)據(jù)庫(kù)加載數(shù)據(jù)的過(guò)程會(huì)比較耗時(shí)。
4. 數(shù)據(jù)更新。由于 Hive 是針對(duì)數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用設(shè)計(jì)的,而數(shù)據(jù)倉(cāng)庫(kù)的內(nèi)容是讀多寫(xiě)少的。
因此, Hive 中不支持對(duì)數(shù)據(jù)的改寫(xiě)和添加,所有的數(shù)據(jù)都是在加載的時(shí)候中確定好的。
而數(shù)據(jù)庫(kù)中的數(shù)據(jù)通常是需要經(jīng)常進(jìn)行修改的,因此可以使用 INSERT
INTO ... VALUES 添加數(shù)據(jù),使用 UPDATE ... SET 修改數(shù)據(jù)。
5. 索引。之前已經(jīng)說(shuō)過(guò), Hive 在加載數(shù)據(jù)的過(guò)程中不會(huì)對(duì)數(shù)據(jù)進(jìn)行任何處理,甚至不會(huì)
對(duì)數(shù)據(jù)進(jìn)行掃描,因此也沒(méi)有對(duì)數(shù)據(jù)中的某些 Key 建立索引。
Hive 是建立在 Hadoop 上的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架。它提供了一系列的工具,可以用來(lái)進(jìn)行數(shù)
據(jù)提取轉(zhuǎn)化加載 (ETL),這是一種可以存儲(chǔ)、 查詢和分析存儲(chǔ)在 Hadoop 中的大規(guī)模數(shù)據(jù)的
機(jī)制。 Hive 定義了簡(jiǎn)單的類 SQL 查詢語(yǔ)言,稱為 QL,它允許熟悉 SQL 的用戶查詢數(shù)據(jù)。
同時(shí),這個(gè)語(yǔ)言也允許熟悉 MapReduce 開(kāi)發(fā)者的開(kāi)發(fā)自定義的 mapper 和 reducer 來(lái)處理
內(nèi)建的 mapper 和 reducer 無(wú)法完成的復(fù)雜的分析工作。
1.1HIVE 架構(gòu)
Hive 的結(jié)構(gòu)可以分為以下幾部分:
用戶接口:包括 CLI, Client, WUI
元數(shù)據(jù)存儲(chǔ)。通常是存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)如 mysql, derby 中
6
解釋器、編譯器、優(yōu)化器、執(zhí)行器
Hadoop:用 HDFS 進(jìn)行存儲(chǔ),利用 MapReduce 進(jìn)行計(jì)算
1、 用戶接口主要有三個(gè): CLI,Client 和 WUI。其中最常用的是 CLI , Cli 啟動(dòng)的時(shí)候,
會(huì)同時(shí)啟動(dòng)一個(gè) Hive 副本。 Client 是 Hive 的客戶端,用戶連接至 Hive Server 。
在啟動(dòng) Client 模式的時(shí)候, 需要指出 Hive Server 所在節(jié)點(diǎn),并且在該節(jié)點(diǎn)啟動(dòng) Hive
Server 。 WUI 是通過(guò)瀏覽器訪問(wèn) Hive 。
2、 Hive 將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,如 mysql 、 derby 。 Hive 中的元數(shù)據(jù)包括表的名字,
表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等。
3、 解釋器、編譯器、優(yōu)化器完成 HQL 查詢語(yǔ)句從詞法分析、語(yǔ)法分析、編譯、優(yōu)化以及
查詢計(jì)劃的生成。生成的查詢計(jì)劃存儲(chǔ)在 HDFS 中,并在隨后有 MapReduce 調(diào)用執(zhí)行。
4、 Hive 的數(shù)據(jù)存儲(chǔ)在 HDFS 中,大部分的查詢由 MapReduce 完成(包含 * 的查詢,比
如 select * from tbl 不會(huì)生成 MapRedcue 任務(wù))。
1.2Hive 和 Hadoop 關(guān)系
Hive 構(gòu)建在 Hadoop 之上,
HQL 中對(duì)查詢語(yǔ)句的解釋、優(yōu)化、生成查詢計(jì)劃是由 Hive 完成的
所有的數(shù)據(jù)都是存儲(chǔ)在 Hadoop 中
查詢計(jì)劃被轉(zhuǎn)化為 MapReduce 任務(wù),在 Hadoop 中執(zhí)行(有些查詢沒(méi)有 MR 任
務(wù),如: select * from table )
Hadoop和 Hive 都是用 UTF-8 編碼的
7
1.3Hive 和普通關(guān)系數(shù)據(jù)庫(kù)的異同
Hive RDBMS
查詢語(yǔ)言 HQL SQL
數(shù)據(jù)存儲(chǔ) HDFS Raw Device or Local FS
索引 無(wú) 有
執(zhí)行 MapReduce Excutor
執(zhí)行延遲 高 低
處理數(shù)據(jù)規(guī)模 大 小
1. 查詢語(yǔ)言。由于 SQL 被廣泛的應(yīng)用在數(shù)據(jù)倉(cāng)庫(kù)中,因此,專門(mén)針對(duì) Hive 的特性設(shè)計(jì)
了類 SQL 的查詢語(yǔ)言 HQL。熟悉 SQL 開(kāi)發(fā)的開(kāi)發(fā)者可以很方便的使用 Hive 進(jìn)行開(kāi)
發(fā)。
2. 數(shù)據(jù)存儲(chǔ)位置。 Hive 是建立在 Hadoop 之上的,所有 Hive 的數(shù)據(jù)都是存儲(chǔ)在 HDFS 中
的。而數(shù)據(jù)庫(kù)則可以將數(shù)據(jù)保存在塊設(shè)備或者本地文件系統(tǒng)中。
3. 數(shù)據(jù)格式。 Hive 中沒(méi)有定義專門(mén)的數(shù)據(jù)格式,數(shù)據(jù)格式可以由用戶指定,用戶定義數(shù)
據(jù)格式需要指定三個(gè)屬性:列分隔符(通常為空格、” t ”、” x001″)、行分隔符
(” n”)以及讀取文件數(shù)據(jù)的方法( Hive 中默認(rèn)有三個(gè)文件格式 TextFile ,
SequenceFile 以及 RCFile )。由于在加載數(shù)據(jù)的過(guò)程中,不需要從用戶數(shù)據(jù)格式到
Hive 定義的數(shù)據(jù)格式的轉(zhuǎn)換,因此, Hive 在加載的過(guò)程中不會(huì)對(duì)數(shù)據(jù)本身進(jìn)行任何修
改,而只是將數(shù)據(jù)內(nèi)容復(fù)制或者移動(dòng)到相應(yīng)的 HDFS 目錄中。而在數(shù)據(jù)庫(kù)中,不同的數(shù)
據(jù)庫(kù)有不同的存儲(chǔ)引擎,定義了自己的數(shù)據(jù)格式。所有數(shù)據(jù)都會(huì)按照一定的組織存儲(chǔ),
因此,數(shù)據(jù)庫(kù)加載數(shù)據(jù)的過(guò)程會(huì)比較耗時(shí)。
4. 數(shù)據(jù)更新。由于 Hive 是針對(duì)數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用設(shè)計(jì)的,而數(shù)據(jù)倉(cāng)庫(kù)的內(nèi)容是讀多寫(xiě)少的。
因此, Hive 中不支持對(duì)數(shù)據(jù)的改寫(xiě)和添加,所有的數(shù)據(jù)都是在加載的時(shí)候中確定好的。
而數(shù)據(jù)庫(kù)中的數(shù)據(jù)通常是需要經(jīng)常進(jìn)行修改的,因此可以使用 INSERT
INTO ... VALUES 添加數(shù)據(jù),使用 UPDATE ... SET 修改數(shù)據(jù)。
5. 索引。之前已經(jīng)說(shuō)過(guò), Hive 在加載數(shù)據(jù)的過(guò)程中不會(huì)對(duì)數(shù)據(jù)進(jìn)行任何處理,甚至不會(huì)
對(duì)數(shù)據(jù)進(jìn)行掃描,因此也沒(méi)有對(duì)數(shù)據(jù)中的某些 Key 建立索引。
代碼片段和文件信息
評(píng)論
共有 條評(píng)論