文档章节

关于HBase的学习01

 指尖以东
发布于 2016/09/19 17:15
字数 1303
阅读 6
收藏 0

简介:

HBase(Hadoop Database):一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价的PC Server上搭建起大规模机构化存储集群。

HBase是一个山寨版本的BigTable,不过它站在Hadoop这个巨人的肩膀上!

HBase是一个非关系型数据库(NoSQL数据库)

  NoSQL 关系型数据库
数据模型 适合结构化、非结构化和半结构化的数据 适用于结构化的数据
扩展性 易于扩展,如添加节点以及扩容             较难
语言 不同数据库操作不同 标准SQL或类SQL
模式Schema 随时添加字段 必须预先定义好,不方便扩展

 

HBase以表的形式存储数据

表的特点:

  • 大:一个表可以有上亿行,上百万列
  • 面向列:面向列(族)的存储和权限控制,列(族)独立检索
  • 稀疏:对于为null的列,并不占用存储空间,因此,表可以设计的非常疏松

下图是Hadoop生态系统:

HBase位于结构化存储层;

Hadoop HDFS为HBase提供了高可靠性的底层存储支持

Hadoop MapReduce为HBase提供了高性能的计算能力

Zookeeper为HBase提供了稳定服务和failover机制

此为,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变得非常简单。Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库向HBase中迁移变的非常方便。

数据模型的关键概念:

  • RowKey:用来检索记录的主键。访问HTable中的行,只有三种方式:
    • 通过单个rowkey访问
    • 通过rowkey的range
    • 全表扫描
  • Qualifier:可动态扩展的列,不需要先定义到HTable schema中,类似于关系型数据库中的列(Column)
  • Famliy:列族,相当于一个Family下面有多个Qualifier。TTL(留存期),Versions(最大版本数),Comperssion(压缩方式)等待都是设置在这一级。
  • Version/Timestamp:由单一rowkey对应family:qualifier下的值可以允许有多个版本,由毫秒级的时间戳来区分,也可以制定范围取任意版本对应的数据
  • Cell:存储的最小单位。由rowkey+family:qualifier+timestamp三个维度唯一确定取出value
  • Namespace:表命名空间,不指定则为默认“default”空间

HTable系统表:

hbase:namespace:存储htable的各表的命名空间

hbase:meta:存储htable的各个region起止rowkey信息,位置信息等

hbase:ad:记录一些表操作权限的信息,支持到qualifier的ACL,权限分类READ('R'),WRITE('W'),EXEC('X'),CREATE('C'),ADMIN('A') 

HBase存储框架:

  • Zookeeper:HBase集群依赖该组件
    • Zookeeper Quorum存储-ROOT-表地址、HMaster地址
    • HRegionServer把自己以Ephedral方式注册到Zookeeper中,HMaster随时感知各个HregionServer的健康情况
  • HMaster:主要负责Table和Region的管理工作
    • 管理用户对表的增删查改操作
    • 管理HRegionServer的负载均衡,调整Region分布
    • Region Split后,负责新Region的分布
    • 在HRegionServer停机后,负责失效HRegionServer上Region迁移

  • HRegionServer:最核心的模块,主要负责相应用户I/O请求,向HDFS文件系统中读写数据

    • HRegionServer管理一些列HRegion对象

    • 每个HRegion对应Table中一个Region,HRegion由多个HStore组成

    • 每个HStore对应Table中一个Column Family的存储

    • Column Family就是一个集中的存储单元,故将具有相同IO特性的Column放在一个Column Family会更高效

  • Region:当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region由[startkey,endkey)表示,不同的region会被Master分配给相应的RegionServer进行管理

  • HStore:HBase存储的核心。由MemStore和StoreFile组成,MemStore是Sorted Memory Buffer

  • HLog:在分布式系统环境中,无法避免系统出错或者宕机,一旦HRegionServer意外退出,MemStore中的内存数据就会丢失,为防止数据丢失,引入了HLog。

    每次用户操作写入Memstore的同时,也会写一份数据到HLog文件,HLog文件定期会滚动出新,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知,HMaster首先处理遗留的HLog文件,将不同region的log数据拆分,分别放到相应region目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。

  • HDFS:HDFS是一个分布式文件系统。它通过将一个大的文件划分成一个个固定大小的Block来实现分布式存储。每一个Block的默认大小为128MB。每一个Block都存在多个备份,并且被部署在不同的数据节点上,来保障数据的安全。目前,HBase的所有底层数据都以文件的形式交由HDFS来存储。HBase一侧本身不固化保存数据信息

 

 

© 著作权归作者所有

粉丝 0
博文 2
码字总数 1507
作品 0
杭州
私信 提问
关于学习Hadoop中未总结的资料

1)Cygwin相关资料   (1)Cygwin上安装、启动ssh服务失败、ssh localhost失败的解决方案   地址:http://blog.163.com/pwcrab/blog/static/16990382220107267443810/   (2)windows...

Carl_
2015/06/25
36
0
HBase实战 | Hive数据导入云HBase

网络环境 专线:用户需要把hbase集群的VPC相关网络信息配置到专线里面,可直通hbase环境 公有云虚拟机VPC环境:选择和hbase通VPC 其他:需要开hbase公网 注意:默认导入hbase数据,依赖的hba...

hbase小能手
2018/11/14
0
0
使用hive读取hbase数据

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为 MapReduce任务进行运行。 其优点是学习成本低,可以通过类...

凡16
2013/12/13
783
0
2018-08-13期 Hbase伪分布模式安装部署

说明: Hbase部署模式有以下三种 (1)本地模式:本地模式不依赖于HDFS存储,将文件存储到操作系统本地目录,好处是我们不需要搭建HDFS集群,即可学些HBase相关命令及客户端操作。 (2)伪分...

JackmaSong
2018/08/13
0
0
hadoop hive hbase 入门学习 (二)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// hadoop 自学系列 hado......

curiousby
2015/03/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部