一、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. Python 使用 PyQt5 开发的关机小工具

    前两天简单认识了一下PyQt5,通过练习开发了一款在Window下自定义关机的小工具,代码如下 import os,sys,time from PyQt5 import QtCore,QtWidget ...

  2. 【mysql】查询最新的10条记录

    实现查询最新10条数据方法: select * from 表名 order by id(主键) desc limit 10 参考文档: MySQL查询后10条数据并顺序输出

  3. 设计模式(4): 给组件实现单独的store

    概述 最近最近做项目的时候总会思考一些大的应用设计模式相关的问题,我把自己的思考记录下来,供以后开发时参考,相信对其他人也有用. 组件自身的store 我们在开发组件的时候,时常都有这种需求,就是希望 ...

  4. 系统分析与设计HW8

    描述软件架构与框架之间的区别与联系 软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计.架构模式(style)是特定领域常见问题的解决方案. 框架是特定语言和技术的架构应用 ...

  5. Python编程之列表操作实例详解【创建、使用、更新、删除】

    Python编程之列表操作实例详解[创建.使用.更新.删除] 这篇文章主要介绍了Python编程之列表操作,结合实例形式分析了Python列表的创建.使用.更新.删除等实现方法与相关操作技巧,需要的朋 ...

  6. 6.824 Lab 3: Fault-tolerant Key/Value Service 3B

    Part B: Key/value service with log compaction Do a git pull to get the latest lab software. As thing ...

  7. element_to_be_clickable(locator)

    是等待页面元素可见的时候操作,会设置一定范围的时间,如果在时间范围内,元素可见,就 执行操作,元素不可见,就会引发TimeoutException的异常.如下是element_to_be_clicka ...

  8. 【Unity Shader】---数据类型和关键字

    一.基本数据类型:Cg支持7种基本的数据类型 1.float,32位浮点数据,一个符号位.浮点数据类型被所有的图形接口支持: 2.half,16位浮点数据: 3.int,32位整形数据 4,fixed ...

  9. 9.shodan搜索引擎----Metasploit Web GUI----取证工具箱----sAINT间谍软件

    shodan搜索引擎 物联网搜索引擎 访问路由器,服务器,网络摄像头,安装CLI banner抓取,端口扫描 www.shodan.io 需要注册账户,支持google账户 搜索 webcams 网络 ...

  10. js 如何定义函数

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...