环境准备:
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
#加入这几行代码
hadoop.proxyuser.root.hosts
*
hadoop.proxyuser.root.groups
*
dfs.permissions.enabled
false
# 分发 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/conf export HIVE_AUX_JAR_PATH=/opt/module/hive/lib
#vim hive-site.xmljavax.jdo.option.ConnectionURL jdbc:mysql://master:3306/hive?createDatabaseIfNotExsit=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT javax.jdo.option.ConnectionDriverName com.mysql.cj.jdbc.Driver javax.jdo.option.ConnectionUserName root javax.jdo.option.ConnectionPassword 000 hive.server2.thrift.bind.host master hive.metastore.uris thrift://master:9083 hive.metastore.event.db.notification.api.auth false hive.metastore.schema.verification false
#配置环境变量 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 封装的比较好,查询出来的结果比较美观!
结束!



