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是无模式数据库,只需要提前定义列族。

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

  • 相关阅读:
    HDU 4069 Squiggly Sudoku
    SPOJ 1771 Yet Another NQueen Problem
    POJ 3469 Dual Core CPU
    CF 118E Bertown roads
    URAL 1664 Pipeline Transportation
    POJ 3076 Sudoku
    UVA 10330 Power Transmission
    HDU 1426 Sudoku Killer
    POJ 3074 Sudoku
    HDU 3315 My Brute
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/8654420.html
Copyright © 2011-2022 走看看