一,前言
根据小编博客《大数据之Hive》(https://blog.youkuaiyun.com/m0_69086845/article/details/143926529?spm=1001.2014.3001.5502)所介绍,Hive三种部署模式中的远程模式适合企业生产环境,故我只介绍Hive远程模式的部署。在部署Hive之前需要部署JDK,Hadoop以及MySQL,JDK,Hadoop以及MySQL的部署,我后续将会更新,请持续关注小编。
这里我在强调一下Hive远程模式的特点,已经熟悉的可以略过。
特点一:远程模式下,需要单独手动启动Metastore服务,每个客户端都在配置文件里配置连接到该metastore服务。
特点二:远程模式服务和hive不在同一个进程运行。
特点三:远程模式下,需要使用hive.metastore.uris参数来指定metastore服务运行节点的ip和端口号。
特别注意,在启动hive之前要保证以下两点。一是,确保存放hive元数据的MySQL已下载且具有远程访问的权限,由hive-site.xml文件中的这三个参数共同确定,他们是javax.jdo.option.ConnectionURL,javax.jdo.option.ConnectionDriverName,
javax.jdo.option.ConnectionUserName,
javax.jdo.option.ConnectionPassword;二是,确保Hadoop集群的启动且健康运行。
二,Hive的下载安装
hive的最新版本一般不太稳定和且和Hadoop兼容性不太好,建议退后一两个版本,查找Hive的老版本的地址为
https://archive.apache.org/dist/hive/。一般下载以bin.tar.gz结尾的文件,如apache-hive-3.1.2-bin.tar.gz。解压命令:tar zxvf apache-hive-3.1.2-bin.tar.gz
。嫌弃名字太长的可以改名,改名命令:mv apache-hive-3.1.2-bin/ hive
。解决Hive与Hadoop之间guava版本差异参考命令:`
cd /export/server/apache-hive-3.1.2-bin/
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar \
./lib/
。
三,配置相关文件
1,配置hive-env.sh文件参考
# 1,进入配置文件目录
cd /export/server/apache-hive-3.1.2-bin/conf
# 2,将hive-env.sh.template改名为hive-env.sh
mv hive-env.sh.template hive-env.sh
# 3,编辑hive-env.sh文件
vim hive-env.sh
#,4,以下是配置项
export HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib
2,配置hive-site.xml文件参考
# 1,进入配置文件目录
cd /export/server/apache-hive-3.1.2-bin/conf
# 2,编辑hive-site.xml文件
vim hive-site.xml
# 3,以下为配置项
<configuration>
<!-- 指定连接MetaStore存储介质MySQL的URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1: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>
<!-- 连接MySQL的用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- 连接MySQL的密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property>
<!-- H2S运行绑定host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
<!-- 远程模式部署metastore metastore地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
<!-- 关闭元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
3,上传MySQL驱动参考
#上传mysql jdbc驱动到hive安装包lib下
mv ./mysql-connector-java-5.1.32.jar
$HIVE_HOME/lib
4,配置环境变量参考
vim /etc/profile
export HIVE_HOME=/export/server/apache-hive-3.1.2-bin
export PATH=/export/server/apache-hive-3.1.2-bin/bin
# 使配置文件生效
source /etc/profile
5,初始化元数据命令
bin/schematool -initSchema -dbType mysql -verbos
6,创建hive的存储目录
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
四,MetaStore的三种常用启动及其终止方式
1,前台启动
hive --service metastore
退出使用ctrl+c 快捷键退出进程
2 ,前台启动并开启日志
hive --service metastore --hiveconf hive.root.logger=DEBUG,console
退出使用ctrl+c 快捷键退出进程
3,后台启动
nohup hive --service metastore&
关闭进程,使用jps命令查询Hive的进程编号,在使用kill -9 进程编号命令杀死进程。
五,Hive的客户端
Hive有第一代客户端和第二代客户端,但第一代客户端hive的官方已经不推荐使用了,所以在这里我只介绍第二代客户端beeline。beeline客户端不直接访问MetaStore服务,而是直接访问HiveServer2服务,HiveServer2直接访问MetaStore服务。所以在使用beeline客户端之前要依次启动MetaStore服务,HiveServer2服务,且启动顺序不能颠倒。启动命令如下:
nohup hive --service metastore & # 后台启动metastore服务
nohup hive --service hiveserver2 & # 后台启动hiveserver2服务
beeline> ! connect jdbc:hive2://node1:10000 # 连接hiveserver2服务
Enter username for jdbc:hive2://node1:10000: root # 是登录Linux用户名
Enter password for jdbc:hive2://node1:10000: ******* # root用户的登录密码