怎么樣給公司做網(wǎng)站蘭州網(wǎng)絡(luò)推廣新手
Hive 安裝(基于 Ubuntu 系統(tǒng))
為了學(xué)習(xí) Hive 的相關(guān)操作,我們需要先安裝 Hive,以下是基于 Ubuntu 系統(tǒng)安裝 Hive 的步驟:
- 下載 Hive
我們將使用 hive-0.13.1-cdh5.3.2 版本,當(dāng)然你可以根據(jù)需要下載最新的 Hive 版本。
下載鏈接:Cloudera Hive 0.13.1
下載后得到一個(gè)壓縮包:hive-0.13.1-cdh5.3.2.tar.gz。
- 解壓 Hive 文件
解壓下載的壓縮包:
tar zxvf hive-0.13.1-cdh5.3.2.tar.gz
- 設(shè)置 Hive 環(huán)境變量
打開 ~/.bashrc 文件,并在文件末尾添加以下環(huán)境變量設(shè)置:
export HADOOP_USER_CLASSPATH_FIRST=true
export PATH=$PATH:$HIVE_HOME/bin
export HADOOP_HOME=/home/yourusername/hadoop-2.6.0-cdh5.5.1
export HIVE_HOME=/home/yourusername/hive-0.13.1-cdh5.3.2
注意:
- 修改 HADOOP_HOME 和 HIVE_HOME 為你自己 Hive 和 Hadoop 的實(shí)際安裝路徑。
- 保存并退出文件。
使修改的環(huán)境變量生效:
source ~/.bashrc
- 執(zhí)行 Hive
在終端中輸入 hive 進(jìn)入 Hive 命令模式:
$ hive
- 退出 Hive
如果想退出 Hive 命令行,可以使用以下命令:
hive> exit;
Hive 常用命令
以下是一些 Hive 中常用的基本命令:
- show databases 命令
列出當(dāng)前 Hive 中的所有數(shù)據(jù)庫。如果是新安裝的 Hive,會(huì)默認(rèn)有一個(gè)名為 “default” 的數(shù)據(jù)庫。
show databases;
- create database 命令
創(chuàng)建一個(gè)新的數(shù)據(jù)庫。
create database test;
- use 命令
切換到指定的數(shù)據(jù)庫。
use test;
- 顯示當(dāng)前數(shù)據(jù)庫
查看當(dāng)前所處的數(shù)據(jù)庫,可以使用以下命令:
set hive.cli.print.current.db=true;
默認(rèn)情況下,hive.cli.print.current.db 為 false,設(shè)置為 true 后,會(huì)顯示當(dāng)前所在的數(shù)據(jù)庫名。
5. drop 命令
刪除數(shù)據(jù)庫或表。
drop database test;
drop table employee;
- create table 命令
創(chuàng)建新表。以下是創(chuàng)建表的示例,字段包括姓名、ID、手機(jī)號(hào)和薪水:
create table employee (Name String comment 'Employee Name',Id int,MobileNumber String,Salary Float
)
row format delimited fields terminated by ','
lines terminated by '\n'
stored as textfile;
- 查看當(dāng)前庫的所有表
查看當(dāng)前數(shù)據(jù)庫中的所有表:
show tables;
- alter table 命令
用于修改表的屬性,如修改表名、添加列、刪除列等。
ALTER TABLE employee RENAME TO demo1;
- 加載數(shù)據(jù)到 Hive 表
將本地文件中的數(shù)據(jù)加載到 Hive 表中:
LOAD DATA LOCAL INPATH '/home/dataflair/Desktop/details.txt' OVERWRITE INTO TABLE employee;
Hive 架構(gòu)概述
Hive 架構(gòu)建立在 Hadoop 和 MapReduce 的基礎(chǔ)之上,主要用于簡(jiǎn)化大數(shù)據(jù)的查詢和分析過程。它的架構(gòu)由多個(gè)關(guān)鍵組件組成,可以分為服務(wù)端組件和客戶端組件。
服務(wù)端組件
Driver 組件: Driver 是 Hive 中的核心組件,包括三個(gè)子組件:
(1)Compiler:負(fù)責(zé)將 HiveQL 語句解析為執(zhí)行計(jì)劃。
(2)Optimizer:對(duì)生成的執(zhí)行計(jì)劃進(jìn)行優(yōu)化。
(3)Executor:執(zhí)行優(yōu)化后的計(jì)劃,并將其轉(zhuǎn)換成底層的 MapReduce 作業(yè)。
Metastore 組件: Metastore 是 Hive 用來存儲(chǔ)元數(shù)據(jù)的服務(wù),元數(shù)據(jù)包括表結(jié)構(gòu)、列類型、分區(qū)信息等。Metastore 通常存儲(chǔ)在關(guān)系數(shù)據(jù)庫中(如 Derby 或 MySQL)。它的作用非常重要,因此 Hive 允許將 Metastore 服務(wù)獨(dú)立出來,運(yùn)行在單獨(dú)的服務(wù)器集群上,以提高系統(tǒng)的健壯性和可擴(kuò)展性。
Thrift 服務(wù): Thrift 是 Facebook 開發(fā)的跨語言服務(wù)框架,Hive 使用 Thrift 來允許不同編程語言與 Hive 交互。通過 Thrift,Hive 可以暴露其接口,使得不同語言的客戶端能夠與 Hive 進(jìn)行通信。
客戶端組件
- CLI(命令行接口): Hive 提供了一個(gè)類似于 SQL 的命令行接口,用戶可以通過命令行執(zhí)行 HiveQL 查詢。
- Thrift 客戶端: Hive 的客戶端接口大多數(shù)是通過 Thrift 客戶端實(shí)現(xiàn)的,包括 JDBC 和 ODBC接口,允許其他編程語言與 Hive 進(jìn)行交互。
- Web GUI: Hive 提供了基于 Web 的圖形用戶界面(HWI,Hive Web Interface),用戶可以通過 Web
瀏覽器訪問 Hive。HWI 需要在服務(wù)器上啟動(dòng)后才能使用。
Hive 數(shù)據(jù)處理流程
Hive 的數(shù)據(jù)處理流程主要包括以下步驟:
-
UI 調(diào)用 Driver: 用戶通過 Web 界面或 CLI 輸入 HiveQL 查詢,Hive 會(huì)調(diào)用 Driver 的 execute 接口來執(zhí)行查詢。
-
Driver 創(chuàng)建會(huì)話: Driver 為每個(gè)查詢創(chuàng)建會(huì)話句柄,并將查詢發(fā)送給 Compiler 進(jìn)行解析。
-
Compiler 生成執(zhí)行計(jì)劃: Compiler 會(huì)根據(jù) HiveQL
查詢生成執(zhí)行計(jì)劃。執(zhí)行計(jì)劃包含一個(gè)有向無環(huán)圖(DAG),每個(gè)階段可能是一個(gè) MapReduce 作業(yè)、元數(shù)據(jù)操作或 HDFS 操作。
在生成執(zhí)行計(jì)劃時(shí),Compiler 會(huì)向 Metastore 請(qǐng)求元數(shù)據(jù)信息,用于查詢表達(dá)式的類型檢查。 -
優(yōu)化執(zhí)行計(jì)劃: Optimizer 對(duì)生成的執(zhí)行計(jì)劃進(jìn)行優(yōu)化,確保查詢的執(zhí)行更加高效。
-
執(zhí)行計(jì)劃提交給 Execution Engine: 執(zhí)行引擎將優(yōu)化后的執(zhí)行計(jì)劃提交給適當(dāng)?shù)慕M件進(jìn)行執(zhí)行,包括 MapReduce 階段。每個(gè)任務(wù)(mapper 或 reducer)會(huì)處理 HDFS 上的數(shù)據(jù),執(zhí)行特定的操作。
-
數(shù)據(jù)處理和中間結(jié)果存儲(chǔ):
每個(gè) Map 或 Reduce 任務(wù)會(huì)從 HDFS 讀取數(shù)據(jù)并執(zhí)行操作。
在沒有 Reduce 階段的情況下,Map 任務(wù)的輸出會(huì)臨時(shí)保存在 HDFS 上,等待后續(xù)階段的處理。
對(duì)于 DML(數(shù)據(jù)操作語言)操作,臨時(shí)文件會(huì)被移動(dòng)到目標(biāo)表的位置,確保不會(huì)出現(xiàn)臟數(shù)據(jù)讀取(HDFS 的文件重命名操作是原子的)。 -
查詢結(jié)果返回給客戶端: 執(zhí)行引擎會(huì)從 HDFS 讀取最終的查詢結(jié)果,并通過 Driver 的 Fetch API 返回給客戶端。
總結(jié)
Hive 的架構(gòu)通過多個(gè)組件分工合作,完成數(shù)據(jù)查詢和分析任務(wù)。Hive 通過 CLI 或 Web 界面接收用戶查詢,并通過復(fù)雜的查詢解析和優(yōu)化流程,最終將查詢轉(zhuǎn)化為 MapReduce 作業(yè)執(zhí)行。Metastore 提供了查詢所需的元數(shù)據(jù)信息,Thrift 服務(wù)則允許外部程序通過不同語言與 Hive 交互。通過這一架構(gòu),Hive 提供了一個(gè)強(qiáng)大且易于使用的大數(shù)據(jù)查詢工具,簡(jiǎn)化了 Hadoop 的使用。