Hadoop中Hive原理及安裝
Hive是什么(官網(wǎng)概念)
Apache Hive™數(shù)據(jù)倉庫軟件有助于使用SQL讀取,寫入和管理駐留在分布式存儲中的大型數(shù)據(jù)集??梢詫⒔Y(jié)構(gòu)投影到已存儲的數(shù)據(jù)上。提供命令行工具和JDBC驅(qū)動程序,用于將用戶連接到Hive。
- Hive是建立在Hadoop (HDFS/MR)上的用于管理和查詢結(jié)果化/非結(jié)構(gòu)化的數(shù)據(jù)倉庫;
- 一種可以存儲、查詢和分析存儲在Hadoop 中的大規(guī)模數(shù)據(jù)的機(jī)制;
- Hive 定義了簡單的類SQL 查詢語言,稱為HQL,它允許熟悉SQL 的用戶查詢數(shù)據(jù);
- 允許用Java開發(fā)自定義的函數(shù)UDF來處理內(nèi)置無法完成的復(fù)雜的分析工作;
- Hive沒有專門的數(shù)據(jù)格式(分隔符等可以自己靈活的設(shè)定);
適用場景
- Hive不適用于在線事務(wù)處理。 它最適用于傳統(tǒng)的數(shù)據(jù)倉庫任務(wù)
- Hive的執(zhí)行延遲比較高,因為hive常用于數(shù)據(jù)分析的,對實時性要求不高;
- Hive優(yōu)勢在于處理大數(shù)據(jù),對于處理小數(shù)據(jù)沒有優(yōu)勢,因為hive的執(zhí)行延遲比較高。

1 Execute Query
Hive接口,如命令行或Web UI發(fā)送查詢驅(qū)動程序(任何數(shù)據(jù)庫驅(qū)動程序,如JDBC,ODBC等)來執(zhí)行。
2 Get Plan
在驅(qū)動程序幫助下查詢編譯器,分析查詢檢查語法和查詢計劃或查詢的要求。
3 Get Metadata
編譯器發(fā)送元數(shù)據(jù)請求到Metastore(任何數(shù)據(jù)庫)。
4 Send Metadata
Metastore發(fā)送元數(shù)據(jù),以編譯器的響應(yīng)。
5 Send Plan
編譯器檢查要求,并重新發(fā)送計劃給驅(qū)動程序。到此為止,查詢解析和編譯完成。
6 Execute Plan
驅(qū)動程序發(fā)送的執(zhí)行計劃到執(zhí)行引擎。
7 Execute Job
在內(nèi)部,執(zhí)行作業(yè)的過程是一個MapReduce工作。執(zhí)行引擎發(fā)送作業(yè)給JobTracker,在名稱節(jié)點并把它分配作業(yè)到TaskTracker,這是在數(shù)據(jù)節(jié)點。在這里,查詢執(zhí)行MapReduce工作。
7.1 Metadata Ops
與此同時,在執(zhí)行時,執(zhí)行引擎可以通過Metastore執(zhí)行元數(shù)據(jù)操作。
8 Fetch Result
執(zhí)行引擎接收來自數(shù)據(jù)節(jié)點的結(jié)果。
9 Send Results
執(zhí)行引擎發(fā)送這些結(jié)果值給驅(qū)動程序。
10 Send Results
驅(qū)動程序?qū)⒔Y(jié)果發(fā)送給Hive接口。
Hadoop中實際應(yīng)用
通過上面流程解釋,要想在hadoop中使用hive,至少需要安裝hive和Metastore(任何數(shù)據(jù)庫)本文安裝mysql 。
1 , 安裝mysql
下載linux環(huán)境下的mysql安裝包,需要兩個,一個是server端的,一個是client端的。
查詢linux機(jī)器上默認(rèn)安裝的mysql或者你以前安裝的mysql, 暴力卸載之 。
- rpm -e mysql-libs-5.xxxxxx_i686 --nodeps
執(zhí)行安裝命令
- rpm -ivh Mysql-server-xxx.i386.rpm
- rpm -ivh Mysql-client-xxx.i386.rpm
執(zhí)行命令初始化設(shè)置mysql
- /usr/bin/mysql_secure_installation

使用客戶端登陸
- mysql -uroot -proot
登陸成功后輸入命令:(授予mysql遠(yuǎn)程用戶連接的權(quán)限)
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
使用遠(yuǎn)程客戶端連接(navicat 或Advanced Query Tools等等工具 )我用的navicat, 如圖自行領(lǐng)悟。

到這里hive就安裝搭建完成了!