《HBase实战》学习笔记
第二章 入门
HBase写路径:
增加新行和修改已有的行,内部机制是一样的。
写入的时候,会写到预写日志(WAL)和MemStore中。
MenmStore是内存里的写入缓冲区。填满后,会将数据刷写到硬盘里,生成一个HFile,HFile是HBase的低层存储格式。
一个列族可以有多个HFile,但一个HFile不能存储多个列族的数据。
一般使用HDFS作为底层文件系统。
如果服务器宕机,MemStore里丢失的数据可以通过WAL来恢复。
HBase读路径:
读数据的时候,要从HFile和MemStore里拿数据。
读操作使用了BlockCache,用来保存从HFile里频繁读入内存的数据。
Block是HBase从硬盘读数据的基本单位,默认64KB。
一个完整行的数据可能存放在多个HFile里。
删除:
HFile是不可用修改的,所以删除不是立即删除内容,只是给记录打上删除标记,实质上是增加一条墓碑记录写入进来。
打上删除标记的内容不会被get和scan返回。
只有执行大合并,被删除的记录占用的空间才回被释放。
合并:
合并分为大合并(major compaction)和小合并(minor compaction)。
小合并将多个小HFile合并成一个大HFile。读出已有的多个HFile内容,写入到一个新文件,删除老文件。
大合并将处理给定region的一个列族的所有HFile。
大合并是清理被删除记录的唯一机会。因为不能保证被删除的记录和墓碑记录在一个HFile里,只有大合并才能同时访问到这两种记录。
数据模型:
HBase没有严格形态的数据,数据记录可能包含不一致的列,不确定大小等,这种数据称为半结构化数据。
HBase不能实施关系约束,并且不支持多行事务。
一行中一个列族的数据不一定存放在同一个HFile里,但是要物理存放在一起。
小结:
HBase是为半结构化数据和水平可扩展性设计的数据库。
数据按照四维坐标系统来组织:行键,列族,列限定符,时间版本。
HBase是无模式数据库,只需要提前定义列族。
也是无类型数据库,按照字节数组存储。
《HBase实战》学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
随机推荐
- Docker swarm 使用服务编排部署lnmp
一.简介 目的:在Docker Swarm集群中,使用stack服务编排搭建lnmp来部署WordPress 使用私有仓库的nginx和php镜像 mysql使用dockerhup最新镜像 使用nfs ...
- python的list()列表数据类型的方法详解
一.列表 列表的特征是中括号括起来的,逗号分隔每个元素,列表中的元素可以是数字或者字符串.列表.布尔值......等等所有类型都能放到列表里面,列表里面可以嵌套列表,可以无限嵌套 字符串的特征是双引号 ...
- Navicat数据备份
备份:点击数据库---数据传输 目标:备份地点,数据会传送到yaozh_backup 数据传输成功
- JavaScript setInterval 与 setTimeout 区别
setInterval:一直循环调用函数,不会停止:需要用 clearInterval 去停止 setTimeout:只调用一次
- ZeroMQ API(五) 传输模式
1.使用TCP的单播传输:zmq_tcp(7) 1.1 名称 zmq_tcp - 使用TCP的ZMQ单播传输 1.2 概要 TCP是一种无处不在,可靠的单播传输.当通过具有ZMQ的网络连接分布式应用程 ...
- VBscript.Encode 解码器
VBscript.Encode 解码器 此解码器算法来至互联网,我只是收集然后写了个简单的页面便于大家使用. 如有何不妥之处,请留言.
- promise顺序执行,返回结果存放在数组
遇到面试的一个编程题:三个返回promise对象的异步操作,让你写一个函数可以将这些操作顺序执行,并返回一个数组包含三个异步对象的结果 异步对象: // 异步函数a var a = function ...
- Anaconda+django写出第一个web app(二)
今天开始建立App中的第一个Model,命名为Tutorial. Model的定义在main文件夹下的models.py中通过类进行,我们希望Tutorial这个model包含三个属性:标题.内容和发 ...
- SpringMVC控制器 跳转到jsp页面 css img js等文件不起作用 不显示
今天在SpringMVC转发页面的时候发现跳转页面确实成功,但是JS,CSS等静态资源不起作用: 控制层代码: /** * 转发到查看培养方案详情的页面 * @return */ @RequestMa ...
- Oracle中varchar2(XX)和varchar2(XX byte)区别
这两个相不相同是由参数NLS_LENGTH_SEMANTICS决定的,有两个单位,char(字符)或者字节(byte),该参数默认值为BYTE. alter session set nls_lengt ...