Hive是分布式运行的框架还是单机运行的?
Hive是单机工具,只需要部署在一台服务器即可。Hive虽然是单机的,但是它可以提交分布式运行的MapReduce程序运行。我们知道Hive是单机工具后,就需要准备一台服务器供Hive使用即可。同时Hive需要使用元数据服务,即需要再提供一个关系型数据库,我们选择其中一台服务器安装关系型数据库即可,下面搭建选用MySQL8。
1. 软件准备
MySQL8.0.13 链接:https://pan.baidu.com/s/1JLzMDkF5Mxco9VLzXy-aQg 提取码: sql8
MySQL驱动jar包 链接:https://pan.baidu.com/s/1Nu1Q-5KyOv6I-d-kqyj_oA 提取码: jar8
hadoop3.3.1 链接:https://pan.baidu.com/s/1Zjjnj05erfVR395yC68tfA 提取码: hd3x
Hive3.1.2 链接:https://pan.baidu.com/s/1CsGOnasad42PAf2HCbG73Q 提取码: hiv3
2. 安装MySQL
安装MySQL8 一搜一大把
https://blog.csdn.net/xwl_java/article/details/106568194?spm=1001.2014.3001.5506
3. 安装Hadoop并配置
https://blog.csdn.net/CSDN1csdn1/article/details/129853759?spm=1001.2014.3001.5502
因为Hive的运行依赖于Hadoop(HDFS,MapReduce,YARN都依赖),同时涉及到HDFS文件系统的访问,所以需要配置代理用户。
配置文件 hadoop-3.3.1/etc/hadoop/core-site.xml 添加,并分发到其他节点,然后重启HDFS集群。
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
4. 安装Hive
- 下载解压Hive
# 解压到指定目录
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /export/server
# 设置软连接,或者直接重命名
ln -s apache-hive-3.1.2-bin hive
- 将下载的MySQL驱动包放入到Hive的lib目录下
mv mysql-connector-java-8.0.13.jar /export/server/hive/lib/
5. 配置Hive
- 在Hive的conf目录下修改 hive-env.sh 配置文件
cd /export/server/hive/conf
mv hive-env.sh.template hive-env.sh
vi hive-env.sh # 将下面环境变量添加到该文件中,目录层级按自己环境来
export HADOOP_HOME=/export/server/hadoop-3.3.1
export HIVE_CONF_DIR=/export/server/hive
export HIVE_AUX_JARS_PATH=/export/server/hive/lib
- 继续在此目录下新增 hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://Master:9083</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>Master</value>
</property>
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
6. 初始化元数据库
Hive的配置已经完成,在启动Hive之前,需要先初始化Hive所需的元数据库。
- 启动MySQL服务并登录
service mysql start # 启动mysql
mysql -uroot -p # 连接到mysql
- 登录到MySQL, 在MySQL中新建数据库—hive
CREATE DATABASE hive CHARSET utf8;
- 执行元数据库初始化命令
cd /export/server/hive
bin/schematool -initSchema -dbType mysql -verbos
- 查看是否初始化成功
use hive;
show tables; --初始化成功后会在hive数据库里新增74张元数据管理的表
7. 启动Hive
- 创建一个hive的日志文件目录
cd /export/server/hive
mkdir logs
- 启动Hive前先保证Hadoop集群已经启动!!!没有启动的话先启动Hadoop集群
- 启动Hive的metastore服务
bin/hive --service metastore # 前台启动
nohup bin/hive --service metastore >> logs/metastore.log 2>&1 & #后台启动
- 启动Hive命令行
bin/hive