赞
踩
前篇文章完成了Hive和HBase的安装与配置,之前启动柜hive是没有问题的,但是过了一周之后运行hive发现有很多报错,查询很多文章之后发现需要下载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>
本部分参考链接为: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);
但是我没运行出来,所以只完成了增删改查里查的操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。