环境准备
1、hadoop集群或者伪集群 centos7安装hadoop集群
2、mysql 5 或者 8 版本
3、jdk版本 1.8.0_311
4、服务器版本:centos7
5、 hive版本:2.2.0
6、hadoop版本:2.9.2
Hive 安装
1、依次执行如下命令傻瓜式安装
[root@master ~]# mkdir -p /opt/hive
[root@master ~]# cd /opt/hive
[root@master hive]# wget http://archive.apache.org/dist/hive/hive-2.2.0/apache-hive-2.2.0-bin.tar.gz
[root@master hive]# tar -zxvf apache-hive-2.2.0-bin.tar.gz
[root@master hive]# cd apache-hive-2.2.0-bin/
2、添加环境变量
[root@master apache-hive-2.2.0-bin]# pwd
/opt/hive/apache-hive-2.2.0-bin
[root@master apache-hive-2.2.0-bin]# vim /etc/profile
在最后一行加入如下字段,HIVE_HOME 即hive安装目录
export HIVE_HOME=/opt/hive/apache-hive-2.2.0-bin
export PATH=$PATH:$HIVE_HOME/bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
3、刷新环境变量
[root@master apache-hive-2.2.0-bin]# source /etc/profile
4、查看hive是否成功安装
[root@master apache-hive-2.2.0-bin]# hive --version
配置hive
hive 的使用依赖 hadoop 集群或者伪集群,首先启动hadoop 。
安装位置各不相同,找到安装目录下sbin目录即可
1、启动hadoop集群
[root@master apache-hive-2.2.0-bin]# sh /opt/hadoop/hadoop-2.9.2/sbin/start-all.sh
2、在集群上建立目录,并赋予权限
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod -R 777 /user/hive/warehouse
hdfs dfs -mkdir -p /tmp/hive
hdfs dfs -chmod -R 777 /tmp/hive
3、在Linux下建立tmp文件夹,并赋予权限
mkdir -p /opt/hive/apache-hive-2.2.0-bin/tmp
chmod -R 777 tmp/
4、复制一份全新 hive-site.xml 和 hive-env.sh 出来
cd /opt/hive/apache-hive-2.2.0-bin/conf/
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
5、一键替换hive-sit.xml 部分配置
- 修改用户名,将文件中所有${system:user.name}替换为root
- 修改临时目录,将文件中所有${system:java.io.tmpdir} 替换为 /opt/hive/apache-hive-2.2.0-bin/tmp
sed -i 's#\${system:user.name}#root#g; s#\${system:java.io.tmpdir}#/opt/hive/apache-hive-2.2.0-bin/tmp#g' /opt/hive/apache-hive-2.2.0-bin/conf/hive-site.xml
6、修改 hive-site.xml 配置文件
[root@master conf]# vim hive-site.xml
修改技巧 因为配置项很多建议使用vim 进行搜索配置项,
使用方法 :/要搜索内容
举例:
6.1、修改 hive.metastore.uris ,ip换成自己主机的ip,端口无需更改
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.46.22:9083</value>
</property>
6.2、javax.jdo.option.ConnectionURL, 数据库 ip 即本机 ip ,端口默认3306
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.46.22:3306/hive?createDatabaseIfNotExist=true</value>
</property>
6.3、javax.jdo.option.ConnectionDriverName
- 安装mysql5 使用 com.mysql.jdbc.Driver
- 安装mysql8 使用 com.mysql.cj.jdbc.Driver
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
6.4、javax.jdo.option.ConnectionUserName 数据库连接用户,使用root 减少权限等其他问题
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
6.5、javax.jdo.option.ConnectionPassword 数据库登录密码,设置成自己的
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
6.6、 hive.metastore.schema.verification 强制metastore架构版本一致性改成false
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
7、下载mysql5驱动
1、下载MySQL5 驱动 将jar 包放入 /opt/hive/apache-hive-2.2.0-bin/lib 下
8、修改 hive-env.sh
vim /opt/hive/apache-hive-2.2.0-bin/conf/hive-env.sh
JAVA_HOME 修改成自己的
HADOOP_HOME 修改成自己的
HIVE_HOME 修改成自己的
export JAVA_HOME=/opt/jdk/jdk1.8.0_311
export HADOOP_HOME=/opt/hadoop/hadoop-2.9.2
export HIVE_HOME=/opt/hive/apache-hive-2.2.0-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib
9、初始化hive
cd /opt/hive/apache-hive-2.2.0-bin/bin
schematool -dbType mysql -initSchema
10、创建hive用户组,将root 添加到hive用户组
groupadd hive
usermod -G hive root
11、Hadoop core-site.xml 增加配置项
[root@master bin]# cd /opt/hadoop/hadoop-2.9.2/etc/hadoop/
[root@master hadoop]# vim core-site.xml
下面的 user
替换成 root
<property>
<name>hadoop.proxyuser.user.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.user.groups</name>
<value>*</value>
</property>
后台启动Hive的服务端
hive --service metastore &
后台启动hiveserver2
hiveserver2 start &
访问本地IP:10002 查看HiveServer2
http://192.168.46.22:10002/
idea测试项目连接
1、pom文件
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>2.1.1</version>
</dependency>
2、测试代码
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("org.apache.hive.jdbc.HiveDriver");
Connection con =DriverManager.getConnection("jdbc:hive2://192.168.46.22:10000/default", "", "");
Statement stmt = con.createStatement();
String querySQL="SELECT * FROM student";
ResultSet res = stmt.executeQuery(querySQL);
while (res.next()) {
System.out.println(res.getInt(1)+"----"+res.getString(2));
}
}