Hbase与Hive的集成

Hbase与Hive的对比

首先我们可以明确一点,与Hive一点关系都没有
1.Hive
(1) 数据仓库
Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询。
(2) 用于数据分析、清洗
Hive适用于离线的数据分析和清洗,延迟较高。
(3) 基于HDFS、MapReduce
Hive存储的数据依旧在DataNode上,编写的HQL语句终将是转换为MapReduce代码执行。
2.HBase
(1) 数据库
是一种面向列族存储的非关系型数据库。
(2) 用于存储结构化和非结构化的数据
适用于单表非关系型数据的存储,不适合做关联查询,类似JOIN等操作。
(3) 基于HDFS
数据持久化存储的体现形式是HFile,存放于DataNode中,被ResionServer以region的形式进行管理。
(4) 延迟较低,接入在线业务使用
面对大量的企业数据,HBase可以直线单表大量数据的存储,同时提供了高效的数据访问速度。

个人总结:

1.Hbase与Hive都是利用HDFS来存储数据,Hive使用sql实现数据读写,Hbase使用phoenix来实现对数据的处理
2.Hbase与Hive没有任何关系
3.Hive是数据仓库的主体,主要对数据进行处理,针对存储在HDFS上的数据拉成一个个表格,使用SQL风格语法进行数据的处理,
  Hive本身不是数据库,套在数据的上面可以使用sql语法对数据进行处理,
  Hive朱勇用于数据分析,清洗(离线用的较多)
  基于HDFS,计算引擎是MR,hive看起来是sql,其实运行的不是sql,计算引擎会对sql进行解析编译优化,执行的转换为MR程序,在对比Hbase时候,区别在于这个MR程序到底是MR算还是spark算
4.Hbase本身就是非关系型数据库,数据从一个KV的结构给你展现出类似表格的结构,但是这个数据库不能直接对它进行sql语言操作,因此我们使用phoenix套一个皮肤,使用二级索引。
这里有点区别相对一hive,hbase的数据是它自己的HFile,Hive的数据是别人的,只是对别人的数据进行了规划成了一张表。

Hbase与Hive的集成

把hive安装目录下的hive-site.xml中添加zookeeper的属性,如下:

<property>
    <name>hive.zookeeper.quorum</name>
    <value>hadoop102,hadoop103,hadoop104</value>
</property>

<property>
    <name>hive.zookeeper.client.port</name>
    <value>2181</value>
</property>

个人总结:

1.添加的属性是为了hive连hbase,hbase是数据库,数据库一般都是别来连它

案例一
目标:建立Hive表,关联HBase表,插入数据到Hive表的同时能够影响HBase表。
dxy说明:使用时需要开启hadoop集群,zk开启,hbase开启,hive开启。
分步实现:
1.在Hive中创建表同时关联HBase

CREATE TABLE hive_hbase_emp_table(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno")
TBLPROPERTIES ("hbase.table.name" = "hbase_emp_table");

提示:完成之后,可以分别进入Hive和HBase查看,都生成了对应的表

dxy运行结果:
在这里插入图片描述
在这里插入图片描述

个人总结:

SERDEPROPERTIES 解码和编码的格式:格式就是和Hbase里面的列进行对应,这里只是写的列名
在Hbase中不仅有列名还有列族,我们可以发现它是按照顺序进行对应的
第一个key它没有列族,因为它是rowkey,rowkey本来就没列族 
 :key key指的是empno

TBLPROPERTIES 表的名字进行对应

说明:为什么不直接想表load数据,因为我们在计算的时候用临时表,不破坏原始表的数据
2.在Hive中创建临时中间表,用于load文件中的数据
提示:不能将数据直接load进Hive所关联HBase的那张表中
CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
row format delimited fields terminated by ‘\t’;
3.向Hive中间表中load数据
hive> load data local inpath ‘/opt/software/emp.txt’ into table emp;
4.通过insert命令将中间表中的数据导入到Hive关联Hbase的那张表中
hive> insert into table hive_hbase_emp_table select * from emp;
5.查看Hive以及关联的HBase表中是否已经成功的同步插入了数据
Hive:
hive> select * from hive_hbase_emp_table;
在这里插入图片描述

HBase:
Hbase> scan ‘hbase_emp_table’
在这里插入图片描述
这里的数据一行代表一个cell
这样的好处
想要拿hbase数据进行计算分几步?
方法1(太麻烦,另外大数据最基础都是MR,写个MR计算引擎?不现实).写个API,自己用scan方法去把这个数据读出来,读出来之后使用sum进行统计,把结果输入到对应的文件里面。
方法2:跟Hive关联起来,hive里面使用sql语言进行计算,完了之后把结果导入一个表里面,然后在于Hbase表进行对应,在存回去。
这是hive继承mysql和hbase的意义。

**案例二

目标:在HBase中已经存储了某一张表hbase_emp_table,然后在Hive中创建一个外部表来关联HBase中的hbase_emp_table这张表,使之可以借助Hive来分析HBase这张表中的数据。
注:该案例2紧跟案例1的脚步,所以完成此案例前,请先完成案例1。

外部表不能修改里面的数据。
分步实现:
1.在Hive中创建外部表
CREATE EXTERNAL TABLE relevance_hbase_emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int)
STORED BY
‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’
WITH SERDEPROPERTIES (“hbase.columns.mapping” =
“:key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno”)
TBLPROPERTIES (“hbase.table.name” = “hbase_emp_table”);
2.关联后就可以使用Hive函数进行一些分析操作了
hive (default)> select * from relevance_hbase_emp;

Hive中MetaServer与HiveServer2的区别

hiveserver2:JDBC服务端,如果你需要使用JDBC远程连接这个hiveserver2,需要启动它。
metaserver:可以不启动不用
在以前我门学习hive中,配置过mateserver服务的
在这里插入图片描述
一般这个不用配置,用的话才配置,配置这个参数是什么意思呢?
当前这个节点想要连接元数据,连配置这个地址就行。相当于有个中间商代理。

hive需要去连源数据库,有两种方法,一种是直连Mysql,直连,mysql可以需要配置账号密码,驱动。
不配置元数据服务也能连接。hadoop102不配置元数据服务可以直接连接MYSQL,在103和104上也希望可以连接mysql,但是出于权限管理,或者说账号安全原因。不想告诉102和104账号和密码,这时候就需要代理了,可以直接连的102进行代理,需要在102上启动metaserver服务,然后在103和104配置这个服务的参数
在这里插入图片描述
那么你在103和104上启动这个hive的时候,会通过hive找元数据。连接到了102启动的metaserver,这样也能找到元数据,就算不知道账号和密码
我们以前在用的时候配置过,不启动这个服务我们连接的就是配置这个参数,不启动这个服务,能够登录hive,但是不能show table,告诉你元数据连接不上。但是你把这个参数删掉就可以连接上了。因为它本来就能连上。

总结:一个主节点可以直连,没有必要配置这个服务,启动从节点不能连,需要配置这个服务。在主节点开启这个服务,让从节点来连主节点。

Hbase集成总结

Hbase集成总结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值