一、什么情况下使用Hbase

例子:
这里Order By无时不刻的处理,我们要看到刚才的足迹,不能使用缓存技巧。
  • 根据时间戳来查询,显然很快,应为Hbase就是以时间戳来存的。
  • 将最近的数据放在内存中,显然从内存中快速查找数据更快速,应用于此场景显然更快速。类似于内存数据库。
  • 我们只需要往集群里增加节点,就能解决负荷上升的问题。
reverse key 反向设计ID,随机化,可以更分散的分布到各个节点。
通过hash函数映射出一个随机ID,把哈希值加到ID的后面,也起到随机化的效果。
下图就是这个思想进行查询操作。


二、Hbase介绍

1.Hbase简介



2.存储思想


世界上任何任何的一张二维表大概都可以写成三个列的形式,这个大表呢,就是bigtable,这三个列是什么呢?
第一列是行键,就是key值,对象的标识值,比如说学生对象中的学号就是他的key,通过学号就可以定位到具体的学生
第二列是属性,学生有哪些属性呢,姓名、专业等
第三列是value,就是他的值
这里呢一般的关系型数据库中,学生表呢会占一行就可以实现这样的数据库存储,而在bigtable中呢,我们有三行,第一行就是学号、姓名,张三,第二行就是学号、专业,计算机,第三行就是学号、年龄、20岁。

那这里我们不能像关系型数据库那样,有聚合操作,子查询,比如说我们在bigtable下做一个group by操作,基本上很难做,但是我们做key-value查询是很方便的,你输入键值还有属性,就是行键及属性就能返回他的值。连接查询也很方便,比如说,我们查询一个学生的数学课的成绩是多少?我们先查这个学生修啦什么课?得到一个课号,将此课号作为key,又在查下他这个key得到什么成绩,本来通过连接能做的现在转变成key-value来做。

3.Hbase的逻辑模型


我们可以看见这里的逻辑视图,我们现在想修改t3时间戳的列族对应的数据怎么办呢?
因为hdfs中文件系统中的文件的一部分是不能修改的,你可以把整个文件删掉,你就是不能修改,连追加append都比较困难,因此我们在Hbase中去修改一个行的内容就不现实,因此我们只能插入新的行和新的实践戳来反映这个修改,那删除也是这样的,我们不能删除整个文件的某个记录,我们只能插入一个新的行键代表一行,里面有个删除标记,来表示这个行键所代表行全部被删除掉啦。

这又有个问题啦,假如是插入的话,那修很老的时间戳,很占用内存空间,我们要把他们删除掉,超过保存锁定的预制,这里Hbase每隔一段时间会做一个重整的工作,会把小的数据文件合并成一个大的数据文件,Hbase会在整个生命周期里面都会做这个事情,这个抛弃是在重整里面做的,此时一些旧的行会把它扔掉,还有些时间戳太老的我们也可以在内存中把他扔掉,然后把剩下的合并在一块,然后再重新写入硬盘里面,形成一个新的一个更大的文件。

作为用户以上过程,说明Hbase中的行和记录是可以删除的和修改的,表面上操作的时候有这种感觉,其实背后不然。

3.1 行键



3.2列族


3.3时间戳


4.Hbase的物理模型



  • HMaster是Hbase的数据库的总控节点
  • HRegionServer在一台独立的计算机中就是物理节点,通常一个物理节点只会运行一个HRegionServer,他可以管理很多的HRegion(比如说一个表在行的方向上来分,这个表可能有10亿行,在分布式的思想里面呢,可以按照行的方向来分,分成10个区域,每个区域呢一共有1千万行,那每个区域我们称为一个Region)
  • HRegion中有HLog(灾难恢复啦,断电什么的),Store与StoreFile,每一个列族一个Store,之所以Hbase被称为面向列的数据库,    就是这样,因为他的列族上的元素,是在物理上存放于一个地方,那不同的列族在物理上就是分离的,这样做是有好处的。Store可以分为MemStore和StoreFile,即内存Store和硬盘Store,新的修改进来一般进入内存Store,当内存里面搜集的数据足够多啦,此时一些小的StoreFile可能就会合并成为一个大的StoreFile,在此期间合并的同时就会有一些已经过期的超出预期的被抛弃掉,然后把内存里的东西写进入硬盘中,成为一个StoreFile。一般来说Hbase的存储都是稀疏的,95%的都是稀疏的,比如一个行,只有在某个列族上存在着值,而在其他列族上不存在值。可能一个行被分散在好几个Store中,我们去查询时就要去好几个Store中去查。每个StoreFile对应一个HFile,其实这个HFile就是Hdfs里的文件,这个文件才Hdfs里面有可能是分布式的,分散存放在物理节点里面。

4.1Region与RegionServer


4.2-ROOT-表和.META.表


4.3MemStore与StoreFile


4.4图解






















四、Hbase的更多相关文章

  1. 四 HBase 客户端设置缓存优化查询。

    其实查询无非是一个 HBase 的 RPC 计算公式 .然后给API 提供值. RPCs = (Rows * Cols per Row) / Min(Cols per Row, Batch Size) ...

  2. HBase入门

    /×××××××××××××××××××××××××××××××××××××××××/ Author:xxx0624 HomePage:http://www.cnblogs.com/xxx0624/ ...

  3. hbase 性能调

    一. HBase的通用优化 1 高可用 在 HBase 中 Hmaster 负责监控 RegionServer 的生命周期,均衡 RegionServer 的负载,如果 Hmaster 挂掉了,那么整 ...

  4. HBase(十)HBase性能调优总结

    一. HBase的通用优化 1 高可用 在 HBase 中 Hmaster 负责监控 RegionServer 的生命周期,均衡 RegionServer 的负载,如果 Hmaster 挂掉了,那么整 ...

  5. HBase(六)HBase整合Hive,数据的备份与MR操作HBase

    一.数据的备份与恢复 1. 备份 停止 HBase 服务后,使用 distcp 命令运行 MapReduce 任务进行备份,将数据备份到另一个地方,可以是同一个集群,也可以是专用的备份集群. 即,把数 ...

  6. HBase(一)HBase入门简介

    一 HBase 的起源 HBase 的原型是 Google 的 BigTable 论文,受到了该论文思想的启发,目前作为 Hadoop 的子项目来开发维护,用于支持结构化的数据存储. Apache H ...

  7. HBase学习(一):认识HBase

    一.大数据发展背景 现今是数据飞速膨胀的大数据时代,大数据强调3V特征,即Volume(量级).Varity(种类)和Velocity(速度). ·Volume(量级):TB到ZB. ·Varity( ...

  8. 分布式结构化存储系统-HBase基本架构

    分布式结构化存储系统-HBase基本架构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在大数据领域中,除了直接以文件形式保存数据外,还有大量结构化和半结构化的数据,这类数据通常需 ...

  9. 大数据笔记(十三)——常见的NoSQL数据库之HBase数据库(A)

    一.HBase的表结构和体系结构 1.HBase的表结构 把所有的数据存到一张表中.通过牺牲表空间,换取良好的性能. HBase的列以列族的形式存在.每一个列族包括若干列 2.HBase的体系结构 主 ...

  10. hbase-0.92.1集群部署

    环境 主机名 IP地址 角色 安装目录 sht-sgmhadoopnn-01 172.16.101.55 NameNode.SecondaryNameNode. JobTracker.HMaster ...

随机推荐

  1. idea 端口占用

    netstat -anp | grep 8080 lsof -i:8080 查看8080端口被什么进程占用 kill (-s 9) 12903 -s 9 强制 尽快 12903 上面查出的 PID 其 ...

  2. ACE_Time_Value

    头文件“Time_Value.h” 为了兼容各个平台的时间特性,ACE Reactor框架提供了ACE_Time_Value类.ACE_Time_Value的关键方法见下图3.2和表3.2.3.3: ...

  3. java 线程的中断

    Example12_6.java public class Example12_6 { public static void main(String args[]) { ClassRoom room6 ...

  4. 关于python的可变和不可变对象

    在python中所有都是对象,在python中只有list和dict是可变对象,其他都是不可变对象. 具体参照:http://www.cnblogs.com/lovemo1314/archive/20 ...

  5. 教你用CSS代码写出的各种形状图形

    做网页设计时经常要用到各种形状的图形,对于规则的图形很简单,但是对于不规则的图形,一般我们都是用图片,今天就在这里教大家怎样用css代码写出各种规则不同的图形 1.正方形 #square {width ...

  6. Struts2 语法--action

    xml的注释: <!--叨叨叨叨--> web.xml注释格式": <?xml version="1.0" encoding="UTF-8&q ...

  7. 从零深入 tomcat

    1.tomcat的安装使用 tomcat是实现了J2EE标准的最简单轻巧的WEB服务器,所以使用tomcat必须安装JDK咯! ① 安装JDK并设置环境变量: ②设置tomcat的环境变量: 这两小步 ...

  8. html-关于IE浏览器兼容性的问题,还有浏览器一直加载的问题。

    今天9月11日,所谓兼容性问题就是,标签 写的不规范导致的,因为高版本的IE会自动补上没写的标签 document.write('<object classid="clsid:d27c ...

  9. android脚步---跟随手指动的小球

    这次的学习主要是在包里面除自动生成的mainactivity.java之外,再新建一个class, DrawView,在mainactivity里面调用DrawView. 在DrawView里面主要是 ...

  10. linux 备份系统

    切换到root用户 切换到根目录 tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz -- ...