centos7安装hive和mysql8.0用于HA

环境准备:

1.虚拟机centos7

2.一个健康可用的HA

3.具备基本的知识

4.hive是基于HA完成分布式的,所以在一台机器上完成安装即可

5.正常人

第一步:

安装mysql

1. 官网下载mysql安装包

        其中注意centos7 是基于红帽的,Select OS Version: 选择 linux 7

                 选择 RPM Bundle 点击 Download,我下载的是8.0.26版本

                

2.打开虚拟机,使用root用户,并且把其中自带的 mariadb去除掉,并且确保之前没有安装过mysql或卸载干净

rpm -qa | grep mariadb #查看mariadb的安装包
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps  #卸载
rpm -qa | grep mariadb #可再次查看状态

3. 我们进入/usr/local 目录中,创建mysql文件夹并在其中安装mysql,传送安装包。

cd /usr/local #进入目标文件夹

ll #查看目录结构

mkdir mysql #创建mysql文件夹

 

         使用自己熟悉的方法,将安装包放入mysql文件夹中。在这里我才用直接复制进虚拟机的方式。

cd mysql #进入mysql文件夹

tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle\(1\).tar #解压压缩包

 rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm  --nodeps --force #安装common

rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm  --nodeps --force #安装libs

rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm  --nodeps --force #安装client

rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm  --nodeps --force #安装server



 3.配置mysql,其中大致包含:修改密码,修改密码规则,任何ip允许访问,使用可视化工具测试连接mysql,对所有用户授权

mysqld --initialize #初始化mysql

chown mysql:mysql /var/lib/mysql -R #更改用户组

systemctl start mysqld.service #启动MySQL服务

systemctl  enable mysqld #设置mysql开机自启动

cat /var/log/mysqld.log | grep password #查看log寻找自动随机生成的密码,用于之后第一次登录

 

mysql -uroot -p #使用root用户登录mysql

之后输入刚才查出来的密码登录,记住在终端上面密码是不显示的

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '000'; #修改用户root,IP:localhost的连接密码为000注意句子后面的分号

create user 'root'@'%' identified with mysql_native_password by '000';  #创建任意ip都可以用root用户登录并设置密码为000

grant all privileges on *.* to 'root'@'%' with grant option; #授权设置

flush privileges; #刷新权限

ALTER USER 'root'@'localhost' IDENTIFIED BY '000' PASSWORD EXPIRE NEVER; #更改密码加密规则

ALTER USER 'root'@'%' IDENTIFIED BY '000' PASSWORD EXPIRE NEVER;  #更改密码加密规则

flush privileges; #刷新权限

select host,user from mysql.user;  #一个查询语句

 

                 可视化工具测试连接成功!,至此,mysql安装完成。下次登录可以使用自己设置的密码,其中在配置mysql远程连接时,应注意自己写的语句,其中密码位置应该都改成自己的密码。

第二步;

        安装hive   http://mirror.bit.edu.cn/apache/hive/  我选择3.1.2的版本,不要那个源码src压缩包,用另一个

 把安装包放入/opt/software中

cd /opt/software/ #进入放安装包的位置

tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/  #解压到/opt/module中

mv apache-hive-3.1.2-bin/ hive #文件夹名字太长,改个名字



#解决hadoop和hive中guava版本差异
cd /opt/module/hive/lib/  #进入文件夹

rm -rf guava-19.0.jar #删除jar包

cp /opt/module/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/hive/lib/  #将hadoop中的jar复制过来


ll guava-27.0-jre.jar #查看文件观察是否复制成功

 

 我们还需要更改HA的配置文件core-site.xml

cd /opt/module/hadoop-3.3.0/etc/hadoop/

vim core-site.xml

#加入这几行代码

        <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>

        <property>
			<name>dfs.permissions.enabled</name>
			<value>false</value>
		</property>
# 分发

scp core-site.xml root@slave1:/opt/module/hadoop-3.3.0/etc/hadoop/

scp core-site.xml root@slave2:/opt/module/hadoop-3.3.0/etc/hadoop/

 添加mysql jdbc驱动到hive的lib文件夹中,下载jdbc驱动。

https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.26

 

 

 配置Hive相关文件

cd /opt/module/hive/conf/ #进入配置文件夹

mv hive-env.sh.template hive-env.sh  #改一个名字就可以使用

vim hive-env.sh #编辑这个文件

vim hive-site.xml #编辑新文件,原本没有这个,需要你自己写

#hive-env.sh 

export HADOOP_HOME=/opt/module/hadoop-3.3.0
export HIVE_CONF_DIR=/opt/module/hadoop-3.3.0/conf
export HIVE_AUX_JAR_PATH=/opt/module/hive/lib
#vim hive-site.xml


<configuration>  
<property>  
<name>javax.jdo.option.ConnectionURL</name>  
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=GMT</value>  
</property>  
<property>  
<name>javax.jdo.option.ConnectionDriverName</name>  
<value>com.mysql.cj.jdbc.Driver</value>  
</property>  
<property>  
<name>javax.jdo.option.ConnectionUserName</name>  
<value>root</value>  
</property>  
<property>  
<name>javax.jdo.option.ConnectionPassword</name>  
<value>000</value>  
</property>
<!--H2s运行绑定host-->
<property>
<name>hive.server2.thrift.bind.host</name>              
<value>master</value>               
</property>
  
<!--远程模式部署metastore服务地址-->
<property>
<name>hive.metastore.uris</name>                           
<value>thrift://master:9083</value>               
</property> 
<!--关闭元数据存储授权-->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>               
</property> 

<!--关闭元数据存储版本的验证-->
<property>
<name>hive.metastore.schema.verification</name>                           
<value>false</value>               
</property>  
</configuration> 

 

#配置环境变量

vim /etc/profile.d/my_env.sh  

export HIVE_HOME=/opt/module/hive
export PATH=$HIVE_HOME/bin:$PATH

source /etc/profile.d/my_env.sh

 

 hive配置完成

第三步:启动

        

#初始化metastore

#先在mysql中建库hive

mysql -uroot -p

create database hive CHARACTER SET latin1; 

show databases;

quit

#第一次启动执行就可以
schematool -initSchema -dbType mysql -verbos

#成功之后可以再数据库hive中发现74张表

 

 

1.启动zkServer

2.启动HA

3.后台挂起metastore服务

cd /opt/module/hive/

nohup hive --service metastore & #后台挂起

jps

 

4. 进入hive

       

hive


show databases;

quit;

第四步:关闭

jps


kill -9 进程号 #关闭metastore

stop-all.sh #关闭HA

第五步:Hive命令行客户端(用于访问数据仓库)

        hive发展至今,经历了两代客户端工具

        第一代客户端工具: hive 是一个shellUtil 。主要功能:一是可以用于交互或者批处理模式运行HIVE查询;二是用于HIVE相关程序的启动,比如metastore服务

        第二代客户端工具:beeline,是一个jdbc客户端,是官方强烈推荐使用的HIve命令行工具,和第一代客户端相比,性能加强,安全性提高

Hive Beeline Client  :这里只研究远程模式:在远程模式下beeline可以通过 Thrift连接到单独的H2服务上,这也是官方推荐的在生产模式中使用的模式

问题:H2是什么 ,那么HiveServer1又到哪里去了?

1.HiveServer、HiveServer2都是Hive自带的两种服务,允许客户端再不启动CLI(命令行)的情况下对Hive中的数据进行操作,且两个都允许远程客户端使用多种编程语言,如JAVA,PYTHON 等向Hive提交请求,取回结果。

2、HiveServer不支持多个客户端的并发请求,因此在之后的版本中重写得到了H2

3.H2 支持都客户端的并发和身份认证,旨在为开放API客户端,如JDBC、ODBC提供更好的支持。

第六步:hive与beeline命令

在实际情况中,我们不可能只在一台机器上访问HIVE,所以我们要在另一台机器上访问,这时,应该怎么操作呢?

1.将配置好的Hive文件和系统环境变量scp到另一台机器上,我这里复制到了slave2上面。

scp -r /opt/module/hive root@slave2:/opt/module #复制Hive文件夹

scp /etc/profile.d/my_env.sh root@slave2:/etc/prfile.d #复制环境变量

source /etc/profile.d/my_env.sh #刷新环境变量

2.在远程模式下,必须启动metastore服务

hive --service metastore  #采用前台启动的方法,命令成功后可以使用ctrl+c 来停止,但是启动之后必须在打开另一个终端在使用,原来终端不能使用,除非停止metastore服务。

3.hive命令

因为我们在hive-core.xml文件中已经写上metastore的服务地址,所以在slave2上可以直接使用hive命令去连接在master上面的metasore服务。

hive #进入hive客户端,在slave2上面使用

show databases; #查看数据库

#这里应该观察到和master中同样的结果,甚至可以在master中创建新的数据库,在去slave2上面观察是否存在



 4.beeline命令

beeline依赖于HiveServer2,其中HiveServer2又依赖于metastore服务,在之前我们已经启动meta store所以我们不再启动。直接启动H2服务

hive --service hiveserver2  #前台挂起

#需要等待一会才可以启动beeline,这也是hive令人讨厌的地方,官方就是这么搞得。。。。

beeline   #在slave2上面

! connect jdbc:hive2://master:10000  # 感叹号+connect+jdbc:hive+//+ip+端口,默认为10000

# 之后 需要输入数据库账号密码  root   000  输入你自己的,这里是我的


show databases;


 

 可以看到beeline 封装的比较好,查询出来的结果比较美观!

结束!

  • 9
    点赞
  • 16
    收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论 3

打赏作者

qq_53701272

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值