伪分布式部署

配置 MySQL

安装 MySQL

  • 可使用此脚本部署:https://github.com/XiangYyy/install_mysql_tools

配置用户

1
2
3
CREATE DATABASE `hive` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
create user 'hive_user'@'%' identified by '123456';
GRANT ALL PRIVILEGES ON hive.* TO 'hive_user'@'%' WITH GRANT OPTION;

安装 Hive

解压

1
tar -zxvf apache-hive-3.1.0-bin.tar.gz  -C /opt/hadoop/

配置环境变量

1
2
3
4
$ vi ~/.bashrc
export HIVE_HOME=/opt/hadoop/apache-hive-3.1.0-bin
export PATH=$HIVE_HOME/bin:$PATH
$ source ~/.bashrc

配置 java 驱动包

1
2
unzip mysql-connector-j-8.0.32.zip
mv mysql-connector-j-8.0.32/mysql-connector-j-8.0.32.jar  $HIVE_HOME/lib/

更改配置文件

hive-env.sh

1
cp $HIVE_HOME/conf/hive-env.sh.template $HIVE_HOME/conf/hive-env.sh
  • 更改使用内存大小(按需更改)
1
2
$ vi $HIVE_HOME/conf/hive-env.sh
export HADOOP_HEAPSIZE=2048

hive-site.xml

  • hdfs 内创建目录
1
hadoop fs -mkdir -p /user/hive/warehouse
  • 更改配置
1
2
cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml
vi $HIVE_HOME/conf/hive-site.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?xml version="1.0"?>  
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
<configuration>

<!-- 配置hdfs存储目录 -->
<property>  
	<name>hive.metastore.warehouse.dir</name>
	<value>/user/hive_remote/warehouse</value>  
</property>  

<!-- 本地模式 -->
<property>
  <name>hive.metastore.local</name>
  <value>true</value>
</property>

<!-- 所连接的 MySQL 数据库的地址,hive是数据库,程序会自动创建,自定义就行 -->
<property>  
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false&amp;serverTimezone=Asia/Shanghai</value>
</property>

<!-- MySQL 驱动 -->
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>

<!-- mysql连接用户 -->
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive_user</value>
</property>  

<!-- mysql连接密码 -->
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>123456</value>
</property>

<!--元数据是否校验-->
<property>
  <name>hive.metastore.schema.verification</name>
  <value>false</value>
</property>

<property>
  <name>system:user.name</name>
  <value>root</value>
  <description>user name</description>
</property>

</configuration>

初始化元数据

1
schematool -initSchema -dbType mysql --verbose

hive 客户端验证

1
2
3
4
$ hive
hive> show databases;
# 查看当前连接的库
hive> select current_database();

配置 hiveserver2

  • hiveserver2 可以使 hive 暴露一个端口,像一个数据一样对外提供服务

hadoop 设置可访问的用户和用户组

1
vi $HADOOP_HOME/etc/hadoop/core-site.xml
  • 增加如下配置
1
2
3
4
5
6
7
8
    <property>
      <name>hadoop.proxyuser.root.hosts</name>
      <value>*</value>
    </property>
    <property>
      <name>hadoop.proxyuser.root.groups</name>
      <value>*</value>
    </property>

Hive 增加 hs2 配置

1
vi $HIVE_HOME/conf/hive-site.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<!-- host -->
<property>
  <name>hive.server2.thrift.bind.host</name>
  <value>192.168.212.91</value>
  <description>Bind host on which to run the HiveServer2 Thrift service.</description>
</property>

<!-- hs2端口 默认是1000,为了区别,我这里不使用默认端口-->
<property>
  <name>hive.server2.thrift.port</name>
  <value>11000</value>
</property>

<!-- 关闭用户模拟功能 -->
<property>
 <name>hive.server2.enable.doAs</name>
 <value>false</value>
</property>

重启 hadoop

1
2
3
cd  $HADOOP_HOME
./sbin/stop-all.sh
./sbin/start-all.sh

开启 hiveserver2

  • 通过 screen 后台运行服务
1
2
screen -S hiveserver2
hiveserver2

验证

  • 在另一台机器上部署 hadoop,解压 hive,配置环境变量
  • 也可使用 DBeaver 等图形化工具连接验证
1
2
3
4
5
6
7
beeline -u 'jdbc:hive2://192.168.212.91:11000/default'
> show databases;
+----------------+
| database_name  |
+----------------+
| default        |
+----------------+