HBase HFiles尺寸的产生

时间:2015-01-28 21:42:39

标签: hadoop mapreduce hbase

我正在使用包含28个区域服务器的HBase群集。

我有一个表,它使用宽表定义。行键是十六进制字符串,而每行只有一个列族,而后者又有80个限定符。 每个限定符名称都是一个int(从1到80开始),每个值都是long。 该表已使用HBase手册here中定义的经典getHexSplits方法预先划分为28个区域。

我有一个创建表的Map-Reduce作业,并且必须加载大约1.8 TB的数据。

我正在使用HFileOutputStream来创建HFiles。问题在于,尽管作业配置了28个reducer,并且hbase.hregion.max.filesize设置为默认值(10GB),但我得到了更多(每个都是1161个aprox 1.61 GB!)HFiles我期待。

问题在于,一旦创建了表,并且正在加载HFile,该表立即启动MAJOR和MINOR压缩,这会触发大量I / O并影响我的下一个Map-Reduce作业,该作业从桌子。我想这会发生,因为每个区域有多个HFile,HBase试图压缩它们以优化读取?

为了避免压缩,我如何确保获得较少数量的HFile?什么是理想的设置为表的区域数量,我可以设置什么其他参数,以确保我没有压缩? 我的表只写了一次,然后只用于读取。

0 个答案:

没有答案