hbase的写和读,大合并和小合并
Hbase写:
客户端向hbase服务器端发送写的请求时,hbase会同时进行两个动作,把记录写在WAL(write ahead log)日志文件中,每台服务器所有表都共享这个WAL文件。然后会写到memStore内存中,memStore是内存中的写入缓存区,如果memStore写满就刷新写到硬盘,生成HFile文件。当服务器宕机时memStore内存中的内容就没了,这时可以通过回放WAL日志文件恢复,回放的动作由hbase内部机制调用,不需要用户调用。
HFile存储在底层文件系统,hbase是Hadoop数据库,所以会在分布式文件系统hdfs上,HFile对应列族,一个列族可以有多个HFile文件,一个HFile文件是一个列族中的内容。在集群的每个节点上,每个列族有一个memStore.注意千万别把WAL关闭
Hbase读:
hbase读路径顺序 memStore==>blockCache==>HFile
现在metStore找,找不到就到到blockCache,再找不到就读取HFile文件到内存中,hbase使用blockCache缓存技术,blockCache保存从HFile中读取到内存的频繁访问的数据,每个列族都有自己的blockCache (block是建立索引的最小数据单元,block大小是可以调整的,默认是64kb)一个完整的行信息可能存放在多个HFile中,为了读出完整行,Hbase可能需要读取包含该行信息的所有HFile
hbase合并:
删除一条记录,就会在该记录上打上标记,被打上标记的记录就成了墓碑记录,该记录使用get和scan查询不到,但还是在HFile中。只有进行大合并的时候才会删除HFile中的墓碑记录。大合并:指定region的一个列族的所有HFile.合并完成后,这个列族的所有HFile文件合并成一个HFile文件,可以在shell中手动触发,但该动作相当耗资源。小合并是将多个小的HFile文件内容读取出来合并生成一个大的HFile,把新文件设置成激活状态,然后删除小的HFile
hbase的写和读,大合并和小合并的更多相关文章
- 如何基于LSM-tree架构实现一写多读
一 前言 PolarDB是阿里巴巴自研的新一代云原生关系型数据库,在存储计算分离架构下,利用了软硬件结合的优势,为用户提供具备极致弹性.海量存储.高性能.低成本的数据库服务.X-Engine是阿里巴 ...
- [BZOJ4530][Bjoi2014]大融合 LCT + 启发式合并
[BZOJ4530][Bjoi2014]大融合 试题描述 小强要在N个孤立的星球上建立起一套通信系统.这套通信系统就是连接N个点的一个树. 这个树的边是一条一条添加上去的.在某个时刻,一条边的负载就是 ...
- C#向文件写、读数据
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- win10 UWP 你写我读
想要电脑读出我们写的内容,在win10,很简单 其实这个技术在windows7就有了,但是现在win10让写出一个你写我读的软件很简单. 我们需要一个类MediaElement来播放,因为window ...
- java读大文件最快性能【转】
java读大文件最快性能 完全引用自: 几种读大文件方法的效率对比测试 据说1.88g只要5秒左右,未亲测. /** * 读大文件 * BufferedReader + char[] * @throw ...
- 【BZOJ-4530】大融合 线段树合并
4530: [Bjoi2014]大融合 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 280 Solved: 167[Submit][Status] ...
- IDEA中Spark往Hbase中写数据
import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.io.ImmutableBytesWr ...
- 2018-2-13-win10-UWP-你写我读
title author date CreateTime categories win10 UWP 你写我读 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17: ...
- python 写一个生成大乐透号码的程序
""" 写一个生成大乐透号码的程序 生成随机号码:大乐透分前区号码和后区号码, 前区号码是从01-35中无重复地取5个号码, 后区号码是从01-12中无重复地取2个号码, ...
随机推荐
- 【Linux】字符转换命令expand
这命令就是在将 [tab] 按键转成空格键: [root@www ~]# expand [-t] file 选项与参数: -t :后面可以接数字.一般来说,一个 tab 按键可以用 个空格键取代. 我 ...
- 域名 ip地址 端口号
域名默认指定一个ip地址 当用域名访问网站的时候 网站会默认给个端口号80 或者自己指定 其他的 例如数据库 也是会给端口号 例如mysql 3306 域名:80 是访问iis 网站域名:3306 是 ...
- itunes Connect 未能创建 App 图标
之前用的是chrome浏览器提交了app和app图标都是没问题的,可今天一直提交一直没成功,也是符合apple要求格式和大小的,郁闷.后来想了想换个浏览器试试,用了mac自带的safari浏览器后居然 ...
- PHP中数字检测is_numeric与ctype_digit的区别介绍
PHP中的两个函数is_numeric和ctype_digit都是检测字符串是否是数字,但也存在一点区别 is_numeric:检测是否为数字字符串,可为负数和小数 ctype_digit:检测字符串 ...
- MySQL -- Innodb是如何处理自增列的
对于那些向带有自增列的表中插入行的语句,Innodb提供一种可配置的锁定机制,这种锁定机制可以显著提高SQL语句的可伸缩性和性能. Innodb中为了使用自增机制,自增列必须是索引的部份,从而可以使用 ...
- 如何修改电脑的本地网卡(非笔记本无限网卡)的mac地址
计算机---设备管理器--找到对应的本地网卡---右键属性-----高级----网络地址
- Android启动Activity的标准Action和标准Category
Android内部提供了大量标准的Action和Category常量. 其中用于启动Activity的标准Aciton及对应的字符串如下表所示: 启动Activity的标准Aciton Action常 ...
- C#基础第九天-作业答案-储蓄账户(SavingAccount)和信用账户(CreditAccount)
class Bank { //Dictionary<long,Account> dictionary=new Dictionary<long,Account>(); DataT ...
- 复习:JSP基本的语法(JSP凝视 + JSP指令 + JSP脚本元素 + JSP动作元素)
JSP原理: 1. 对于每个请求.jsp容器都会创建一个新的线程来处理它: 2. Servlet容器载入jsp后转换成的servlet(.class文件)是常驻内存的,所以对应速度一般比較 ...
- 【Unity】第12章 导航网格和寻路
开发环境:Win10.Unity5.3.4.C#.VS2015 创建日期:2016-05-09 一.简介 NavMesh(导航网格)是3D游戏世界中用于实现"动态"物体自动寻路的一 ...