Hadoop HBase批量加载使用率

Hadoop HBase批量加载使用率,hadoop,hbase,hbasestorage,Hadoop,Hbase,Hbasestorage,我正在尝试将一些HDFS数据导入到已经存在的HBase表中。 我创建的表有两个列族,以及HBase在创建新表时附带的所有默认设置。 该表已经充满了大量数据,有98个在线区域。 其行键的类型为(简化版): 2字符ID+6位数字+3 X 32字符MD5哈希 密钥示例:IP281113EC46D8630156820D510F47095D6C99DB18630B0A23EA873988B0FB12597E05C6B30C479DFB9E9D627CCFC4C5DD5FEF 我要导入的数据在HDFS上,我

我正在尝试将一些HDFS数据导入到已经存在的HBase表中。 我创建的表有两个列族,以及HBase在创建新表时附带的所有默认设置。 该表已经充满了大量数据,有98个在线区域。 其行键的类型为(简化版): 2字符ID+6位数字+3 X 32字符MD5哈希

密钥示例:IP281113EC46D8630156820D510F47095D6C99DB18630B0A23EA873988B0FB12597E05C6B30C479DFB9E9D627CCFC4C5DD5FEF

我要导入的数据在HDFS上,我正在使用Map Reduce进程读取它。我从映射器发出Put对象,它对应于从HDFS文件读取的每一行。 现有数据具有以“XX181113”开头的键。 作业配置为:

HFileOutputFormat.configureIncrementalLoad(job, hTable)
一旦我开始这个过程,我看到它配置了98个还原器(相当于表中的在线区域),但问题是4个还原器得到了它们之间100%的数据分割,而其余的什么都没有。 因此,我只看到4个文件夹输出,它们的大小非常大。 这些文件是否对应于4个新的
区域
,然后我可以将其导入到表中?如果是这样的话,为什么只创建了4个,而创建了98个减速器? 阅读HBase文档

In order to function efficiently, HFileOutputFormat must be configured such that each output HFile fits within a single region. In order to do this, jobs whose output will be bulk loaded into HBase use Hadoop's TotalOrderPartitioner class to partition the map output into disjoint ranges of the key space, corresponding to the key ranges of the regions in the table.
更让我困惑的是我为什么会有这种行为


谢谢

得到的贴图数量并不取决于表中区域的数量,而是取决于数据如何分割成区域(每个区域包含一系列键)。因为您提到所有新数据都以相同的前缀开头,所以它可能只适合少数几个区域。 您可以预拆分表,以便将新数据划分到更多区域