
Hive+Hbase 的部署及使用

HBase 和 Hive 是 Hadoop 生态系统中常用的两个组件。HBase 是一个分布式的非关系型数据库,可以用来存储大量的结构化数据;Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化数据映射为一张数据库表,并提供类似 SQL 的查询语言。
下载 HBase 和 Hive
注意Hadoop 与 Hbase 和 Hive 的版本匹配问题,不然到后面会有意外惊喜,我的Hadoop是 3.3.4,如果和我一样后面直接复制我的命令即可,不一样你需要去搜一下你版本对应的Hbase 和Hive


1 | cd /usr/local |
配置 HBase
配置环境变量(顺便把 Hive 的也配置了)
$ vi ~/.bashrc
1 | ## HBASE_HOME |
生效
$ source ~/.bashrc
Hadoop 和 HBase 之间需要进行配置,以便 HBase 可以使用 Hadoop 作为其底层存储和计算引擎
将 Hadoop 的 core-site.xml 和 hdfs-site.xml 配置文件复制到 HBase 的 conf 目录下:
1
2cp $HADOOP_HOME/etc/hadoop/core-site.xml $HBASE_HOME/conf/
cp $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HBASE_HOME/conf/编辑 HBase 的 hbase-site.xml 文件:
vi /usr/local/hbase/conf/hbase-site.xml1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>./tmp</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
验证是否启动
启动 Hadoop
1
2
3
4
5
6
7
8
9
10
11
12
13
14su hadoop
sudo service ssh start
ssh localhost
# 启动 Hadoop
start-all.sh
# 启动 HBase
start-hbase.sh
# 查看一下
jps
浏览器访问 Web UI
localhost: 16010
则启动成功
配置 Hive
在将 Hive 与 HBase 集成时需要使用 MySQL 作为元数据存储。Hive 元数据存储在 RDBMS 中,因此需要一个关系型数据库来存储表和列等元数据信息。
配置 mysql(安装好的跳过)
安装 mysql 客户端和服务端
1
sudo apt-get install mysql-server mysql-client
设置密码
1
sudo mysql_secure_installation
登录
1
2
3
4sudo mysql -u root -p
# 显示如下则成功
exit
配置 Hive
在 Hadoop 集群中创建一个 Hive 元数据存储目录:
1
2$ hdfs dfs -mkdir /hive
$ hdfs dfs -mkdir /hive/metastore进入 Hive 的 conf 目录
1
2
3
4
5
6
7
8
9
10
11
12cd /usr/local/hadoop/hive
# 将 hive-env.sh.template 复制一份并命名为 hive-env.sh
cp hive-env.sh.template hive-env.sh
# 编辑hive-env.sh
vi hive-env.sh
# 加上下面配置
HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hadoop/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/hadoop/hive/lib- 创建一个 hive-site.xml 文件并加上下面配置(
vi hive-site.xml)
注意:MySQL5 用的驱动 url 是
com.mysql.jdbc.Driver,MySQL6 以后用的是com.mysql.cj.jdbc.Driver。版本不匹配便会报驱动类已过时的错误,所以对应第二个property配置应匹配 MySQL 版本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<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hadoop/hive/tmp</value>
</property>
</configuration>hive 下创建一个
warehouse和logs文件夹1
2/hive$ mkdir /usr/local/hadoop/hive/warehouse
/hive$ mkdir -p logshive/conf 对 hive-log4j2.properties 配置
1
2
3
4
5
6
7cd conf
mv hive-log4j2.properties.template hive-log4j2.properties
sudo vi hive-log4j2.properties
# 将第 24 行左右修改(vim 可以直接 :24 跳转到24行)
property.hive.log.dir = /usr/local/hadoop/hive/logs进入 hive/lib 下面下载
mysql-connector-java的 jar 包,可使用下面命令1
2
3wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.27.tar.gz
# 解压
# 将jar 包移动到 hive/lib 目录下,此处省略初始化 metastore 数据库:
1
schematool -initSchema -dbType mysql -verbose
启动 metastore 服务
1
hive --service metastore
- 创建一个 hive-site.xml 文件并加上下面配置(
另开一个终端
启动 hive
$ hive
创建一个测试表进行测试
1
2
3CREATE TABLE test (id INT, name STRING);
INSERT INTO test VALUES (1, 'test1'), (2, 'test2'), (3, 'test3');
SELECT * FROM test;


退出
>
exit关闭服务
1
2stop-hbase.sh
stop-all.sh
至此,Hbase+Hive 配置完成
- 标题: Hive+Hbase 的部署及使用
- 作者: liohi
- 创建于 : 2023-04-24 15:35:19
- 更新于 : 2023-05-04 17:19:25
- 链接: https://liohi.github.io/2023/04/24/Hive+Hbase 的部署及使用/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。






