hbase介绍

一,hbase介绍

1,Welcome to Apache HBase™Apache HBase™ is the Hadoop database, a distributed, scalable, big data store.
hadoop数据库,分布式、可伸缩、大数据存储。适用于对大数据的随机实时读写操作。

2,官方给的是他可以存储十亿行 *  百万列  每个数据都可以有上千个版本

3,mvcc(多版本并发控制)

4,面向列(族,column family)数据库

5,nosql(不仅仅是sql)他和普通sql不一样他还可以存储半结构化数据

 二,hbase特性

Linear and modular scalability.           线程和模块可伸缩

Strictly consistent reads and writes.    严格一致性读写

Automatic and configurable sharding of tables        表切割自动化以及配置

Automatic failover support between RegionServers.    在区域服务器间的自动容灾

等一些特性

 三,hbase的使用场景

1,快速随机访问

2,频繁写入

注意:这也是比hive好的地方,hbase快的根本是因为他是靠内存来存储数据的

 四,hbase使用的文件系统

hbase最常用使用的文件系统是hdfs,但并不仅仅是hdfs,因为hbase使用的文件系统是一个可插拔式的架构,用户使用其他任何hadoop接口文件系统代替hdfs。事实上,用户可以实现自己的文件系统-----甚至基于另一个数据库,一切都有可能

 五,hbase模型

1)以表的形式存放数据

2)表由行与列组成,每个列属于某个列族,由行和列确定的存储单元称为元素

3)每个元素保存了同一个数据的同一个版本,由时间戳来标识区分

 六,行键

1)行键是数据行在表里唯一标识,并作为检索记录的主键

2)访问表里的行只有三种方式

      1.通过行键访问

      2.给定行键的范围访问

      3.全局扫描  

 七,列族与列

1)表示为 : 列族:列

2)hbase在磁盘上按照列族存储数据,这种列式数据库的设计适合于实时数据分析

八,时间戳(也可以叫版本号)

 1)对应每次数据操作的时间,可由系统自动生成,也可以由用户赋值

 2)hbase支持两种数据版本回收方式:

                                              1,每个数据单元,只存储指定个数的最新版本

                                              2,保存指定固定时间的版本

3,元素由 行键,列族:限定符,时间戳唯一决定

4,元素以字节码形式存放,没有类型之分

九,hbase构架(重点)

1)hbase构架图

如图分析:hbase 主要分为两种文件:一种是预写日志(write-ahead log 即WAL),另一种是实际的数据文件,这两种文件主要由hregionserver管理,一个基本的流程是客户端首先联系zookeeper子集群(quorum)(一个由zookeeper节点组成的单独集群)查找行键,zookeeper获取含有namespace的region服务器名(主机名)来完成,通过含有namespace的region服务器可以查询到含有meta表对应的服务器名,其中包含请求行键信息,这两处的主要被缓存起来,并且都只查询一次,最终,通过查询meta服务器哪获取客户端查询的行键所在region的服务器名,启动hbase时:Hmaster负责将所有region分配到每个hregionserver上,其中也包括特别的namespace表和meta表。下面我们详细介绍图上的内容

2,region和region服务器

表在行方向上,按照行键范围划分成若干的Region
每个表最初只有一个region,当记录数增加到超过某个阈值时,开始分裂成两个 region
物理上所有数据存放在HDFS,由Region服务器提供region的管理
一台物理节点只能跑一个HRegionServer
一个Hregionserver可以管理多个Region实例
一个Region实例包括Hlog日志和存放数据的Store
Hmaster作为总控节点
Zookeeper负责调度 

3,Hlog

   1)用于容灾恢复

   2)预写式日志,记录所有更新操作,操作先记录进日志,数据才会写入

4,hbase有两张特殊的table,namespace和meta

  1) namespace表: 记录了所有的名字空间(名字空间相当于传统数据库的数据库),其中一个hbase的名字空间记录着                                     meta信息

   2)meta表:  记录用户表的region信息,meta,可以有多个region

5,memstore与storefile

      1)  一个region由多个store组成,每个store包含一个列族的所有数据

      2)store包括位于把内存的memstore和位于硬盘的storefile

     3)写操作先写入memstore,当memstore中数据量达到某个阈值,hregionserver会启动flashcache进程写入storefile,每          次写入形成单独一个storefile

     4)当storefile文件的数量增长到一定阈值后,系统会进行合并,在合并过程中会进行版本合并和删除工作,形成更大的             storefile

     5)但storefile大小超过一定阈值后,会把当前的region分割成两个,并且hmaster会分配到相应的region服务器,实现负            载均衡

     6)每个storefile下面都有若干个hfile,每个hfile占用64k 

     7)客户端检索数据时,现在memstore找,找不到会在storefile找

6,wal(hlog)

    region 服务器会将数据保存到内存中,直到积攒足够多的数据在将其刷写到硬盘上,这样可以避免创建很小的小文件,存储在内存中的数据是不稳定的,列如,在服务器断电的情况下数据就会丢失,这是一个典型的问题,他的解决方法就是预写日志(wal),,每次更新都会写到日志里,只有写如成功才会通知客户端操作成功,然后服务器就可以吧这些信息写到相应的region里去

如图所有修改的数据都先保存到wal(hlog)上,在传递给memstore

十,hbase VS 行式数据库(传统数据库)

      1,传统数据库的方式存储

             数据存放在数据文件内

             数据文件的基本组成单位:块/页

            块内数据:块头,数据区

      2,行式存储的问题

            读某个列必须读入整行

            行不等长,修改数据可能会导致行迁移

            行数据较多可能导致行链

    而hbase他是面向列的数据库完全解决这些问题,他定位数据采用三级定位:行键(rowkey)/列族:列/时间戳

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值