3.12-3.16 Hbase集成hive、sqoop、hue
一、Hbase集成hive
https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration
1、说明
Hive与HBase整合在一起,使Hive可以读取HBase中的数据,让Hadoop生态系统中最为常用的两大框架互相结合,使用Hive读取Hbase中的数据。
我们可以使用HQL语句在HBase表上进行查询、插入操作;甚至是进行Join和Union等复杂查询。 整合后的目标:
(1). 在hive中创建的表能直接创建保存到hbase中。 (2). 往hive中的表插入数据,数据会同步更新到hbase对应的表中。 (3). hbase对应的列簇值变更,也会在Hive中对应的表中变更。 (4). 实现了多列,多列簇的转化:(示例:hive中3列对应hbase中2列簇) 整合的优缺点:
优点:
(1).Hive方便地提供了Hive QL的接口来简化MapReduce的使用,
(2).操作方便,hive提供了大量系统功能 缺点:
性能的损失,hive有这样的功能, 他支持通过类似sql语句的语法来操作hbase中的数据, 但是速度慢。 hive与HBase通信:
主要是通过hive 的lib目录下的hive-hbase-handler-x.x.x.jar来实现hive和Hbase通信。
2、准备jar包
#######hive
[root@hadoop-senior lib]# cd /opt/modules/hive-0.13.1/lib [root@hadoop-senior lib]# mv guava-11.0.2.jar /tmp/ #######hbase
[root@hadoop-senior lib]# cd /opt/modules/hbase-0.98.6-hadoop2/lib [root@hadoop-senior lib]# cp ./guava-12.0.1.jar /opt/modules/hive-0.13.1/lib/ #######hbase
[root@hadoop-senior lib]# ln -s /opt/modules/hbase-0.98.6-hadoop2/lib/hbase-common-0.98.6-hadoop2.jar /opt/modules/hive-0.13.1/lib/hbase-common-0.98.6-hadoop2.jar
[root@hadoop-senior lib]# ln -s /opt/modules/hbase-0.98.6-hadoop2/lib/hbase-server-0.98.6-hadoop2.jar /opt/modules/hive-0.13.1/lib/hbase-server-0.98.6-hadoop2.jar
[root@hadoop-senior lib]# ln -s /opt/modules/hbase-0.98.6-hadoop2/lib/hbase-client-0.98.6-hadoop2.jar /opt/modules/hive-0.13.1/lib/hbase-client-0.98.6-hadoop2.jar
[root@hadoop-senior lib]# ln -s /opt/modules/hbase-0.98.6-hadoop2/lib/hbase-protocol-0.98.6-hadoop2.jar /opt/modules/hive-0.13.1/lib/hbase-protocol-0.98.6-hadoop2.jar
[root@hadoop-senior lib]# ln -s /opt/modules/hbase-0.98.6-hadoop2/lib/hbase-it-0.98.6-hadoop2.jar /opt/modules/hive-0.13.1/lib/hbase-it-0.98.6-hadoop2.jar
[root@hadoop-senior lib]# ln -s /opt/modules/hbase-0.98.6-hadoop2/lib/htrace-core-2.04.jar /opt/modules/hive-0.13.1/lib/htrace-core-2.04.jar
[root@hadoop-senior ~]# ln -s /opt/modules/hbase-0.98.6-hadoop2/lib/hbase-hadoop2-compat-0.98.6-hadoop2.jar /opt/modules/hive-0.13.1/lib/hbase-hadoop2-compat-0.98.6-hadoop2.jar
[root@hadoop-senior ~]# ln -s /opt/modules/hbase-0.98.6-hadoop2/lib/hbase-hadoop-compat-0.98.6-hadoop2.jar /opt/modules/hive-0.13.1/lib/hbase-hadoop-compat-0.98.6-hadoop2.jar
[root@hadoop-senior ~]# ln -s /opt/modules/hbase-0.98.6-hadoop2/lib/high-scale-lib-1.1.1.jar /opt/modules/hive-0.13.1/lib/high-scale-lib-1.1.1.jar
3、hive-site.xml
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop-senior.ibeifeng.com</value>
</property>
4、创建管理表测试
############
从Hive中创建HBase表
CREATE TABLE hbase_table_1(key int, value string) //Hive中的表名:hbase_table_1
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' //指定存储处理器
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val") //声明rowkey,列族,列名
TBLPROPERTIES ("hbase.table.name" = "xyz"); //hbase.table.name声明HBase表名,为可选属性,默认与Hive的表名相同 ##查看hdfs中的hive目录
[root@hadoop-senior hadoop-2.5.0]# bin/hdfs dfs -ls /user/hive/warehouse |grep hbase
drwxr-xr-x - root supergroup 0 2019-05-28 13:01 /user/hive/warehouse/hbase_table_1 ##查看hdfs中的hbase目录
[root@hadoop-senior hadoop-2.5.0]# bin/hdfs dfs -ls /hbase/data/default |grep xyz
drwxr-xr-x - root supergroup 0 2019-05-28 13:01 /hbase/data/default/xyz ############
插入数据
hive (default)> insert overwrite table hbase_table_1 select empno, ename from emp; ##查询数据,数据是存储在hbase中的;
hive (default)> select * from hbase_table_1 ;
OK
hbase_table_1.key hbase_table_1.value
7369 SMITH
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7788 SCOTT
7839 KING
7844 TURNER
7876 ADAMS
7900 JAMES
7902 FORD
7934 MILLER
Time taken: 0.105 seconds, Fetched: 14 row(s) hbase(main):001:0> scan 'xyz'
ROW COLUMN+CELL
7369 column=cf1:val, timestamp=1559023958169, value=SMITH
7499 column=cf1:val, timestamp=1559023958169, value=ALLEN
7521 column=cf1:val, timestamp=1559023958169, value=WARD
7566 column=cf1:val, timestamp=1559023958169, value=JONES
7654 column=cf1:val, timestamp=1559023958169, value=MARTIN
7698 column=cf1:val, timestamp=1559023958169, value=BLAKE
7782 column=cf1:val, timestamp=1559023958169, value=CLARK
7788 column=cf1:val, timestamp=1559023958169, value=SCOTT
7839 column=cf1:val, timestamp=1559023958169, value=KING
7844 column=cf1:val, timestamp=1559023958169, value=TURNER
7876 column=cf1:val, timestamp=1559023958169, value=ADAMS
7900 column=cf1:val, timestamp=1559023958169, value=JAMES
7902 column=cf1:val, timestamp=1559023958169, value=FORD
7934 column=cf1:val, timestamp=1559023958169, value=MILLER hbase(main):002:0> flush 'xyz'
0 row(s) in 0.1400 seconds [root@hadoop-senior hadoop-2.5.0]# bin/hdfs dfs -ls /hbase/data/default/xyz/1c3bcd4eae0bb8cf534025c57a5c7487/cf1
Found 1 items
-rw-r--r-- 1 root supergroup 1491 2019-05-28 14:20 /hbase/data/default/xyz/1c3bcd4eae0bb8cf534025c57a5c7487/cf1/97471b912fd54447b90f162e7f49c765 ##此时是在hive中创建的管理表,如果过将hive中的表删除了,hbase中的表也将被删除;
5、创建外部表
现在已经存在一个HBase表,需要对表中数据进行分析,将hbase表映射到hive中;
##将user表映射到hive中
hbase(main):012:0> scan 'user'
ROW COLUMN+CELL
10002 column=info:age, timestamp=1558343570256, value=30
10002 column=info:name, timestamp=1558343559457, value=wangwu
10003 column=info:age, timestamp=1558577830484, value=35
10003 column=info:name, timestamp=1558345826709, value=zhaoliu
2 row(s) in 0.0080 seconds 在hive中创建表:
CREATE EXTERNAL TABLE hbase_user(id int, name string,age int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age")
TBLPROPERTIES ("hbase.table.name" = "user"); 查询:
hive (default)> select * from hbase_user ;
OK
hbase_user.id hbase_user.name hbase_user.age
10002 wangwu 30
10003 zhaoliu 35
Time taken: 0.075 seconds, Fetched: 2 row(s) ##此时hive中的表被删除了,hbase中的表不会被删除
二、使用Sqoop导入数据到HBase表中
1、说明
mysql导入hbase可以直接通过sqoop进行; hbase导出到mysql无法直接进行,需要经过hive的中间作用来完成:
hbase→hive外部表→hive内部表→sqoop导出→mysql
2、操作
借鉴一篇博文:https://blog.csdn.net/thinkpadshi/article/details/77628346
#############
##Sqoop导入hbase 创建mysql表:
mysql> create table test.smq_to_hbase select id,name,name grade from test.smq_mysql; mysql> update test.smq_to_hbase set grade = '1'; mysql> Alter table test.smq_to_hbase add primary key(id); 创建HBASE表:
hbase(main):008:0> create 'smq_hbase','info' Sqoop导入hbase中:
root@master bin]# sqoop import --connect jdbc:mysql://192.168.220.20:3306/test --username root --password 123456 \\
--table smq_to_hbase --hbase-table smq_hbase --column-family info --hbase-row-key id #############
##Sqoop导出hbase
Hbase→hive外部表→hive内部表→通过sqoop→mysql Mysql创建空表:
mysql> create table test.employee(rowkey int(11),id int(11),name varchar(20),primary key (id)); hbase创建表:
hbase(main):001:0> create 'employee','info' hbase(main):002:0> put 'employee',1,'info:id',1 hbase(main):003:0> put 'employee',1,'info:name','peter' hbase(main):004:0> put 'employee',2,'info:id',2 hbase(main):005:0> put 'employee',2,'info:name','paul' hive创建外部表:
CREATE EXTERNAL TABLE test.h_employee (key int,id int,name string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES (
"hbase.columns.mapping" =
":key,info:id, info:name"
) TBLPROPERTIES( "hbase.table.name" = "employee",
"hbase.mapred.output.outputtable" = "employee"); hive创建内部表:
hive> CREATE TABLE test.employee(key INT,id INT,name STRING); 将hive外部表的数据导入内部表中:
hive> insert overwrite table test.employee select * from test.h_employee; sqoop导出hive表至mysql中:
[root@master bin]# sqoop export -connect jdbc:mysql://192.168.220.20:3306/test -username root -password 123456
-tablemployee -export-dir /user/hive/warehouse/test.db/employee --input-fields-terminated-by '\001' --input-null-string '\\N' --input-null-non-string '\\N';
三、hbase集成hue
1、配置
##hbase 开启Thrift
[root@hadoop-senior hbase-0.98.6-hadoop2]# bin/hbase-daemon.sh start thrift [root@hadoop-senior hbase-0.98.6-hadoop2]# netstat -ntlp |grep 9090
tcp 0 0 :::9090 :::* LISTEN 2429/java ##修改hue配置文件:hue.ini 大概在800+行;
hbase_clusters=(Cluster|hadoop-senior.ibeifeng.com:9090) hbase_conf_dir=/opt/modules/hbase-0.98.6-hadoop2/conf ##启动hue
[root@hadoop-senior hue-3.7.0-cdh5.3.6]# su - beifeng
[beifeng@hadoop-senior hue-3.7.0-cdh5.3.6]$ ./build/env/bin/supervisor

3.12-3.16 Hbase集成hive、sqoop、hue的更多相关文章
- HBASE与hive对比使用以及HBASE常用shell操作。与sqoop的集成
2.6.与 Hive 的集成2.6.1.HBase 与 Hive 的对比1) Hive(1) 数据仓库Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系,以方 ...
- 新闻网大数据实时分析可视化系统项目——12、Hive与HBase集成进行数据分析
(一)Hive 概述 (二)Hive在Hadoop生态圈中的位置 (三)Hive 架构设计 (四)Hive 的优点及应用场景 (五)Hive 的下载和安装部署 1.Hive 下载 Apache版本的H ...
- 大数据技术之_11_HBase学习_02_HBase API 操作 + HBase 与 Hive 集成 + HBase 优化
第6章 HBase API 操作6.1 环境准备6.2 HBase API6.2.1 判断表是否存在6.2.2 抽取获取 Configuration.Connection.Admin 对象的方法以及关 ...
- hive与hbase集成
http://blog.csdn.net/vah101/article/details/22597341 这篇文章最初是基于介绍HIVE-705.这个功能允许Hive QL命令访问HBase表,进行读 ...
- [转]云计算之hadoop、hive、hue、oozie、sqoop、hbase、zookeeper环境搭建及配置文件
云计算之hadoop.hive.hue.oozie.sqoop.hbase.zookeeper环境搭建及配置文件已经托管到githubhttps://github.com/sxyx2008/clou ...
- hbase结合hive和sqoop实现数据指导mysql
hive综合hbase两个优势表中的: 1.实现数据导入到MYSQL. 2.实现hbase表转换为另外一张hbase表. 三个操作环节: 1.hbase关联hive作为外部 ...
- 新闻实时分析系统Hive与HBase集成进行数据分析 Cloudera HUE大数据可视化分析
1.Hue 概述及版本下载 1)概述 Hue是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是基于Python ...
- 新闻实时分析系统Hive与HBase集成进行数据分析
(一)Hive 概述 (二)Hive在Hadoop生态圈中的位置 (三)Hive 架构设计 (四)Hive 的优点及应用场景 (五)Hive 的下载和安装部署 1.Hive 下载 Apache版本的H ...
- 集成Hive和HBase
1. MapReduce 用MapReduce将数据从本地文件系统导入到HBase的表中, 比如从HBase中读取一些原始数据后使用MapReduce做数据分析. 结合计算型框架进行计算统计查看HBa ...
随机推荐
- bootstrap中模态框的大小设置;
bootstrap模态框调节大小: 大尺寸:黑体加大的字体,是更改的代码 <!-- 大模态框的调节 --> <button type="button" class ...
- EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之_关于接口调用常见的一些问题(401 Unauthorized)
在之前的博客<EasyNVR H5流媒体服务器方案架构设计之视频能力平台>中我们描述了EasyNVR的定位,作为一个能力平台来进行功能的输出: 也就是说,在通常情况下,我们将一套视频的应用 ...
- MongoDB API java的使用
1.创建一个MongoDB数据库连接对象,它默认连接到当前机器的localhost地址,端口是27017. Mongo mongo=new Mongo(); 2.获得与某个数据库(例如“test”)的 ...
- 【题解】HNOI2013比赛
[题解][P3230 HNOI2013]比赛 将得分的序列化成样例给的那种表格,发现一行和一列是同时确定的.这个表格之前是正方形的,后来长宽都减去一,还是正方形.问题形式是递归的.这就启示我们可以把这 ...
- Linux搭建FTP服务器实战
首先准备一台Linux系统机器(虚拟机也可), 检测出是否安装了vsftpd软件: rpm -qa |grep vsftpd 如果没有输出结果,就是没有安装. 使用命令安装,安装过程中会有提示,直接输 ...
- turbolink 造成 link_to异常
link_to 点击之后不刷新不加载文件 send_file 只能在浏览器中打开,而不能下载 解决方法:注释gem turbolink,application.js 中移除turbolink
- 使用pip安装第三方库报错记录
今天在使用pycharm导入第三方库的时候,报了好多超时错误,还有标题中的找不到版本,应该是网络的原因,记录下解决的办法: raise ReadTimeoutError(self._pool, Non ...
- Spring Boot2.0之 监控管理
Spring boot监控中心: 针对微服务的服务状态,服务器的内存变化(内存.线程.日志管理等)检测服务配置连接地址是否有用(有些懒加载的情况下,用的时候发现卧槽不能用)模拟访问,懒加载.统计有多少 ...
- ubuntu上swift开发学习1
学习目的:通过构建一个web应用的实践过程来学习swift.会使用到Perfect框架建立一个web应用(Perfect是swift的一个web框架). 这一篇介绍环境搭建 学习资源: 环境搭建:ht ...
- BZOJ 4582 [Usaco2016 Open]Diamond Collector:贪心【相差不超过k】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4582 题意: 给你n个数. 让你将其中的一些数放入两个不同的集合中,并保证同一集合内两两元 ...