配置远程模式hive的前提需要安装mysql,这里一般不会出问题
第一:安装mysql,这里是黑马的安装方法。
#-------------Mysql安装----------------------
#卸载Centos7自带mariadb
rpm -qa|grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
#创建mysql安装包存放点
mkdir /export/software/mysql
#上传mysql-5.7.29安装包到上述文件夹下、解压
tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
#执行安装
yum -y install libaio
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
#初始化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: o+TU+KDOm004
#修改mysql root密码、授权远程访问
mysql -u root -p
Enter password: #这里输入在日志中生成的临时密码
#更新root密码 设置为hadoop
mysql> alter user user() identified by "hadoop";
Query OK, 0 rows affected (0.00 sec)
#授权
mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'hadoop' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
#mysql的启动和关闭 状态查看
systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld
#建议设置为开机自启动服务
systemctl enable mysqld
#查看是否已经设置自启动成功
systemctl list-unit-files | grep mysqld
第二:安装hive
#--------------------Hive安装配置----------------------
# 上传解压安装包
cd /export/server/
tar zxvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin hive
#解决hadoop、hive之间guava版本差异
cd /export/server/hive
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/
#添加mysql jdbc驱动到hive安装包lib/文件下
mysql-connector-java-5.1.32.jar
#修改hive环境变量文件 添加Hadoop_HOME
cd /export/server/hive/conf/
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
export HADOOP_HOME=/export/server/hadoop-3.1.4
export HIVE_CONF_DIR=/export/server/hive/conf
export HIVE_AUX_JARS_PATH=/export/server/hive/lib
#新增hive-site.xml 配置mysql等相关信息
vim hive-site.xml
#初始化metadata
cd /export/server/hive
bin/schematool -initSchema -dbType mysql -verbos
#初始化成功会在mysql中创建74张表
#-----------------hive-site.xml--------------
javax.jdo.option.ConnectionURL
jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
hadoop
hive.server2.thrift.bind.host
node1
hive.metastore.uris
thrift://node1:9083
hive.metastore.event.db.notification.api.auth
false
hive.metastore.schema.verification
false
这个配置也是黑马的,其中许多内容都是用黑马自己的文件路径,所以你需要改一下,问题一般都处在hive-site.xml文件的配置上,自己配置的时候一定要仔细一点
第三:初始化元数据
由于上面有mysql的开机后台自启动配置,所以在启动hive之前,你唯一要做的就是初始化元数据
#-----------------Metastore Hiveserver2启动----
#前台启动 关闭ctrl+c
/export/server/hive/bin/hive --service metastore
#后台启动 进程挂起 关闭使用jps + kill
#输入命令回车执行 再次回车 进程将挂起后台
nohup /export/server/hive/bin/hive --service metastore &
#前台启动开启debug日志
/export/server/hive/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console
这里注意/export/server/需要改为你自己的hive路径,另外这里我一般都地方都是使用export/server/hive/bin/hive --service metastore &在后台初始化元素据,不知道为啥,加上nohup会被自动忽略。
第四:启动hiveserver2
所谓远程模式,就是你开启一个服务端,任何客户端只要知道你的服务端地址,都可以操作你的数据库。
倘若你在你的集群的另一台机器上操作的话,你不需要安装mysql,也不需要提供驱动,你只要配置号远程链接所需要的hive端口就行,所以你首先需要在该客户端安装hive,详细步骤参考第二步,下面是该客户端hive-site.xml文件的配置:
hive.metastore.uris
thrift://node1:9083
这里的node1改成你的地址。
配置完成后,你需要在你的服务端先启动metastore,在启动hiveserver2,这里需要注意的是,启动hiveserver2启动后,你需要稍等一会,具体等多久你可以看出现的ID数量,我的电脑四个ID就行了,不过这个一般不靠谱,你可以使用"netstat -tlp|grep 10000"查看10000端口是否被占用,如果被占用就说明启动成功了。
//初始化元数据
bin/hive --service metastore
//启动hiveserver2
bin/hive --service hiveserver2
最后就是在你的客户端用bin/beeline命令启动
//启动beeline
bin/beeline
//链接客户端
! connect jdbc:hive2//hadoop102:10000
这里的hadoop102是我的服务端地址,你改成你的就行。后面需要你输入客户端用户名就可以连接上了!
ok,搞定。
最后,谈谈我的感受。
为了完成这些配置,我花了大概7、8个小时,其中也发生了多次错误,都是一些自己的失误,还是别走捷径,认真做好每一步,感谢csdn,感谢不放弃的自己。