#博客新手上线---遇到问题大家可以留言评论区#我能解决的会回贴的哟#也希望大家可以多多留言,一起进步!!!#同时也需要大神们的指教^.^$

1.Hadoop与Hive的整合

打开安装Hadoop的配置文件core-site.xml,在文件中添加以下内容(如果启动了Hadoop集群需要在这步后重启集群):

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

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

2.MySQL的安装及配置

(1)删除mariadb
rpm -qa|grep mariadb # 查询是否有mariadb
rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps # 根据版本号删除mariadb
rpm -qa|grep mariadb # 可以细心的再次查询是否有mariadb
(2)安装MySQL
mkdir /export/software/mysql # 创建存放安装包的目录
# 上传mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar 到上述文件夹下
tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar # 解包

# 执行安装
yum -y install libaio # 安装依赖

# 安装mysql
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm
(3)MySQL的初始化设置
# 初始化
mysqld --initialize

# 更改所属组
chown mysql:mysql /var/lib/mysql -R

# 启动MySQL
systemctl start mysqld.service

# 查看生成的临时root密码
cat /var/log/mysqld.log

[Note] A temporary password is generated for root@localhost: .Yy5n37-mMhm  #:后面是生成的临时sql密码
(4)修改root密码 授权远程访问 设置MySQL开机自启动
mysql -u root -p # 登录MySQL,密码是上面获得的临时密码,可以直接粘贴上去,密码不显示
alter user user() identified by "123456"; # 更改root密码,“”号中的为设置的密码
# 授权,以便其他机器可以远程访问
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; #‘123456’是上面设置的密码
FLUSH PRIVILEGES; # 刷新权限
# 按Ctrl+D离开MySQL

# mysql的启动和关闭 状态查看(这几个命令必须记住)
systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld

# 建议设置未开机自启动服务
systemctl enable mysqld

# 查看是否已经设置自启动成功
systemctl list-unit-files | grep mysqld

3,上传解压hive安装包

(1)打开需要安装hive的目录(我这里是/export/server)
tar zxvf apache-hive-3.1.2-bin.tar.gz #解压hive
rm -rf apache-hive-3.1.2-bin.tar.gz #删除解压包
(2)解决Hadoop和hive之间guava的差异
cd /export/server/apache-hive-3.1.2-bin #进入存有guava的路径
rm -rf lib/guava-19.0.jar # 将hive中的低版本guava删除
cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/ # 将Hadoop中高版本guava复制到hive的lib目录下
(3)修改配置文件
cd /export/server/apache-hive-3.1.2-bin/conf

mv hive-env.sh.template hive-env.sh # 重命名

vim hive-env.sh

在hive-env.sh中添加以下内容:

export HADOOP_HOME=/export/server/hadoop-3.3.0 # =后面是Hadoop的安装路径
export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf # hive的conf文件的路径
export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib #hive的lib文件的路径

创建hive.site.xml文件

vim hive.site.xml

在文件中添加以下内容(其中master为自己的主机名):

<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://master:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionDriverName</name>
	<value>com.mysql.jdbc.Driver</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionUserName</name>
	<value>root</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionPassword</name>
	<value>hadoop</value>
</property>

<!-- H2S运行绑定host -->
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>master</value>
</property>

<!-- 远程模式部署metastore metastore地址 --> # 远程模式,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>
</configuration>

4,添加驱动,初始化

(1)上传MySQL jdbc驱动mysql-connector-java-5.1.32.jar到hive的lib目录(***注意别漏看***)
(2)初始化元数据
cd /export/server/apache-hive-3.1.2-bin/

bin/schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表
(3)在hdfs创建hive存储目录(如存在则不用操作)&(这步需要启动Hadoop集群操作)
hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse

5,启动metastore服务啦

(1)在此之前需要启动Hadoop集群
cd /usr/local/hadoop/sbin #hadoop集群的启动路径

./start-all.sh #主要集群启动命令
(2)在hive安装的服务器上启动metastore服务,然后启动hiveserver2服务
# nohup命令是使服务器挂起启动,所以不会出现启动过程
nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore &
nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service hiveserver2  &
# 在此之后按下回车即可

6.hive和beeline启动命令

(1)hive启动
/export/server/apache-hive-3.1.2-bin/bin/hive #安装hive的路径并进入bin目录启动hive

在此后需要退出hive

(2)beeline启动
/export/server/apache-hive-3.1.2-bin/bin/beeline #和hive启动一样hive安装路径进入bin目录启动beeline
! connect jdbc:hive2://master:10000   # jdbc:hive2://是协议前缀,表示通过jdbc协议与hiveserver2通信,后面是hive地址,表示hive地址在node1上,端口是10000(默认端口)
# 输入具有权限的用户,如root
输入用户:root
输入密码:# 没有密码,直接回车 #如有密码,则输入密码
#这步需要metastore服务和hiveserver2服务完全启动后才会执行成功,因为上面启动服务器是挂起启动的

***以上若是处在safemode下则会启动失败***需要我们退出安全模式

# 正常退出safemode命令
hdfs dfsadmin -safemode leave
#在这步执行后会出现safemode状态,如是显示ON则退出失败

# 强制退出safemode命令
hdfs dfsadmin -safemode forceExit

# 删除损坏的block
hdfs fsck / -delete

之后接着启动就可以开心的使用啦!!!谢谢观看^.^

#*****温故而知新,硅步至千里*****$