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

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

  • 相关阅读:
    jmeter之jmx和控件介绍
    Jmeter使用1
    jmeter组件之聚合报告分析
    响应断言
    jmeter组件介绍-线程组、http采样器、结果树
    jmeter目录文件讲解和切换语言
    jmeter 学习 -安装
    关于去除input type='file'改变组件的默认样式换成自己需要的样式的解决方案
    js根据id、value值对checkbox设置选中状态
    javaweb简单的实现文件下载及预览
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/8654420.html
Copyright © 2011-2022 走看看