zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Linux下DNS服务器搭建详解
    Oracle 数据泵使用详解--精华版
    Oracle 数据泵详解
    数据泵
    Oracle11g数据库导入Oracle10g数据库操作笔记
    DNS服务器
    spring mvc发送请求404,不能进入处理方法,也不报错
    CentOS设置默认启动命令行(不启动图形界面)
    SQL Server 排序的时候使 null 值排在最后
    Git教程
  • 原文地址:https://www.cnblogs.com/rocky-AGE-24/p/7497541.html
Copyright © 2011-2022 走看看