前篇文章完成了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);
但是我没运行出来,所以只完成了增删改查里查的操作。