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&amp;useUnicode=true&amp;serverTimezone=GMT%2B8&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull&amp;allowMultiQueries=true&amp;autoReconnect=true&amp;rewriteBatchedStatements=true&amp;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

 


 

posted @ 2023-06-27 11:33  KwFruit  阅读(352)  评论(0编辑  收藏  举报