Hive3.1.3集群安装
一、安装mysql
Hive默认的Derby数据库一次只能打开一个会话,不支持多用户并发访问,需要替换Hive的存储引擎为mysql
1. 下载mysql安装包
wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
2. 安装mysql源
yum localinstall -y mysql57-community-release-el7-7.noarch.rpm
ll /etc/yum.repos.d/
3. 安装mysql
yum install mysql-community-server -y
此时安装报错
Public key for mysql-community-server-5.7.41-1.el6.x86_64.rpm is not installed
解决方案:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-community-server -y
4. 启动mysql和设置开机启动
# 启动
systemctl start mysqld
# 重启
systemctl restart mysqld
# 查看状态
systemctl status mysqld
# 设置开机启动
systemctl enable mysqld
systemctl daemon-reload
修改/etc/my.cnf配置文件,配置默认编码为utf-8,
(注意其他目录不要动)
character_set_server=utf8
重启服务:
systemctl restart mysqld
5.查询默认密码并修改密码
查询默认密码:
grep 'temporary password' /var/log/mysqld.log
使用临时密码登录mysql,密码有安全插件检测(大小写字母+数字+特殊字符,大于7位)
mysql -uroot -p alter user 'root'@'localhost' identified by 'xxxxxx@123A';
6.创建hive数据库用户
create user 'hive'@'%' identified by 'xxxxxx@123A'; grant all privileges on *.* to 'root'@'%' identified by 'xxxxxx@123A'; grant all privileges on *.* to 'hive'@'%' identified by 'xxxxxx@123A'; flush privileges;
二、Hive安装
1.修改hive-config.sh配置
vim /usr/hive/apache-hive-3.1.3-bin/bin/hive-config.sh
文件后面添加:
export JAVA_HOME=/usr/java/jdk1.8.0_181 export HADOOP_HOME=/usr/hadoop/hadoop-3.1.3 export HIVE_HOME=/usr/hive/apache-hive-3.1.3-bin
2.下载mysql驱动
https://downloads.mysql.com/archives/c-j/
选择版本下载:
上传驱动包至hadoop160服务器的/usr/mysql目录解压
tar -zxvf mysql-connector-java-5.1.49.tar.gz
复制驱动包至$HIVE_HOME/lib目录下
cp mysql-connector-java-5.1.49-bin.jar /usr/hive/apache-hive-3.1.3-bin/lib
3.Hive配置修改
创建临时目录
mkdir /usr/hive/apache-hive-3.1.3-bin/tmp
修改hive-site.xml,更换Derby数据库的连接信息为mysql的,
vim hive-site.xml 命令模式下使用/向后查找关键字Connection,使用?向前查找,更改ConnectionPassword、ConnectionURL、ConnectionDriverName、ConnectionUserName四项配置:
如果没有 hive-site.xml 将 conf 下的 hive-default.xml.template 复制改名成hive-site.xml
<property> <name>javax.jdo.option.ConnectionPassword</name> <value>xxxxxx@123A</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop0:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&autoReconnect=true&rewriteBatchedStatements=true&useSSL=false</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>
替换系统临时目录和用户名:
替换hive-site.xml文件中:
${system:java.io.tmpdir} 替换为 ${HIVE_HOME}/tmp
${system:user.name} 替换为 root
全局替换
4.数据库初始化和验证
初始化hive数据库:主要是在bin目录
./schematool -dbType mysql -initSchema
此时报错:
-bash: schematool: command not found
yum -y install schematool
如果此时还是报错:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.ba
. 解决
hadoop和hive的两个guava.jar版本不一致
两个位置分别位于下面两个目录:
- /usr/local/hive/lib/
- /usr/local/hadoop/share/hadoop/common/lib/
重新初始化此时还是报错:
./schematool -dbType mysql -initSchema
解决方案:
打开hive-site.xml 搜索 Ensures commands with OVERWRITE (such as IN 删除这个 description 标签
重新初始化此时还是报错:
请检查 hive-site.xml 中 你配的mysql 账号密码是否正确
重新执行
./schematool -dbType mysql -initSchema
成功安装!!!!!SUCCESS
三、Hive使用
1.Hive CLI客户端命令行工具
类似于mysql的命令行工具,但是只能操作本地的Hive服务,无法通过JDBC连接远程服务,且sql执行结果没有格式化,看起来不是很直观(后续将会被新的命令行工具Beeline取代)
打开Hive CLI很简单,执行hive命令即可:
hive
此时报错 找不到这个命令
记得配置环境变量
vi /etc/profile
export HIVE_HOME=/usr/hive/apache-hive-3.1.3-bin export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile
创建test_hive_db数据库测试一下:
2.Beeline客户端命令行工具
HiveServer2支持一个新的命令行Shell,称为:Beeline,后续将会使用Beeline替代Hive CLI。Beeline基于SQLLine CLI的JDBC客户端。Hive CLI和Beeline都属于命令行操作模式,主要区别是Hive CLI只能操作本地的Hive服务,而Beeline可以通过JDBC连接远程服务。
a.使用Beeline的前提条件-添加访问权限
Beeline基于Hive JDBC,在使用JDBC访问Hive时,可能会出现权限问题。所以需要在Hadoop的配置文件core-site.xml中添加以下配置,赋予代理用户的root访问权限。
在hadoop0上修改core-site.xml,在configuration标签中追加配置:
<!--设置代理用户root访问的主机和组--> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property>
添加配置之后,需要重启hadoop,让配置生效:
刪除停止集群
stop-all.sh
stop-yarn.sh
删除集群(三台)下的data和logs目录 重新格式化,再启动
hdfs namenode -format
start-yarn.sh
sbin/start-yarn.sh #hadoop161
b.使用Beeline的前提条件-开启HiveServer2
在主机hadoop0上面执行:
先创建hive日志目录:
mkdir $HIVE_HOME/logs
启动方式一:
nohup hiveserver2 >>$HIVE_HOME/logs/hiveserver2.log 2>&1 &
HiveServer2默认开启的端口为10000端口。可以通过日志,查看启动信息:
tail -200f $HIVE_HOME/logs/hiveserver2.log
为便于日志管理,可以将日志软连接到根目录的/logs目录下:
mkdir /logs
ln -s $HIVE_HOME/logs/hiveserver2.log /logs/hiveserver2.log
服务端端口:10000,web端口10002,浏览器输入:http://hadoop0:10002可以查看hiveserver2的信息:
3.Beeline使用-命令行
Beeline命令行连接参数:
-u:指定连接信息 -n:登录用户 -p:登录密码 -e:执行sql
其他命令可以通过:beeline --help查询
Beeline管理命令:
进入Beeline之后,执行sql的命令和mysql基本一致,但是一些命令不一样,比如进行连接、中断、退出等,执行Beeline命令需要在命令的前面加上"!"并且不需要终止符(如;分号)。
常用的有:
!exit:退出Shell !connect url:连接不同的Hive2服务器 !verbose:显示查询追加的明显 !help:显示全部管理命令列表
登录并查询数据库:
beeline -u jdbc:hive2://hadoop160:10000/default -n hive -p
4.使用dbeaver远程连接hive
远程连接需要连接驱动jar包,可以从$HIVE_HOME/jdbc目录下拷贝一份,可以使用FileZilla Client连接服务进入目录拷贝,也可以使用sz命令传输到本地的指定目录(sz 命令安装:yum install -y lrzsz)
cd $HIVE_HOME/jdbc sz hive-jdbc-3.1.3-standalone.jar