简介

数据模型 相关数据库 典型应用 优势 劣势
key-value Redis 缓存 快速查询 存储数据缺乏结构化
列族 Cassandra,Hbase 分布式的文件系统,大规模的数据存储 易于分布式扩展 功能受限
document Mongo,CouchDB 易用 可扩展性差
Neo4J 社交网络 利用图结构相关算法 不易扩展

从NoSQL分类来说,Hbase和Cassandra是一类数据库,都是列族数据类型。

关于hbae和cassandra的对比可以看下为什么国内流行hbase,国外反而多用cassandra?,这里不再赘述。

名词介绍

表,行这些都是同关系型数据库一致

列族

列族顾名思义就是列的组合,wide-column这种数据类型都是根据BigTable模型实现的,它是一个稀疏的、多维结构映射。实际存储,就是列族的数据存储在一起,而不是像关系型数据库那样,一行存在一起。所以列族是需要提前定义的。

key-value,wide-column,json几种数据类型对比NoSQL概述-从Mongo和Cassandra谈谈NoSQL

region

region就是range partition,一组row key的范围组合。region是自动分裂的。一般大小是1GB-2GB,超过配置的大小,就进行分裂。

部署架构

Hbase的部署架构比较复杂。对于一个分布式数据库,集群架构一般有三个角色:路由节点、配置信息节点、分片数据节点。
有些数据库将这些功能都集成到同一个节点,这样的话扩容比较简单,单点比较少。如果拆分成不同节点话,部署起来就比较麻烦,扩容的话也比较麻烦,每个部分都有可能需要去扩容,好处是职责隔离,不会因为耦合造成整个节点的故障。以下是HBase的集群部署架构

Hbase Master

Hbase是AP型分布式数据库,Master-Slave模式。Master负责管理所有的RegsionServer,也就是上面所说的配置信息节点这个角色。
记录了数据块HRegions属于哪个Region Server。当RegionServer增加或者下线时,需要进行HRegion的重新分配。一般为了可用性,Master节点个数要大于1,避免单点故障。

Region Server
Region Server负责数据的读写,数据存放在内存中,持续化需要和HDFS文件系统进行I/O交互。HBase是列族数据库,列的数据是存放在一起的,不同的行按照row key分布,存储在不同的Region Server中。

一般来说,扩容主要是扩容Region Server,因为主要是Region Server负责数据的读写。

Zookeeper
管理HMaster的信息

HDFS DataNode

数据的存储与备份。将数据存储在HDFS的一个显而易见的好处时,当集群Region Server发生变化时,增加或者减少时,不需要在节点间进行数据的复制,这大大减少了节点的上下线时间,和I/O消耗。

分片

Hbase的分片策略很简单,就是根据rowkey来分片,每个Region Server负责一组rowkey.

数据存储与维护

数据存储和Cassandra类似,先写log和内存,内存memstore也是LSM树,然后在flush到磁盘中,HFile,存储在HDFS中。

当HFile超过一定大小后,进行数据的分离。

读写分析

读操作

读操作一般在Hbase里面叫3跳,涉及到Hbase集群的3个角色。

Meta table
HRegion的metadata信息都存储在.META表中,Region增加减少,这个信息都会更改。

Root table
Root table是用来记录META表信息的,存储在ZK中。

Hbase的读一般需要三跳

非常繁琐,所以路由信息一般cache到client,减少client与Hbase各个节点之间的交互。

写操作

没什么复杂的,和cassandra类似,不再赘述

总结

Hbase的集群部署架构模式和Mongo类似,多角色方式。所以读取数据的3跳也比较类似。单节点写入的话和Cassandra类似。

参考

https://www.iteblog.com/archives/2516.html

Hbase初识的更多相关文章

  1. 初识HBase

    现如今,分布式架构大行其道,实际项目中使用HBase也是比比皆是.虽说自己在分布式方面接触甚少,但作为程序猿还是需要不断的给自己充电的.网上搜索了一些教程,还是觉得<HBase权威指南>不 ...

  2. hbase系列之:初识hbase

    一.概述 在hadoop生态圈里,hbase可谓是鼎鼎大名.江湖传言,hbase可以实现数十亿行X数百万列的实时查询,可横向扩展存储空间.如果传言为真,那得好好了解了解hbase.本文从概念上介绍hb ...

  3. Hbase入门(一)——初识Hbase

    本文将介绍大数据的知识和Hbase的基本概念,作为大数据体系中重要的一员,Hbase弥补了Hadoop只能离线批处理的不足,支持存储小文件,随机检索.而这种特性使得Hbase对于实时计算体系的事件存储 ...

  4. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

  5. 初识Hadoop入门介绍

    初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...

  6. hadoop初识

    搞什么东西之前,第一步是要知道What(是什么),然后是Why(为什么),最后才是How(怎么做).但很多开发的朋友在做了多年项目以后,都习惯是先How,然后What,最后才是Why,这样只会让自己变 ...

  7. 大数据测试之初识Hadoop

    大数据测试之初识Hadoop POPTEST老李认为测试开发工程师是面向测试的开发,也就是说,写代码就是为完成测试任务服务的,写自动化测试(性能自动化,功能自动化,安全自动化,接口自动化等等)的cas ...

  8. 初识zookeeper(1)之zookeeper的安装及配置

    初识zookeeper(一)之zookeeper的安装及配置 1.简要介绍 zookeeper是一个分布式的应用程序协调服务,是Hadoop和Hbase的重要组件,是一个树型的目录服务,支持变更推送. ...

  9. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

随机推荐

  1. flask插件之flask_session会话机制

    flask-session是flask框架的session组件,由于原来flask内置session使用签名cookie保存,该组件则将支持session保存到多个地方,如: redis:保存数据的一 ...

  2. [考试反思]0805NOIP模拟测试13:窒息

    呼啊...苟住了.rank #3 第二次分机房的收官之战.发挥比较稳定 然而差点就不稳定了!!! 过了一遍题目,难度大约是升序,但是一道都不会做!!! 本来感觉T1是一道数学题,以为45分钟以内可以切 ...

  3. group 状压dp

    应某些人要求,我把标签删掉了 这是一道好题. 一看$c<=16$果断状压,但是怎么压? 一个很显然的思路是,枚举上下两层的状态,每一层的状态极限有$C(c,c/2)$,c=16的时候有13000 ...

  4. [springboot 开发单体web shop] 5. 用户登录及首页展示

    用户登录及前端展示 用户登录 在之前的文章中我们实现了用户注册和验证功能,接下来我们继续实现它的登录,以及登录成功之后要在页面上显示的信息. 接下来,我们来编写代码. 实现service 在com.l ...

  5. js+css3实现多行图片点击(自动)左右无缝轮播特效

    /*效果图*/ HTML:    <div class="scroll">       <div class="picbox">     ...

  6. maven配置nexus私有仓库

    <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...

  7. K8S入门系列之集群yum安装(一)

    kubernetes master 节点包含的组件: 1.kube-apiserver :集群核心,集群API接口.集群各个组件通信的中枢:集群安全控制: 2.kube-scheduler: 集群调度 ...

  8. 监听器以及在监听类里面获得bean的方法

    1实现HttpSessionListener和ServletContextListener,2个接口 2然后在contextInitialized初始化方法里面: ServletContext app ...

  9. Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通,解决name or service not known

     NAT网络通用配置 测试连接 主机到虚拟机 虚拟机到虚拟机 ,虚拟机到外网 CentOS,提示name or service not known 设置DNS服务器 vi /etc/resolv.co ...

  10. Oracle instant client免安装Oracle客户端配置

    不想安装几个G的完整版client,可以直接通过安装包安装的时候选择instant client,如果没有安装包,也可以直接去官网下载一个即时客户端,64位的windows包大小只有78MB左右 传送 ...