【原创】HBase 基础知识

简介:
特点  

1. 在 HDFS 之上开发的;  
2. 面向列(实际是面向列族)的存储器  
3. 实时读写  
4. 随机读写  
5. 针对超大规模数据集  
6. 不支持 SQL  


基本概念  

单元格(cell)  
  • 由行和列的坐标交叉决定,有版本号;
  • 版本号默认为自动分配,为 HBase 向单元格插入数据时的时间戳;
  • 单元格中的内容为未解释的字节数组


行的键  
  • 表中行的键为字节数组;
  • 表中的行根据行的键值(即表的主键)进行排序;
  • 排序依据为字节序;
  • 所有对表的访问都要通过表的主键(二级索引问题);


列族(column family)  
  • 行中的列会被划分成不同的列族;
  • 同一列族中成员具有相同的前缀;
  • 列族的前缀必须是可打印字符构成的;
  • 列族修饰符,即结尾字符,可以为任意字符;
  • 在 HBase 中,规定使用冒号来分隔列族和列族修饰符;
  • 一个表的列族必须作为表模式定义的一部分预先给出,但是心的列族成员可以随后按需要加入;
  • 物理上,所有的列族成员都一起存放在文件系统中;
  • HBase 的调优和存储都在列族这个层次上进行的,所以最好使所有列族成员都有相同的访问模式(access pattern)和大小特征。


区域(region)  
  • HBase 自动把表水平划分成区域;
  • 每个区域由表中行的子集构成;
  • 一开始,一个表只有一个区域,随着表变大,区域的个数也会增加;
  • 区域是在 HBase 中分布数据的最小单位;
  • 在线的所有区域按次序排列就构成了表的所有内容;


 
      无论对行进行访问的事务牵涉多少列,对行的更新都是原子的;  


构成  
  • HBase 模型为一个 Master 节点负责协调管理一个或多个 Regionserver 从属机;
  • Master 负责:启动(bootstrap)、全新的安装、将区域分配给注册的 Regionserver 、恢复 Regionserver 的故障。
  • Regionserver 负责:零个或多个区域的管理,响应客户端的读写请求,区域的划分,通知 Master 有新子区域(daughter region)产生;
  • HBase 依赖于 Zookeeper ,默认情况下,HBase 管理一个 Zookeeper 实例,用于作为集群的权威(authority);
  • HBase 负责管理根目录表(root catalog table)的位置、当前集群 Master 地址等重要信息;

相关文件  
  • conf/regionservers -- 可以查看 Regionserver 节点信息
  • conf/hbase-site.xml 和 conf/hbase-env.sh -- 集群站点配置

持久化接口  
  • 本地文件系统接口(默认)
  • KFS 文件系统接口
  • Amazon S3 接口
  • HDFS 接口
若要使用 HBase 集群,则通常要把 HBase 的存储配置为指向 HDFS 集群;  


特殊表(涉及数据定位过程问题)
  • -ROOT- 表包含 .META. 表的区域列表;
  • .META. 表包含所有用户空间区域(user-space region)的列表;

在 Regionserver 上进行读写操作

写操作
  • 追加方式写入提交日志(commit log),提交日志存放在 HDFS 中(保证高可用);
  • 写入内存中的 memstore ;
  • 若 memstore 满,则刷入(flush)文件系统;
读操作
  • 查看区域(region)的 memstore ;
  • 若在 memstore 中找到需要的版本则直接返回,否则按照次序从新到旧检查 flush file ;
Regionserver 上存在一个后台进程负责在 flush file 数量达到阈值后,对其进行压缩处理(将多个文件的内容处理后写入一个文件中)

HBase 提供的对外接口
  • Avro
  • REST
  • Thrift
通过上述接口和 HBase 集群进行双向交互时,需要 HBase 客户端实例进行代理,故比直接 JAVA 客户端交互更慢。

服务的启动和停止
hbase-daemon.sh <start|stop> <rest|thrift|avro>

对比
  • HDFS 和 MapReduce 适用于对大数据集进行批处理,但对于读或写单独的记录,效率很低;而 HBase 可以高效完成;
  • HDFS 和 MapReduce 不擅长在有更新到达时维护索引(虽然 MapReduce 作业可以用于建立索引以支持随机访问),所以不符合低延时查询需求,而 HBase 可以;
大数据集需求 -> 排除 RDBMS 的使用(可能有点绝对)
低查询延时 -> 排除直接使用 HDFS ;



相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
存储 分布式计算 Hadoop
Hadoop学习之HBase基础知识、操作和原理
Hadoop学习之HBase基础知识、操作和原理 1. HBase 简介 HBase(hadoop DataBase)是一个高可靠,高性能面向列,可伸缩的分布式存储系统,利用HBase技术可在廉价PC server 上搭建大规模结构化存储集群。HBase 利用HDFS作为其文件系统,利用Hadoop MapReduce来处理HBase中的海量数据 2. HBase Shell
1760 0
|
3月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
124 0
|
SQL 分布式计算 Hadoop
Hadoop集群hbase的安装
Hadoop集群hbase的安装
186 0
|
2月前
|
存储 分布式计算 Hadoop
Hadoop节点文件存储HBase设计目的
【6月更文挑战第2天】
37 6
|
2月前
|
存储 分布式计算 Hadoop
Hadoop节点文件存储Hbase高可靠性
【6月更文挑战第2天】
47 2
|
2月前
|
存储 分布式计算 Hadoop
Hadoop节点文件存储Hbase面向列
【6月更文挑战第2天】
27 2
|
3月前
|
分布式计算 安全 Hadoop
HBase Shell-org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet 已解决
在HBase Shell遇到错误时,检查Hadoop非安全模式:`hdfs dfsadmin -safemode get`。问题解决在于`hbase-site.xml`中添加配置:Zookeeper客户端端口设为2181和预写日志提供者设为filesystem。
|
3月前
|
分布式计算 Hadoop Java
Hbase2.2.2在线安装配置(对应Hadoop 3.1.3)
Hbase2.2.2在线安装配置(对应Hadoop 3.1.3)
84 2
|
3月前
|
分布式计算 Hadoop 关系型数据库
Hadoop任务scan Hbase 导出数据量变小分析
Hadoop任务scan Hbase 导出数据量变小分析
79 0