zoukankan      html  css  js  c++  java
  • 《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是无模式数据库,只需要提前定义列族。

      也是无类型数据库,按照字节数组存储。

  • 相关阅读:
    Leetcode 从前序与中序遍历序列构造二叉树
    python基础一 day6 序列操作集合
    python基础一 day6 文件操作
    python基础一 day5 集合
    python基础一 day5 复习
    python基础一 day5 知识点
    python基础一 day4 字典
    python基础一day4 元组
    python基础一 day3 列表
    python基础一 day2 字符串操作
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/8654420.html
Copyright © 2011-2022 走看看