【原创】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 接口
特殊表(涉及数据定位过程问题)
- -ROOT- 表包含 .META. 表的区域列表;
- .META. 表包含所有用户空间区域(user-space region)的列表;
在 Regionserver 上进行读写操作
写操作
- 追加方式写入提交日志(commit log),提交日志存放在 HDFS 中(保证高可用);
- 写入内存中的 memstore ;
- 若 memstore 满,则刷入(flush)文件系统;
- 查看区域(region)的 memstore ;
- 若在 memstore 中找到需要的版本则直接返回,否则按照次序从新到旧检查 flush file ;
HBase 提供的对外接口
- Avro
- REST
- Thrift
服务的启动和停止
hbase-daemon.sh <start|stop> <rest|thrift|avro>
对比
- HDFS 和 MapReduce 适用于对大数据集进行批处理,但对于读或写单独的记录,效率很低;而 HBase 可以高效完成;
- HDFS 和 MapReduce 不擅长在有更新到达时维护索引(虽然 MapReduce 作业可以用于建立索引以支持随机访问),所以不符合低延时查询需求,而 HBase 可以;
低查询延时 -> 排除直接使用 HDFS ;

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何在Aliyun E-MapReduce集群上使用Zeppelin和Hue
前言 目前Aliyun E-MapReduce支持了Appache Zeppelin和Hue,在Aliyun E-MapReduce集群上可以很方便的使用zeppelin和hue。 Apache Zeppelin是一个提供了web版的类似ipython的notebook,用于做数据分析和可视化。背后可以接入不同的数据处理引擎,包括spark, hive, tajo等,原生支持scala, java, shell, markdown等。它的整体展现和使用形式和Databricks Cloud是一样的,就是来自于当时的demo。 Hue是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是基于Python Web框架Django实现的。通过使用Hue我们可以
- 下一篇
Hadoop2.6.0运行mapreduce之推断(speculative)执行(上)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/beliefer/article/details/51249119 前言 当一个应用向YARN集群提交作业后,此作业的多个任务由于负载不均衡、资源分布不均等原因都会导致各个任务运行完成的时间不一致,甚至会出现一个任务明显慢于同一作业的其它任务的情况。如果对这种情况不加优化,最慢的任务最终会拖慢整个作业的整体执行进度。好在mapreduce框架提供了任务推断执行机制,当有必要时就启动一个备份任务。最终会采用备份任务和原任务中率先执行完的结果作为最终结果。 由于具体分析推断执行机制,篇幅很长,所以我会分成几篇内容陆续介绍。 推断执行测试 本文在我自己搭建的集群(集群搭建可以参阅《Linux下Hadoop2.6.0集群环境的搭建》一文)上,执行wordcount例子,来验证mapreduce框架的推断机制。我们输入以下命令: hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount -D map...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16