本篇內(nèi)容主要講解“Hive環(huán)境的搭建和基礎(chǔ)用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Hive環(huán)境的搭建和基礎(chǔ)用法”吧!
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、萬全ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的萬全網(wǎng)站制作公司
1、基礎(chǔ)描述
Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉庫工具,用來進(jìn)行數(shù)據(jù)提取、轉(zhuǎn)化、加載,是一個(gè)可以對(duì)Hadoop中的大規(guī)模存儲(chǔ)的數(shù)據(jù)進(jìn)行查詢和分析存儲(chǔ)的組件,Hive數(shù)據(jù)倉庫工具能將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供SQL查詢功能,能將SQL語句轉(zhuǎn)變成MapReduce任務(wù)來執(zhí)行,使用成本低,可以通過類似SQL語句實(shí)現(xiàn)快速M(fèi)apReduce統(tǒng)計(jì),使MapReduce變得更加簡單,而不必開發(fā)專門的MapReduce應(yīng)用程序。hive十分適合對(duì)數(shù)據(jù)倉庫進(jìn)行統(tǒng)計(jì)分析。
2、組成與架構(gòu)
用戶接口:ClientCLI、JDBC訪問Hive、WEBUI瀏覽器訪問Hive。
元數(shù)據(jù):Hive將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中,如MySQL、derby。Hive中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)以及屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等。
驅(qū)動(dòng)器:基于解釋器、編輯器、優(yōu)化器完成HQL查詢語句從詞法分析、語法分析、編譯、優(yōu)化以及查詢計(jì)劃的生成。
執(zhí)行器引擎:ExecutionEngine把邏輯執(zhí)行計(jì)劃轉(zhuǎn)換成可以運(yùn)行的物理計(jì)劃。
Hadoop底層:基于HDFS進(jìn)行存儲(chǔ),使用MapReduce進(jìn)行計(jì)算,基于Yarn的調(diào)度機(jī)制。
Hive收到給客戶端發(fā)送的交互請(qǐng)求,接收到操作指令(SQL),并將指令翻譯成MapReduce,提交到Hadoop中執(zhí)行,最后將執(zhí)行結(jié)果輸出到客戶端。
1、準(zhǔn)備安裝包
hive-1.2,依賴Hadoop集群環(huán)境,位置放在hop01服務(wù)上。
2、解壓重命名
tar -zxvf apache-hive-1.2.1-bin.tar.gz mv apache-hive-1.2.1-bin/ hive1.2
3、修改配置文件
創(chuàng)建配置文件
[root@hop01 conf]# pwd /opt/hive1.2/conf [root@hop01 conf]# mv hive-env.sh.template hive-env.sh
添加內(nèi)容
[root@hop01 conf]# vim hive-env.sh export HADOOP_HOME=/opt/hadoop2.7 export HIVE_CONF_DIR=/opt/hive1.2/conf
配置內(nèi)容一個(gè)是Hadoop路徑,和hive配置文件路徑。
4、Hadoop配置
首先啟動(dòng)hdfs和yarn;然后在HDFS上創(chuàng)建/tmp和/user/hive/warehouse兩個(gè)目錄并修改賦予權(quán)限。
bin/hadoop fs -mkdir /tmp bin/hadoop fs -mkdir -p /user/hive/warehouse bin/hadoop fs -chmod g+w /tmp bin/hadoop fs -chmod g+w /user/hive/warehouse
5、啟動(dòng)Hive
[root@hop01 hive1.2]# bin/hive
6、基礎(chǔ)操作
查看數(shù)據(jù)庫
hive> show databases ;
選擇數(shù)據(jù)庫
hive> use default;
查看數(shù)據(jù)表
hive> show tables;
創(chuàng)建數(shù)據(jù)庫使用
hive> create database mytestdb; hive> show databases ; default mytestdb hive> use mytestdb;
創(chuàng)建表
create table hv_user (id int, name string, age int);
查看表結(jié)構(gòu)
hive> desc hv_user; id int name string age int
添加表數(shù)據(jù)
insert into hv_user values (1, "test-user", 23);
查詢表數(shù)據(jù)
hive> select * from hv_user ;
注意:這里通過對(duì)查詢?nèi)罩镜挠^察,明顯看出Hive執(zhí)行的流程。
刪除表
hive> drop table hv_user ;
退出Hive
hive> quit;
查看Hadoop目錄
# hadoop fs -ls /user/hive/warehouse /user/hive/warehouse/mytestdb.db
通過Hive創(chuàng)建的數(shù)據(jù)庫和數(shù)據(jù)存儲(chǔ)在HDFS上。
這里默認(rèn)安裝好MySQL5.7的版本,并配置好相關(guān)登錄賬號(hào),配置root用戶的Host為%模式。
1、上傳MySQL驅(qū)動(dòng)包
將MySQL驅(qū)動(dòng)依賴包上傳到hive安裝目錄的lib目錄下。
[root@hop01 lib]# pwd /opt/hive1.2/lib [root@hop01 lib]# ll mysql-connector-java-5.1.27-bin.jar
2、創(chuàng)建hive-site配置
[root@hop01 conf]# pwd /opt/hive1.2/conf [root@hop01 conf]# touch hive-site.xml [root@hop01 conf]# vim hive-site.xml
3、配置MySQL存儲(chǔ)
javax.jdo.option.ConnectionURL jdbc:mysql://hop01:3306/metastore?createDatabaseIfNotExist=true JDBC connect string for a JDBC metastore javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver Driver class name for a JDBC metastore javax.jdo.option.ConnectionUserName root username to use against metastore database javax.jdo.option.ConnectionPassword 123456 password to use against metastore database
配置完成后,依次重啟MySQL、hadoop、hive環(huán)境,查看MySQL數(shù)據(jù)庫信息,多了metastore數(shù)據(jù)庫和相關(guān)表。
4、后臺(tái)啟動(dòng)hiveserver2
[root@hop01 hive1.2]# bin/hiveserver2 &
5、Jdbc連接測試
[root@hop01 hive1.2]# bin/beeline Beeline version 1.2.1 by Apache Hive beeline> !connect jdbc:hive2://hop01:10000 Connecting to jdbc:hive2://hop01:10000 Enter username for jdbc:hive2://hop01:10000: hiveroot (賬戶回車) Enter password for jdbc:hive2://hop01:10000: ****** (密碼123456回車) Connected to: Apache Hive (version 1.2.1) Driver: Hive JDBC (version 1.2.1) 0: jdbc:hive2://hop01:10000> show databases; +----------------+--+ | database_name | +----------------+--+ | default | +----------------+--+
1、基礎(chǔ)函數(shù)
select count(*) count_user from hv_user; select sum(age) sum_age from hv_user; select min(age) min_age,max(age) max_age from hv_user; +----------+----------+--+ | min_age | max_age | +----------+----------+--+ | 23 | 25 | +----------+----------+--+
2、條件查詢語句
select * from hv_user where name='test-user' limit 1; +-------------+---------------+--------------+--+ | hv_user.id | hv_user.name | hv_user.age | +-------------+---------------+--------------+--+ | 1 | test-user | 23 | +-------------+---------------+--------------+--+ select * from hv_user where id>1 AND name like 'dev%'; +-------------+---------------+--------------+--+ | hv_user.id | hv_user.name | hv_user.age | +-------------+---------------+--------------+--+ | 2 | dev-user | 25 | +-------------+---------------+--------------+--+ select count(*) count_name,name from hv_user group by name; +-------------+------------+--+ | count_name | name | +-------------+------------+--+ | 1 | dev-user | | 1 | test-user | +-------------+------------+--+
3、連接查詢
select t1.*,t2.* from hv_user t1 join hv_dept t2 on t1.id=t2.dp_id; +--------+------------+---------+-----------+-------------+--+ | t1.id | t1.name | t1.age | t2.dp_id | t2.dp_name | +--------+------------+---------+-----------+-------------+--+ | 1 | test-user | 23 | 1 | 技術(shù)部 | +--------+------------+---------+-----------+-------------+--+
GitHub·地址 https://github.com/cicadasmile/big-data-parent GitEE·地址 https://gitee.com/cicadasmile/big-data-parent
到此,相信大家對(duì)“Hive環(huán)境的搭建和基礎(chǔ)用法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!