一、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. sock( ) bind( ) connect( )

    Linux下的socket()函数 调用头文件<sys/socket.h>中的socket函数 int socket(int af, int type, int protocol); 1) ...

  2. tensorflow基本操作(1)

    import tensorflow as tf import numpy as np 点乘,支持broadcasting 乘号* 和 multiply等价 mul已经废弃不用了 matmul 是矩阵相 ...

  3. 安装telnet服务

    一.安装telnet1.检测telnet-server的rpm包是否安装 [root@localhost ~]# rpm -qa telnet-server 若无输入内容,则表示没有安装.出于安全考虑 ...

  4. 一、Python环境的搭建

    1.python官方下载地址:https://www.python.org/:python现在有两个版本:python2.7.x和python3.x 2.安装:一路下一步,默认安装 3.配置环境变量: ...

  5. Lombok 注解简介

    Lombok @AllArgsConstructor /** * 生成一个包含所有属性的构造函数 */ @Target(ElementType.TYPE) @Retention(RetentionPo ...

  6. Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox、TComboEdit

    Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox.TComboEdit TListBox 有两个兄弟 TComboListBox.TComboEditL ...

  7. 前后端分离&接口API设计学习报告

    接口API设计学习报告 15331023 陈康怡 什么是API? API即Application Programming Interface.API是一种通道,负责一个程序与另一个程序的沟通.而对于w ...

  8. numpy添加新的维度

    原文链接:https://blog.csdn.net/xtingjie/article/details/72510834 numpy中包含的newaxis可以给原数组增加一个维度 np.newaxis ...

  9. linux下 sleep() 与 usleep()

    usleep() 将进程挂起一段时间, 单位是微秒(百万分之一秒): 头文件: unistd.h 语法: void usleep(int micro_seconds); 返回值: 无 内容说明:本函数 ...

  10. 【Qt开发】Linux下Qt开发环境的安装与集成

    近期工作需要在Linux下用Qt进行C++开发,所以就在linux下尝试装QT开发环境.本人用的linux是CentOS 6.5.现在对安装过程做出总结.有两种安装方式,下面分别详述: 1 图形化安装 ...