当前位置:   article > 正文

Hive与HBase的整合(单机)_hive与hbase集成单机版

hive与hbase集成单机版

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

mysql下载参考博客:mysql安装

一、MySQL安装与配置

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

  1. sudo apt-get update
  2. sudo apt-get install mysql-server

启动 MySQL:

service mysql start

检查是否启动成功:

systemctl status mysql.service

正常启动输出如下:

Active为active就行。

2. 配置MySQL

初始化 MySQL:

sudo mysql_secure_installation

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

  1. lmk@lmk-ubuntu:~$ sudo mysql_secure_installation
  2. ...
  3. # 这里是询问是否安装密码插件,我选择 No
  4. #最后选择no,要不然以后每次设置代码都要运行语句,更改密码强度
  5. #详情参考文前“mysql安装”链接里的内容
  6. Would you like to setup VALIDATE PASSWORD component?
  7. Press y|Y for Yes, any other key for No: n
  8. # 这里为 root 用户设置密码
  9. Please set the password for root here.
  10. New password:
  11. Re-enter new password:
  12. # 删除匿名用户,我选 Yes
  13. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
  14. Success.
  15. # 禁止root管理员从远程登录,这里我选 No
  16. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n
  17. # 删除test数据库并取消对它的访问权限, 我选 Yes
  18. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
  19. # # 刷新授权表,让初始化后的设定立即生效, 选 Yes
  20. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
  21. Success.
  22. ...

编辑 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:

  1. service mysql start
  2. sudo mysql -u root -

新建 hive 数据库:

CREATE DATABASE hive;

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

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

退出 MySQL:

quit;

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

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

启动hive

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

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

hive>

可运行hive进行实例测试:

  1. hive> create database if not exists hive; #创建数据库
  2. OK
  3. Time taken: 0.59 seconds
  4. hive> show databases; #查看Hive中包含数据库
  5. OK
  6. datazq
  7. default
  8. hive
  9. Time taken: 0.148 seconds, Fetched: 3 row(s)
  10. hive> show databases like 'h.*'; #查看Hive中以h开头数据库
  11. OK
  12. hive
  13. Time taken: 0.04 seconds, Fetched: 1 row(s)
  14. hive>

二、Hive与HBase的整合

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

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

  1. cd /usr/local/hive/lib
  2. base-client-2.0.0-alpha4.jar
  3. hbase-common-2.0.0-alpha4.jar
  4. hbase-common-2.0.0-alpha4-tests.jar
  5. hbase-server-2.0.0-alpha4.jar
  6. hbase-protocol-2.0.0-alpha4.jar
  7. htrace-core-3.2.0-incubating.jar
  8. zookeeper-3.4.6.jar

2.修改hive-site.xml配置

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

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

  1. <property>
  2. <name>hive.aux.jars.path</name>
  3. #以下部分一定要根据自己的路径来
  4. <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>
  5. </property>
  6. <property>
  7. <name>hive.zookeeper.quorum</name>
  8. <value>localhost:2181</value>
  9. </property>
  10. <property>
  11. <name>hbase.zookeeper.quorum</name>
  12. <value>localhost:2181</value>
  13. </property>

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

  1. cd /usr/local/hive/conf
  2. export HADOOP_HOME=/usr/local/hadoop
  3. export HIVE_CONF_DIR=/usr/local/hive/conf
  4. export HBASE_HOME=/usr/local/hbase

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

  1. cd /usr/local/hbase/bin
  2. hbase shell
  3. create 'stu','info'
  4. put 'stu','001','info:addres','guangzhou'
  5. put 'stu','001','info:age','20'
  6. put 'stu','001','info:username','alex'
  7. put 'stu','002','info:addres','shenzhen'
  8. put 'stu','002','info:age','34'
  9. put 'stu','002','info:username','jack'
  10. put 'stu','003','info:addres','beijing'
  11. put 'stu','003','info:age','23'
  12. put 'stu','003','info:username','lili'

5.启动Hive服务

  1. cd /usr/local/hive/bin
  2. hive

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

  1. CREATE EXTERNAL TABLE stu(
  2. id string,
  3. addres string,
  4. age string,
  5. username string)
  6. STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
  7. WITH SERDEPROPERTIES (
  8. "hbase.columns.mapping" =
  9. ":key,info:addres,info:age,info:username")
  10. TBLPROPERTIES ("hbase.table.name" = "stu");

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

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

8.Hive中插入数据到HBase表

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

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

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/537167
推荐阅读
相关标签
  

闽ICP备14008679号