Hbase加载数据失败
现象描述
超过32个HFile加载到一个Region下的Family时,出现如下错误信息:
Exception in thread "main" java.io.IOException: Trying to load more than 32 hfiles to one family of one region at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.doBulkLoad(LoadIncrementalHFiles.java:302) at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.run(LoadIncrementalHFiles.java:884) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:75) at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90) at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.main(LoadIncrementalHFiles.java:890)
可能原因
加载数据时,默认支持的最大Hfile数为32个。当一个Region下的一个Family超过32个HFile时,会出现此错误。
定位思路
无。
处理步骤
- 执行LoadIncrementalHFiles命令时添加参数,并给“hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily”参数设置一个最大值。该值表示Family下可生成的最多的HFile的个数。 例如,执行如下命令使系统支持40个HFile。cd <hbase_client>/HBase/hbase bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=40 <hdfs://storefileoutput> <tablename>