Hfile的blocksize问题?

0
看到Hbase权威指南:

HFile结构的前端有若干个Data块,默认是64KB,这些Data块的大小可以被用户设置,就是使用HColumnDescripter设置。可以看到图里面每个Data块的结构是前面一个Magic,后边跟着若干个key-value.

问题:
1.假如我有一个img列族,里面只有一个列img:content,每张图片大概514KB,那么这个HFile的结构是什么样子的?
2.如果使用HColumnDescripter把blocksize块大小改成576KB,是不是表示每个Data块的大小为576KB?
3.每张图片存在一个cell里面,是key-value对还是data块呢,但其实我是想设置每个cell的大小为576KB,如果是key-value对话是不是每个Data块只能有一个key-value对?
4.hbase配置里的hbase.client.keyvalue.maxsize,默认大小为10M,这与上面的blocksize和key-value对的大小有什么关联吗?
请教各位大神了。先谢谢了
已邀请:
2

Bob - 同程旅游大数据+BI 架构师 2015-11-13 回答

2.如果使用HColumnDescripter把blocksize块大小改成576KB,是不是表示每个Data块的大小为576KB?
是的。HColumnDescripter是可以设置列簇的一些信息。
数据块设置小,那访问速度就快。但是会增加数据块索引在内存中的空间。
 
其实你的这些问题都是关于hfile的存储机制。
hfile包含6个部分:数据块、元数据块、fileinfo块、数据索引块、元数据索引块、hfile结尾。
 
你的那个图片存储则属于fileinfo块。
data块、keyvalue 等都是hfile的组成部分,其中keyvalue在存储时还有压缩机制。
 
参考:
http://www.tuicool.com/articles/6nArAv
https://blog.cloudera.com/blog/2012/06/hbase-io-hfile-input-output/
 

要回复问题请先登录注册