分享

HFileOutputFormat生成HFile后Region数量问题

大数据爱我 发表于 2015-1-13 20:49:24 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 6 30592
在项目中使用HFileOutputFormat生成HFile,配置中Table的Region大小为60,Reduce数量也为60,按理论说最后生成的HFile的Region也应该是60个Region,整体数据量大约800G,但是生成HFile后一共生成了480个Region,每个HFile文件大约在1.5G左右,导入HBas时也是480个Region,请问下如何设置一个HFile文件的大小,不让它自动分裂?其中配置hbase.hregion.max.filesize=10G。


已有(7)人评论

跳转到指定楼层
pengsuyun 发表于 2015-1-13 21:47:06
楼主,什么情况下需要自己去生成HFile文件,求教了。
回复

使用道具 举报

大数据爱我 发表于 2015-1-13 21:57:50
pengsuyun 发表于 2015-1-13 21:47
楼主,什么情况下需要自己去生成HFile文件,求教了。

数量很大,初始化表,用HTable的put时会比较慢,会出现RegionTooBusinessException。
回复

使用道具 举报

jixianqiuxue 发表于 2015-1-14 00:53:42
大数据爱我 发表于 2015-1-13 21:57
数量很大,初始化表,用HTable的put时会比较慢,会出现RegionTooBusinessException。
hbase.mapreduce.hfileoutputformat.blocksize
MapReduce 中HFileOutputFormat可以写 storefiles/hfiles. 这个值是hfile的blocksize的最小值。通常在Hbase写Hfile的时候,bloocksize是由table  schema(HColumnDescriptor)决定的,但是在mapreduce写的时候,我们无法获取schema中blocksize。这个值 越小,你的索引就越大,你随机访问需要获取的数据就越小。如果你的cell都很小,而且你需要更快的随机访问,可以把这个值调低。     
默认: 65536

楼主,可以试试这个参数
来源:
HBase 默认配置说明(收藏版)




回复

使用道具 举报

w123aw 发表于 2015-1-14 00:57:43
楼主为什么说最后生成的HFile的Region也应该是60个Region,个人认为reduce的数量并不是Region数量,hbase如果预分区是60个,那么看怎么预分区的了。
回复

使用道具 举报

271592448 发表于 2015-1-14 14:32:40
和hbase表的预分区有关系。
回复

使用道具 举报

sholydar 发表于 2015-1-14 15:48:29
请问生成HFile的源数据必须放在HDFS上吗?

点评

对的,这是借助了hbase的本质是hdfs file,所以可以使用bulkload  发表于 2015-1-14 16:47
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条