Hive与HBase的整合(单机)

本文详细介绍了在Ubuntu上安装MySQL8.0,配置安全选项,为Hive创建MySQL账号,以及如何将Hive与HBase整合,包括设置Hive-site.xml和hive-env.sh配置,创建外部表和查询HBase数据的过程。
摘要由CSDN通过智能技术生成

前篇文章完成了Hive和HBase的安装与配置,之前启动柜hive是没有问题的,但是过了一周之后运行hive发现有很多报错,查询很多文章之后发现需要下载mysql。

mysql下载参考博客:mysql安装

一、MySQL安装与配置

1. 安装MySQL
Ubuntu20.04 自带MySQL8. 几版本的,低于 20.04 则默认安装是 MySQL5.7.33,两者使用除了语法无多大差异。使用默认的 apt 包管理器安装即可:

sudo apt-get update
sudo apt-get install mysql-server

启动 MySQL:

service mysql start

检查是否启动成功:

systemctl status mysql.service

正常启动输出如下:

Active为active就行。

2. 配置MySQL

初始化 MySQL:

sudo mysql_secure_installation

接下来会需要配置好几个内容,参考以下部分配置:

lmk@lmk-ubuntu:~$ sudo mysql_secure_installation

...

# 这里是询问是否安装密码插件,我选择 No
#最后选择no,要不然以后每次设置代码都要运行语句,更改密码强度
#详情参考文前“mysql安装”链接里的内容
Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: n

# 这里为 root 用户设置密码
Please set the password for root here.
New password: 
Re-enter new password: 

# 删除匿名用户,我选 Yes
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

# 禁止root管理员从远程登录,这里我选 No
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n

# 删除test数据库并取消对它的访问权限, 我选 Yes
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

# # 刷新授权表,让初始化后的设定立即生效, 选 Yes
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

...

编辑 MySQL 配置文件:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在 mysqld 下添加以下一行数据:

character_set_server=utf8

重启你的 MySQL 服务:

service mysql restart

3. 安装MySQL jdbc包

因为安装的 MySQL 版本为 5.7.33,所以我们需要下载对应版本的 MySQL jdbc 包。

版本对应问题可参考博客:mysql-connector-java与mysql以及JDK的对应版本

我下的安装包是mysql-connector-java-5.1.42.jar,下载好后,直接将jar包复制到/usr/local/hive/lib目录下。

4. 为Hive创建MySQL账号
启动 MySQL 服务,登录 shell:

service mysql start
sudo mysql -u root -p 

新建 hive 数据库:

CREATE DATABASE hive;

创建用户 hive,设置密码(这里根据配置文件设置为 hive),使其能连接上 hive 数据库:

create user 'hive'@'%' identified by  'hive';
#若上一步提示密码不符,则参考文章最前“mysql安装”链接里的教程
grant all privileges on hive.* to 'hive'@'%' with grant option;
flush privileges;

退出 MySQL:

quit;

5.验证Hive安装及错误处理
启动Hadoop

cd /usr/local/hadoop
sbin/start-dfs.sh

启动hive

cd /usr/local/hive
./bin/schematool -dbType mysql -initSchema
#只要mysql与mysqlconnetor版本兼容,上一步一般都不会错
bin/hive

正常启动会出现一个交互界面如下,这样之前的报错就没有了,可能有点INFO信息,但是hive能正常运行:

hive>

可运行hive进行实例测试:

hive> create database if not exists hive; #创建数据库
OK
Time taken: 0.59 seconds

hive> show databases; #查看Hive中包含数据库
OK
datazq
default
hive
Time taken: 0.148 seconds, Fetched: 3 row(s)

hive> show databases like 'h.*'; #查看Hive中以h开头数据库
OK
hive
Time taken: 0.04 seconds, Fetched: 1 row(s)

hive>

二、Hive与HBase的整合

本部分参考链接为:Hadoop大数据开发__Hive和HBase集成安装

1.首先需要保证Hive下面有HBase使用的jar包(本次使用的Hive版本为3.1.3,需要的包都带了,不需要再次复制,如果没有,从HBase中复制即可)

cd /usr/local/hive/lib
base-client-2.0.0-alpha4.jar
hbase-common-2.0.0-alpha4.jar
hbase-common-2.0.0-alpha4-tests.jar
hbase-server-2.0.0-alpha4.jar
hbase-protocol-2.0.0-alpha4.jar
htrace-core-3.2.0-incubating.jar
zookeeper-3.4.6.jar

2.修改hive-site.xml配置

由于我们采用的是自带的zookeeper,所以这里要设为localhost:2181。

localhost是本地机器的主机名,2181是ZooKeeper默认的客户端连接端口

<property>
    <name>hive.aux.jars.path</name>
#以下部分一定要根据自己的路径来
    <value>file:///usr/local/hive/lib/hive-hbase-handler-3.1.2.jar,file:///usr/local/hive/lib/zookeeper-3.4.6.jar,file:///usr/local/hive/lib/hbase-client-2.0.0-alpha4.jar,file:///usr/local/hive/lib/hbase-common-2.0.0-alpha4.jar,file:///usr/local/hive/lib/hbase-common-2.0.0-alpha4-tests.jar,file:///usr/local/hive/lib/hbase-server-2.0.0-alpha4.jar,file:///usr/local/hive/lib/hbase-protocol-2.0.0-alpha4.jar,file:///usr/local/hive/lib/htrace-core-3.2.0-incubating.jar</value>
  </property>
  <property>
    <name>hive.zookeeper.quorum</name>
    <value>localhost:2181</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>localhost:2181</value>
  </property>

3、修改hive-env.sh配置(记得把后面的template后缀去掉)

cd /usr/local/hive/conf
export HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hive/conf
export HBASE_HOME=/usr/local/hbase

4.HBase中准备需要映射的表

cd /usr/local/hbase/bin
hbase shell
create 'stu','info'
put 'stu','001','info:addres','guangzhou'
put 'stu','001','info:age','20'
put 'stu','001','info:username','alex'
put 'stu','002','info:addres','shenzhen'
put 'stu','002','info:age','34'
put 'stu','002','info:username','jack'
put 'stu','003','info:addres','beijing'
put 'stu','003','info:age','23'
put 'stu','003','info:username','lili'

5.启动Hive服务

cd /usr/local/hive/bin
hive

6.创建Hive外部表,建立和HBase表之间的映射关系

CREATE EXTERNAL TABLE stu(
id string,
addres string,
age string,
username string) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
"hbase.columns.mapping" = 
":key,info:addres,info:age,info:username") 
TBLPROPERTIES ("hbase.table.name" = "stu");

7.建立完Hive和HBase的映射关系后,接下来可以使用Hive查询HBase中的数据

select * from stu limit 5 #如果查到数据,则说明Hive和HBase集成环境配置完成

8.Hive中插入数据到HBase表

因为hive插入数据需要用形式insert....select形式类似于以下形式:

insert into table hiveFromHbase
SELECT 'r4' AS rowkey,
map('name','zhaoliu') AS f1,
map('age','50') AS f2,
map('sex','male') AS f3
from person limit 1;

以上代码参考链接:Hive 整合Hbase(来自学习资料--博学谷)

查找资料发现插入单行数据格式为:

INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);

但是我没运行出来,所以只完成了增删改查里查的操作。

  • 32
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值