当前位置:首页 > 开发 > 开源软件 > 正文

【HBase十二】HFile存储的是一个列族的数据

发表于: 2015-04-16   作者:bit1129   来源:转载   浏览:
摘要: 在HBase中,每个HFile存储的是一个表中一个列族的数据,也就是说,当一个表中有多个列簇时,针对每个列簇插入数据,最后产生的数据是多个HFile,每个对应一个列族,通过如下操作验证   1. 建立一个有两个列族的表   create 'members','colfam1','colfam2'   2. 在members表中的colfam1中插入50*5

在HBase中,每个HFile存储的是一个表中一个列族的数据,也就是说,当一个表中有多个列簇时,针对每个列簇插入数据,最后产生的数据是多个HFile,每个对应一个列族,通过如下操作验证

 

1. 建立一个有两个列族的表

 

create 'members','colfam1','colfam2'

 

2. 在members表中的colfam1中插入50*50*50条数据,然后flush到磁盘,通过UI观察MemStore和HFile个数的变化

 

for i in '0'..'50' do for j in '0'..'50' do for k in '0'..'50' do put 'members', "row-colfam1-#{i}#{j}#{k}", "colfam1:#{j}#{k}", "#{j}#{k}" end end end

 

做完如上操作, members表的HFile数目不变,但是MemStore占用23.3M空间

 

4. 将members表数据flush到磁盘

 

 

flush 'members'

 

 

做完如上操作, members表的HFile数目增1,但是MemStore占用10几K空间,即MemStore的内存空间被释放

 

5.

5.1 在members表中的colfam1和colfam2中分别插入1条数据

for i in '100'..'100' do for j in '100'..'100' do for k in '100'..'100' do put 'members', "row-colfam1-#{i}#{j}#{k}", "colfam1:#{j}#{k}", "#{j}#{k}" end end end

for i in '100'..'100' do for j in '100'..'100' do for k in '100'..'100' do put 'members', "row-colfam2-#{i}#{j}#{k}", "colfam2:#{j}#{k}", "#{j}#{k}" end end end

 

做完如上操作, members表的HFile数目不变,因为数据量小,MemStore的变化也基本没有

 

5.2 将members表数据flush到磁盘

 

flush 'members'

 

做完如上操作,即使数据量很小,members表的HFile数目也是增加了两个,可见HBase为每个列簇创建了一个HFile文件

 

 

 

 

 Num.Store vs Num.Storefiles

 

在HBase的UI,有两个统计指标,Num.Store和Num.Storefiles,其中Num.Store表示Store的数目,一个Column Family对应一个Store;Num.Storefile对应着这个表的所有HFile的数目,每个Storefile根据其对应的ColumnFamily不同,分属于不同的Store,但是HBase UI上看不出来,每个Store有几个Storefiles

 

 

 http://hadoop.master:16301/rs-status?filter=all#memoryStats

 http://hadoop.master:16301/rs-status?filter=all#regionStoreStats

 

 

 

 

 

【HBase十二】HFile存储的是一个列族的数据

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
1. 首先看看HBase中存储的文件内容 执行如下命令添加测试数据: create 'table3', 'colfam1', { SPL
1. 首先看看HBase中存储的文件内容 执行如下命令添加测试数据: create 'table3', 'colfam1', { SPL
1. 首先看看HBase中存储的文件内容 执行如下命令添加测试数据: create 'table3', 'colfam1', { SPL
HBase表在进行模式设计时,首先考虑的一个问题是,这个表应该有多少个列族。一张表设计多少列族合理
HBase put数据时会先将数据写入内存,其内存结构是一个ConcurrentSkipListMap,其Comparator是KVCom
HBase是面向列的分布式的数据库,和传统的关系型数据库有很大的不同:物理模型和逻辑模型。这里我们
转自淘宝数据平台 HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括两种文件类型: 1
Table of Contents HFile存储格式 Block块结构 HFile存储格式 HFile是参照谷歌的SSTable存储格式进
1.HFile详解 HFile文件分为以下六大部分 序号 名称 描述 1 数据块 由多个block(块)组成,每个块的格
1.HFile详解 HFile文件分为以下六大部分 序号 名称 描述 1 数据块 由多个block(块)组成,每个块的格
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号