Hive的安裝需要提前安裝Hadoop和MySQL奕剃,Hadoop的安裝請參考Hadoop環(huán)境搭建,下面是MySQL的安裝。
MySQL安裝
啟動(dòng)MySQL
service mysqld restart創(chuàng)建hive用戶
create user 'hive' identified by 'hive';創(chuàng)建hive數(shù)據(jù)庫
create database hive;將hive數(shù)據(jù)庫權(quán)限設(shè)置給hive用戶
grant all privileges on . to hive@'localhost' identified by 'hive';刷新
flush privileges;
Hive的安裝
軟件安裝
軟件下載官網(wǎng)地址
解壓安裝
tar -zxvf apache-hive-2.1.1-bin.tar.gz ../software
環(huán)境配置
- 新建hive-site.xml(hive的conf的目錄下)
cp hive-default.xml.template hive-site.xml
-
修改hive-site.xml
```
在Habase的目錄下新建temp目錄
替換hive-site.xml中的${system:java.io.tmpdir}為/usr/local/bigdata/software/hive-2.1.1/temp<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://master:3306/hive?characterEncoding=UTF-8</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property> <property> <name>datanucleus.autoCreateSchema</name> <value>true</value> </property> <property> <name>datanucleus.autoCreateTables</name> <value>true</value> </property> <property> <name>datanucleus.autoCreateColumns</name> <value>true</value> </property> ```
下載MySQL連接jar
下載mysql-connector-java-5.1.41-bin.jar到hive-2.1.1/lib下配置環(huán)境變量 /etc/profile
啟動(dòng)Hive
- 初始化數(shù)據(jù)庫
schematool -initSchema -dbType mysql
- 啟動(dòng)hiveserver2
[root@hadoop1 bin]# hiveserver2
Hive整合Hadoop
-
創(chuàng)建本地hive_test文件(字段使用tab分割)
zhangshan 20
lisi 21
wangwu 19 -
hdfs創(chuàng)建hive_test文件夾
hdfs dfs -mkdir /hive_test
-
將本地文件導(dǎo)入到hdfs中
hdfs dfs -copyFromLocal hive_test /hive_test
-
創(chuàng)建Hive表
create table hive_test (
name string,
age int
)row format delimited fields terminated by '\t' stored as textfile; -
hive關(guān)聯(lián)Hadoop
load data inpath /hive_test into table hive_test;
-
查詢測試
zhangshan 20
lisi 21
wangwu 19
Hive和HBase互通
配置
修改hive-site.xml
<property>
<name>hbase.zookeeper.quorum</name>
<value>master</value>
<description>zookeeper</description>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
<description>port</description>
</property>
數(shù)據(jù)交互
- HBase新建表
create 'student','baseinfo','otherinfo'
- 插入數(shù)據(jù)
put 'student','1','baseinfo:name','zhangsan'
put 'student','1','baseinfo:age','21'
put 'student','1','otherinfo:hobby','sleep'
put 'student','2','baseinfo:name','lisi'
- 查看數(shù)據(jù)
scan 'student'
- Hive中新建基于HBase的表
CREATE EXTERNAL TABLE student (
rowkey string,
name string,
base map<STRING,STRING>,
other map<STRING,STRING>
) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,baseinfo:name,baseinfo:,otherinfo:")
TBLPROPERTIES ("hbase.table.name" = "student");
- 查詢HBase表
select * from student;
配置Hive高可用
基于zookeeper
配置hive-site.xml祈搜,新增如下配置
<property>
<name>hive.server2.support.dynamic.service.discovery</name>
<value>true</value>
</property>
<property>
<name>hive.server2.zookeeper.namespace</name>
<value>hiveserver2_zk</value>
</property>
<property>
<name>hive.zookeeper.quorum</name>
<value>master,slave01,slave02</value>
</property>
基于HAProxy
大家請參考鏈接基于HAProxy配置Hive HA
驗(yàn)證配置
在ZooKeeper下查看是否注冊成功
ls /hiveserver2_zk-
使用Hive JDBC來測試
啟動(dòng)master和slave01的hiveserver2執(zhí)行beeline命令
beeline連接數(shù)據(jù)庫
!connect jdbc:hive2://master:2181,slave01:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk//說明連接到master
[main]: INFO jdbc.HiveConnection: Connected to master:10000
Connected to: Apache Hive (version 2.1.1)kill掉master的 hiveserver2我們繼續(xù)連接數(shù)據(jù)庫,到時(shí)候會(huì)連接到slave01