一、HBase简介

1.1.Hadoop生态系统

1.2.非关系型数据库知识面扩展 

  • Cassandra hbase mongodb
  • Couchdb,文件存储数据库
  • Neo4j非关系型图数据库

1.3.Hbase初始

  • Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库
  • 利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务
  • 主要用来存储非结构化和半结构化的松散数据(列存 NoSQL 数据库)

二、HBase数据模型

图2.1 逻辑形式图

一张类似这样的表,确定一个value必须有RowKey,Time Stamp,column Family,column key

2.1.1.ROW KEY

– 决定一行数据
– 按照字典顺序排序的。
– Row key只能存储64k的字节数据

2.1.2.Column Family列族 & qualifier列

– HBase表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一
部分预先给出。如 create ‘test’, ‘course’;
– 列名以列族作为前缀,每个“列族”都可以有多个列成员(column);如course:math,
course:english, 新的列族成员(列)可以随后按需、动态加入;
– 权限控制、存储以及调优都是在列族层面进行的;
– HBase把同一列族里面的数据存储在同一目录下,由几个文件保存。

2.1.3.Timestamp时间戳

– 在HBase每个cell存储单元对同一份数据有多个版本,根据唯一
的时间戳来区分每个版本之间的差异,不同版本的数据按照时
间倒序排序,最新的数据版本排在最前面。
– 时间戳的类型是 64位整型。
– 时间戳可以由HBase(在数据写入时自动)赋值,此时时间戳是精
确到毫秒的当前系统时间。
– 时间戳也可以由客户显式赋值,如果应用程序要避免数据版本
冲突,就必须自己生成具有唯一性的时间戳。
 

2.1.4.Cell单元格

– 由行和列的坐标交叉决定;
– 单元格是有版本的;
– 单元格的内容是未解析的字节数组;
▪ 由{row key, column( =<family> +<qualifier>), version} 唯一确定的
单元。
▪ cell中的数据是没有类型的,全部是字节数组形式存贮。
 

图 2-2 Hbase架构图

2.2.1.Client

▪ 包含访问HBase的接口并维护cache来加快对HBase的访问

2.2.2.Zookeeper

▪ 保证任何时候,集群中只有一个活跃master
▪ 存贮所有Region的寻址入口。
▪ 实时监控Region server的上线和下线信息。并实时通知Master
▪ 存储HBase的schema和table元数据

2.2.3.Master

– 为Region server分配region
– 负责Region server的负载均衡
– 发现失效的Region server并重新分配其上的region
– 管理用户对table的增删改操作

2.2.4. RegionServer

– Region server维护region,处理对这些region的IO请求
– Region server负责切分在运行过程中变得过大的region

2.2.5.Memstore 与 storefile

– 一个region由多个store组成,一个store对应一个CF(列族)
– store包括位于内存中的memstore和位于磁盘的storefile写操作先写入memstore,
当memstore中的数据达到某个阈值,hregionserver会启动flashcache进程写入
storefile,每次写入形成单独的一个storefile
– 当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major
compaction),在合并过程中会进行版本合并和删除工作(majar),形成更大
的storefile
– 当一个region所有storefile的大小和数量超过一定阈值后,会把当前的region分割
为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡
– 客户端检索数据,先在memstore找,找不到去blockcache,找不到再找storefile
 
▪ HRegion是HBase中分布式存储和负载均衡的最小单元。最小单元就表示不同的HRegion
可以分布在不同的 HRegion server上。
▪ HRegion由一个或者多个Store组成,每个store保存一个columns family。
▪ 每个Strore又由一个memStore和0至多个StoreFile组成。如图:StoreFile以HFile格式保存
在HDFS上。
 
                                                             图 2-3 Region & Store 关系图
 

图 2-4 关系图(二)

大数据数据库HBase(一)——架构原理的更多相关文章

  1. 大数据数据库HBase(二)——搭建与JavaAPI

    一.搭建 1.选择一台没有ZK的机器(HBase自带ZK,可能会导致冲突) 2.选择版本2.0.5的HBase 3.解压HBase2.0.5 4.配置HBase的HBASE_HOME和path 5.修 ...

  2. Hbase的架构原理、核心概念

    Hbase的架构原理.核心概念 1.Hbase的表.行.列.列族 2.核心组件: Table和region Table在行的方向上分割为多个HRegion, 一个region由[startkey,en ...

  3. 大数据时代的IT架构设计

    大数据时代的IT架构设计(来自互联网.银行等领域的一线架构师先进经验分享) IT架构设计研究组 编著   ISBN 978-7-121-22605-2 2014年4月出版 定价:49.00元 208页 ...

  4. 读&lt;大数据日知录:架构与算法&gt;有感

    前一段时间, 一个老师建议我能够学学 '大数据' 和 '机器学习', 他说这必定是今后的热点, 学会了, 你就是香饽饽.在此之前, 我对大数据, 机器学习并没有非常深的认识, 总觉得它们是那么的缥缈, ...

  5. 大数据系列之数据仓库Hive原理

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  6. 新书发布《大数据时代的IT架构设计》

    <大数据时代的IT架构设计>以大数据时代为背景,邀请著名企业中的一线架构师,结合工作中的实际案例展开与架构相关的讨论.<大数据时代的IT架构设计>作者来自互联网.教育.传统行业 ...

  7. 大数据之HBase

    大数据之HBase数据插入优化之多线程并行插入实测案例 一.引言: 上篇文章提起关于HBase插入性能优化设计到的五个参数,从参数配置的角度给大家提供了一个性能测试环境的实验代码.根据网友的反馈,基于 ...

  8. 大数据开发--Hbase协处理器案例

    大数据开发--Hbase协处理器案例 1. 需求描述 在社交网站,社交APP上会存储有大量的用户数据以及用户之间的关系数据,比如A用户的好友列表会展示出他所有的好友,现有一张Hbase表,存储就是当前 ...

  9. 大数据学习——Hbase

    1. Hbase基础 1.1 hbase数据库介绍 1.简介 hbase是bigtable的开源java版本.是建立在hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写nosql的数据库系统 ...

随机推荐

  1. maven使用常见问题

    1.我写的是src/main/java/config/mybatis-cofig.xml 但总是报错 Could not find resource src/main/java/config/myba ...

  2. php数组合并用加号(+)和用array_merge()的区别

    结论:用加号合并数组:既考虑数字索引的键值对,也考虑字符串索引的键值对,用前边数组的值覆盖后边的键名相同的值; 用array_merge()合并数组:只考虑字符串索引的键值对,用后边数组的值覆盖掉前面 ...

  3. install_github无法安装 Rwebdriver包的解决方法

    1.通过install_githtb安装Rwebdriver包的错误如下: 提示不能打开URL,但是将URL地址输入浏览器地址栏,则可以下载包到本地 2.在网上搜索,发现可以通过本地文件来安装(ins ...

  4. CentOS7--删除virbr0

    https://blog.csdn.net/aienjoy/article/details/78994128

  5. NDK下编译JNI

    NDK环境下编译JNI 下载demo.tar.gz然后解压 弄个套路 1.编辑build.sh设置好NDK目录 2.把cpp文件放到code下面 运行sh build.sh即可

  6. leetcode 12题 数字转罗马数字

    leetcode 12题 数字转罗马数字 答案一:我的代码 代码本地运行完全正确,在线运行出错 class Solution { public: string intToRoman(int num) ...

  7. python3 导入模块

    python3导入模块和python2  有些不同   需要指定相对目录 如,在Project下有一个nlp目录里面有一个ltp模块,则 from n1.ltp import Clawer

  8. Selenium IDE环境部署

    摘自https://blog.csdn.net/ywyxb/article/details/59103683 Selenium IDE环境部署 - Firefox浏览器 Firefox-ESR版本下载 ...

  9. C++/C#结构体转化-二维数组

    String To bytes typedef struct VidyoClientInEventGroupChat_ { /*! Message (contents) to be sent to a ...

  10. http层负载均衡之 haproxy实践篇

    方案 上篇文章讲到了负载均衡的相关理论知识,这篇文章我打算讲讲实践方法以及实践中遇到的问题 方案:haproxy http层负载均衡 安装一个haproxy服务,两个web服务 haproxy:192 ...