一、什么情况下使用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. PHP商品倒计时 php实现当前用户在线人数

    //PHP商品倒计时 date_default_timezone_set("Asia/shanghai");//地区 //配置每天的活动时间段 $starttimestr = &q ...

  2. nagios安装全过程

    Nagios是一个用来监控主机.服务和网络的开放源码软件,可以在发生故障时发送报警短信和邮件,只要Nagios监控的对象发生故障,系统就会自动发送短信到手机上.所以应用十分广泛. Nagios is  ...

  3. [转]Linux挂载点介绍及桌面服务器分区方案

    原链接:http://www.metsky.com/archives/255.html 本文介绍Linux常用分区挂载点常识以及桌面.服务器分区挂载点的推荐配置,当然这个配置是天缘自己写的,分区大小这 ...

  4. CodeForces#378--A, B , D--暴力出奇迹....

    A题 A. Grasshopper And the String time limit per test 1 second memory limit per test 256 megabytes in ...

  5. C1 FlexGrid控件 Editor 冲突问题

    当给C1FlexGrid控件加入 Checkbox后,添加新行时对新行的Editor 赋新控件时,会冲突如下图:       下面我们借助BeforeRowColChange 事件来解决这个问题: 我 ...

  6. L5,no wrong numbers

    expressions: up to now,到现在为止 a great many,数量很大 in a way,在某种意义上说   words: burn,vt燃烧,vi烧毁,n灼烧 obtain,v ...

  7. discuz!迁移指南

    转自:http://jingyan.baidu.com/article/f7ff0bfc77114b2e26bb1390.html 曾经在本地搭建过一个discuz!论坛,现在买了域名和服务器,那么怎 ...

  8. 属性动画ValueAnimator用法

    用法举例: 1. ValueAnimator animator = ValueAnimator.ofInt(0,100);//定义animator 2. animator.addUpdateListe ...

  9. JSP内置对象--pageContext对象(非常重要!!!)

    pageContext对象是javax.servlet.jsp.PageContext类的实例,只要表示的是一个jsp页面的上下文,而且功能强大,几乎可以操作各种内置对象. >forward(S ...

  10. java集合框架map

    Map<K,V> K key V value Map集合:该集合存储键值对.一对一对往里存,而且要保证键的唯一性. 1,添加. 2,删除. 3,判断. 4,获取. Map |--Hasht ...