gpt4 book ai didi

hadoop - HBase 批量加载使用情况

转载 作者:行者123 更新时间:2023-12-02 21:51:36 25 4
gpt4 key购买 nike

我正在尝试将一些 HDFS 数据导入到已经存在的 HBase 表中。
我创建的表是使用 2 个列族创建的,并且具有 HBase 在创建新表时附带的所有默认设置。
这张表已经被大量数据填满了,它有98个在线区域。
它具有的行键类型为(简化版):
2-CHARS_ID + 6-DIGIT-NUMBER + 3 X 32-CHAR-MD5-HASH。

key 示例:IP281113ec46d86301568200d510f47095d6c99db18630b0a23ea873988b0fb12597e05cc6b30c479dfb9e9d627ccfc4c5dd5fef。

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

HFileOutputFormat.configureIncrementalLoad(job, hTable)

一旦我开始这个过程,我看到它配置了 98 个 reducer(等于表的在线区域),但问题是 4 个 reducer 得到了 100% 的数据拆分,而其余的什么也没做。
结果,我只看到 4 个文件夹输出,它们的大小非常大。
这些文件是否对应于 4 个新的 regions然后我可以导入到表中?如果是这样,为什么只创建了 4 个,而创建了 98 个 reducer ?
阅读 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.

我更加困惑为什么我会得到这种行为。

谢谢!

最佳答案

您获得的 map 数量不取决于您在表中拥有的区域数量,而是取决于数据如何划分为区域(每个区域包含一系列键)。由于您提到所有新数据都以相同的前缀开头,因此它很可能只适合几个区域。
您可以预先拆分表格,以便在更多区域之间划分新数据

关于hadoop - HBase 批量加载使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20267799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com