Hbase概述

hbase是一个构建在HDFS上的分布式列存储系统。HBase是Apache Hadoop生态系统中的重要 一员,主要用于海量结构化数据存储。从逻辑上讲,HBase将数据按照表、行和列进行存储。

如图所示,Hbase构建在HDFS之上,hadoop之下。其内部管理的文件全部存储在HDFS中。与HDFS相比两者都具有良好的容错性和扩展性,都可以 扩展到成百上千个节点。但HDFS适合批处理场景,不支持数据随机查找,不适合增量数据处理且不支持数据更新。

Hbase是列存储的非关系数据库。传统数据库MySQL等,数据是按行存储的。其没有索引的查询将消耗大量I/O 并且建立索引和物化视图需要花费大量时间和资源。因此,为了满足面向查询的需求,数据库必须被大量膨胀才能满 足性能要求。

Hbase数据是按列存储-每一列单独存放。列存储的优点是数据即是索引。访问查询涉及的列-大量降低系统I/O 。并且每一列由一个线索来处理,可以实现查询的并发处理。基于Hbase数据类型一致性,可以实现数据库的高效压缩。

HBase数据模型

HBase是基于Google BigTable模型开发的, 典型的key/value系统。一个Row key对应很多Column Family,Column Family中有很多Column。其中,保存了不同时间戳的数据。

如图所示,Rowkey cutting对应列簇info和roles。其中,info中有key-value对hight-9ft,state-CA。更清晰的结构如下图所:

Hbase的所有操作均是基于rowkey的。支持CRUD(Create、Read、Update和Delete)和 Scan操作。 包括单行操作Put 、Get、Scan。多行操作包括Scan和MultiPut。但没有内置join操作,可使用MapReduce解决。

HBase物理模型

Hbase的Table中的所有行都按照row key的字典序排列。Table 在行的方向上分割为多个Region。、Region按大小分割的,每个表开始只有一个region,随 着数据增多,region不断增大,当增大到一个阀值的时候, region就会等分会两个新的region,之后会有越来越多的 region。

Region是HBase中分布式存储和负载均衡的最小单元。 不同Region分布到不同RegionServer上。

Region虽然是分布式存储的最小单元,但并不是存储 的最小单元。Region由一个或者多个Store组成,每个store保存一个 columns family。每个Strore又由一个memStore和0至多个StoreFile组成。memStore存储在内存中,StoreFile存储在HDFS上。

HBase基本架构

HBase构建在HDFS之上,其组件包括 Client、zookeeper、HDFS、Hmaster以及HRegionServer。Client包含访问HBase的接口,并维护cache来加快对HBase的访问。Zookeeper用来保证任何时候,集群中只有一个master,存贮所有Region的寻址入口以及实时监控Region server的上线和下线信息。并实时通知给Master存储HBase的schema和table元数据。HMaster负责为Region server分配region和Region server的负载均衡。如果发现失效的Region server并重新分配其上的region。同时,管理用户对table的增删改查操作。Region Server 负责维护region,处理对这些region的IO请求并且切分在运行过程中变得过大的region。

HBase 依赖ZooKeeper,默认情况下,HBase 管理ZooKeeper 实例。比如, 启动或者停止ZooKeeper。Master与RegionServers 启动时会向ZooKeeper注册。因此,Zookeeper的引入使得 Master不再是单点故障。

Client每次写数据库之前,都会首先血Hlog日志。记录写操作。如果不做日志记录,一旦发生故障,操作将不可恢复。HMaster一旦故障,Zookeeper将重新选择一个新的Master 。无Master过程中,数据读取仍照常进行。但是,无master过程中,region切分、负载均衡等无法进行。RegionServer出现故障的处理原理是定时向Zookeeper汇报心跳,如果一旦时 间内未出现心跳HMaster将该RegionServer上的Region重新分配到其他RegionServer上。失效服务器上“预写”日志由主服务器进行分割并派送给新的 RegionServer 。Zookeeper是一个可靠地服务,一般配置3或5个Zookeeper实例。

寻找RegionServer定位的顺序是ZooKeeper –ROOT-(单Region) -.META. -用户表 。如上图所示。-ROOT- 表包含.META.表所在的region列表,该表只会有一 个Region。 Zookeeper中记录了-ROOT-表的location。 .META. 表包含所有的用户空间region列表,以及 RegionServer的服务器地址。

HBase应用举例

Hbase适合需对数据进行随机读操作或者随机写操作、大数据上高并发操作,比如每秒对PB级数据进行上千次操作以及读写访问均是非常简单的操作。

淘宝指数是Hbase在淘宝的一个典型应用。交易历史纪录查询很适合用Hbase作为底层数据库。

Hbase的应用场景、原理及架构分析(转:https://blog.csdn.net/xiangxizhishi/article/details/75388971)相关推荐

  1. 为什么领域模型对于架构师如此重要? https://blog.csdn.net/qq_40741855/article/details/84835212...

    为什么领域模型对于架构师如此重要? https://blog.csdn.net/qq_40741855/article/details/84835212 2018年12月05日 14:30:19 绝圣 ...

  2. 从linux启动到rootfs的挂载分析 https://blog.csdn.net/kevin_hcy/article/details/17663341

    从linux启动到rootfs的挂载分析   2012-05-02 15:50:49|  分类:默认分类 |  标签:|字号大中小 订阅 简单的来说,根文件系统包括虚拟根文件系统和真实根文件系统.在K ...

  3. (转)永磁同步电机工作原理(https://blog.csdn.net/jianwen01/article/details/5931881)

    一.PMSM的基本的构造 PMSM(permanent magnet synchronous motor)实际工作是一种交流电机,其定子运行是三项的相差 的交流电,而转子则是永磁体.但是这种电机最大的 ...

  4. Mysql分析-profile详解(转http://blog.csdn.net/ty_hf/article/details/54895026)

    一.前言 当我们要对某一条sql的性能进行分析时,可以使用它. Profiling是从 mysql5.0.3版本以后才开放的. 启动profile之后,所有 查询包括错误的语句都会记录在内. 关闭会话 ...

  5. amr文件格式分析【转http://blog.csdn.net/dinggo/article/details/1966444】

    目录 1.    概述 2.    AMR编码方式 3.    AMR文件结构示范图 4.    AMR帧头格式分析 5.    异常帧分析 6.    AMR帧读取算法 7.    参考资料 1.  ...

  6. 根文件系统的构建与分析(一)之流程分析 http://blog.csdn.net/jianchi88/article/details/7682901

    分类: ARM-Linux移植 根文件系统构建与分析2012-06-24 13:13 2586人阅读 评论(0) 收藏 举报 actioncommandloginshellfilesystemstok ...

  7. epoll详细工作原理 http://blog.csdn.net/hdutigerkin/article/details/7517390

    epoll详细工作原理 2012-04-27 14:35 4007人阅读 评论(1) 收藏 举报 工作socketcachelistnullfile 开发高性能网络程序时,windows开发者们言必称 ...

  8. 架构之路之spring+springmvc+maven+mongodb的搭建(转载:http://blog.csdn.net/tomcat_2014/article/details/55100130)

    1.前言 最近项目开发使用到了spring+springmvc+maven+MongoDB,项目中的框架是用springboot进项开发的,对于我们中级开发人员来说,有利有弊,好处呢是springbo ...

  9. Android-FrameWork原理与架构分析

    Android-FrameWork原理与架构分析 Android架构主要分为分为四部分,从上往下依次为 APPLICATION(应用程序), APPLICATION FRAMEWORK(应用框架层), ...

最新文章

  1. 【深度学习】深入理解LSTM
  2. 【若依(ruoyi)】layui upload
  3. Influxdb修改数据保留策略
  4. python列表、字典、元组的用法及区别_python列表,字典,元组简单用法示例
  5. VC用ADO访问数据库全攻略  作者 相生昌
  6. 颈椎病分型及对症治疗
  7. linux 使用 /proc 文件系统
  8. Python3.8.0中string与byte相互转换
  9. STM32基于固件库学习笔记(7)I2C通讯协议时序(GPIO模拟协议时序完成MCU对24c02读写数据)
  10. 使用Ghost还原系统为什么容易出问题?
  11. EMC VMAX控制台更换指南
  12. beats耳机红白交替闪烁三次_beats耳机红白灯交替闪怎么解决
  13. ble 读写特征值特征值_BLE添加特征值
  14. matlab使用出现矩阵为奇异值、接近奇异值或缩放错误。结果可能不准确。RCOND = NaN。
  15. Android 之 Project Butter 详细介绍
  16. opencv之图片简单压缩
  17. ❤️Android 性能优化之启动优化❤️
  18. oracle重启root,案例:Oracle报错ORA-15025 ORA-27041 root用户操作rac导致节点宕机
  19. 郑清 - 日常作息表(2020-02)
  20. 用python获取本地的ip地址

热门文章

  1. bat贪吃蛇游戏代码_100行python代码,轻松完成贪吃蛇小游戏
  2. JavaScript实现breadth First Search广度优先搜索算法(附完整源码))
  3. wxWidgets:wxListEvent类用法
  4. boost::mp11::mp_eval_if_q相关用法的测试程序
  5. boost::iostreams::newline用法的测试程序
  6. boost::hana::remove_if用法的测试程序
  7. boost::detail::reference_content的用法测试程序
  8. GDCM:尝试修复损坏的J2K / DICOM的测试程序
  9. GDCM:检测SIEMENS JPEG无损压缩图像的测试程序
  10. boost:stl概念检查的测试程序