一、什么情况下使用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. ActiveX控件在IE中不响应Backspace消息

    1.操作输入法需要导入: #include <imm.h> #pragma comment(lib, "imm32") 2.定义变量: //键盘钩子句柄 HHOOK g ...

  2. 借助XShell,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器。

    rz 是将window文件传到linux服务器上,到执行rz命令的目录 sz 可以将linux文件发送到windows上,可以选择目录. https://www.google.com/ncr 登录一下 ...

  3. C++文件编程(文件流操作)

    给出了比较常见的文件操作,包括二进制文件操作.代码如下: #include<iostream> #include<cstdio> #include<cstring> ...

  4. HDU 3861 The King’s Problem(tarjan连通图与二分图最小路径覆盖)

    题意:给我们一个图,问我们最少能把这个图分成几部分,使得每部分内的任意两点都能至少保证单向连通. 思路:使用tarjan算法求强连通分量然后进行缩点,形成一个新图,易知新图中的每个点内部的内部点都能保 ...

  5. hashmap源码

    Java里各种基础容器的实现都是链表外加引用的形式.So,hashmap也不例外. 那小考虑下:hashmap是怎么产生的呢? 常用的两种数据结构数组和链表各有优劣,数组寻址容易,插入和删除困难:而链 ...

  6. PHP递归算法的一个实例 帮助理解

    递归函数为自调用函数,在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行,可能这样给大家讲 ...

  7. Linux运维常用的命令详解

    1. 查看系统内核版本 [root@funsion geekxa]# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m 显示了系 ...

  8. getWriter() has already been called for this response 的解决办法

    getWriter() has already been called for this response response已经被其他对象调用了,导致无法继续使用如下 类似的方法 PrintWrite ...

  9. Android蓝牙传感应用(转)

    源:http://www.cnblogs.com/xiaochao1234/p/3753538.html Android手机一般以客户端的角色主动连接SPP协议设备(接上蓝牙模块的数字传感器),连接流 ...

  10. call_compile.sql

    set echo off prompt prompt ========================================================================= ...