Hbase复习回顾(从原理到使用)

将近1年半没有使用hbase了,但是我亲爱的老板,专门从北京(分公司)邮寄过来了一台含n个t的hbase数据的服务器硬盘。现在要求我将列族中的数据拿出来,改成特定的格式,生成新的rowkey,虽然hbase在我的脑海中已经模糊的像“椰奶”了,但是作为一个优秀的csdn大数据+全栈+产品经理+数据分析专家的程序员。咱不能说不行,于是爽快的答应老板,“这个嘛,很简单,好做”。

咱不像别人心里虚,咱心里也是【表里如一】!自信满满!不就是学一下,复习一下嘛,有什么难的?我赵日天大魔王是厦大的? 独乐乐,不如众乐乐,然后我想着既然自己复习hbase,不如和大家一起复习hbase。于是才有了这篇文章。

首先学习一个东西,你要知道他是什么,此时传来了曲婉婷美妙的歌声,“出现在我脑海里 ~  我的梦里~ 我的话里”,不知不觉我就想到了这首歌,虽然1年半没用了,但是我的脑子里,还是知道hbase是一个数据库,列式数据库(具体什么是列式,稍后给讲架构的时候会告诉大家),【特点】是只能根据rowkey【可以理解为特定的id】查询(查询速度很快)。适合【千万级】以上的数据存储,如果低于1000w,那你还是用mysql等关系型数据库吧。

大概知道了,hbase 是啥东西后,我们来了解一下 由世界巨头“谷歌”发布的bigtable论文构成的hbase,它能风靡全球(大数据圈),那他的内部构成是什么样的呢?想必你也想和我一起,一探究竟吧。

hbase的内部构成,和大家平常所用的软件一样。分为2部分。

第一部分:软件的构造(你可以理解为内部的程序是怎样合作才让hbase运作的起来的)

第二部分:  软件的数据结构设计(对于数据库软件来说,我们要使用,必须先了解他的存储结构)

HBASE软件的构成

先来放一张全网都能搜到的架构图。

 

你看着这图,看见了什么?用1分钟的时间看一下,看完告诉我,你看到了什么。别浪费我从网上cv过来的图啊。1分钟....后

你看完之后,脑海里是不是有,Hbase、Hadoop、HRegion、Hmaster、zookeeper、Client

从图中你肯定能看到,Hbase和Hadoop是有关联的。

你看客户端作为的是什么,是不是所有箭头的起点。那整个过程,咱们来试着跟箭头走一走。

客户端向HRegionServer指向了个箭头,说明客户端能向HRegion服务发送指令。

客户端也指向了谁?是不是zookeeper,那么同样客户端能操控zookeeper。

到了这里,如果你了解zookeeper(中间件),那聪明的你,应该能猜到zookeeper是用来操控hbase集群的。通过客户端去访问zookeeper,再依靠zookeeper操控整个hbase集群。

结论就是:通过客户端去让zookeeper操作整个hbase集群。

Hmaster,就是Hbase的主节点。如果你是用的是一台机器(单节点),那Hmaster不就是Hbase本身吗?你从图中看,Hmaster是不是有2个实线箭头和1个虚线箭头,实现箭头指向了【两个】HRegionServer。虚线箭头指向的是DFS-Client(代表的是HDFS的客户端,实际上会操作hdfs进行数据的读写),当然你写可以在配置文件中将原本指向hdfs的数据,指向本地硬盘。那样就不需要配置hdfs,但是就不能保证集群中数据的高可用了。

2个他代表的是多个节点,你如果还是一台机器,那就是指向1个HRegionServer。说了半天HRegionServer,那么HRegionServer到底是什么呢?

你先不要着急,可以先看看架构图,架构图中你看HregionServer里面有什么?花了30秒时间,看一下。

30秒后。。。

你发现没,1个HRegionServer中有多个HRegion,其实HRegionServer就是用来管理多个HRegion的服务。

那么HRegion又是什么,我们先来看看HRegion里有什么,你会发现有1个HLog、多个Store。

HRegion是用来存储实际数据的。HRegion里面包含了Store、Store又是什么,是存储列族的实际数据。而HLog也是存储数据的。

那么HLog存储的是什么呢,你看完接下来的流程就明白了。

首先来了一条叫做小王八爱吃草的数据,小王八是他的id,爱吃草是他的兴趣。由客户端(如果是集群,则向集群,发送信息,如果不是,则向Hmaster发送信息)

于是Hmaster收到了信息后,将小王八交由他的手下【某个HRegionServer】来处理。

HRegionServer拿到后,将他先存放到HLog里面(可以把HLog想象成一个堆放数据的仓库)。

等待HLog里面的东西差不多了,或者时间到了,再一次性打包带走,存储至Store中。

从HRegion到HLog的过程叫做预写(提高效率,保持稳定性)。Hlog的作用就是作为中继仓库,存储数据的。

其中Store中又有SotreFile和memStore。MemStore是他的元数据,StoreFile是具体的文件。

如果是基于HDFS的数据,会由HFile将数据发送给Hdfs的客户端,交由他们将数据存储至hdfs上。如果是本地,则直接将数据存储至本地中。

HBase数据结构设计

Hbase主要用来存储非结构化和半结构化的松散数据。我们来看看,他的结构是怎么设计的。

由于他只能根据rowkey获取数据,固也能称之为是一个KV数据库。

Column Family对于的info和area称之为列簇,一个列簇可以拥有多个column(列)。

比如name就是一个列,而张三、李四代表的列中的一个格子(cell)又称为数据。

而RowKey称为具体的id,也称为key。

图是从知乎copy来的,固缺少version。version是版本号,代表的是数据插入的时间(以时间戳表示),一个rowkey开源插入多个数据(以时间戳区分)。默认是返回最新的那条数据。

所以说,我们使用hbase的时候甚至不用修改数据,直接插入最新的数据,就相当于是修改。

下面这张图我觉得更好。

 

语法参考https://www.cnblogs.com/xjx767361314/p/10191055.html

如果要修改hbase的rowkey数据,可以使用phonex。使用update。

也可以自己写脚本,比如采用python的Happybase。

参考:https://zhuanlan.zhihu.com/p/54184168

           https://www.cnblogs.com/xjx767361314/p/10191055.html

           https://www.cnblogs.com/frankdeng/p/9310278.html

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值