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

编程技术  /  houtizong 发布于 3年前   73

在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 endfor 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

 

 

 

 

 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客