0

我们有一个基于 HBase 的系统,我们希望在生产中每天批量加载几百万行。我们认为与 puts 相比,HBase Bulk Load将是一个不错的选择——批量加载功能使用 MapReduce 作业以 HBase 的内部数据格式输出表数据,然后将生成的 StoreFiles 直接加载到正在运行的集群中。与简单地使用 HBase API 相比,使用批量加载将使用更少的 CPU 和网络资源。我们已经对此进行了评估,并且效果很好。参考指南中的以下部分讨论了限制:

72.2。批量加载限制 由于批量加载绕过了写入路径,WAL 不会作为进程的一部分被写入。复制通过读取 WAL 文件来工作,因此它不会看到批量加载的数据——使用 Put.setDurability(SKIP_WAL) 的编辑也是如此。处理该问题的一种方法是将原始文件或 HFile 发送到另一个集群并在那里进行其他处理。

这是一个大问题,因为我们要使用高可用性。我们还发现了另一个 JIRA HBASE-13153,这表明修复后复制工作正常。

问题:

  1. Bulk Load 是否用于生产用途?
  2. HBase 文档是否已过时并且限制现在已解决?
  3. 使用批量加载还有其他限制吗?如果是,首选方法是什么?
4

1 回答 1

0
  1. 是的。许多用户在生产中使用批量加载
  2. 是的,在 HBASE-13153 之后,没有提到的限制。但请参阅该问题的发行说明。默认情况下,此功能是关闭的。您必须对其进行配置才能正常工作。然后批量加载的文件也将被复制到对等集群。是的,文档已经过时了。很快就会解决这个问题。另请参阅修复版本。您必须相应地选择版本。
  3. 其他限制:您需要使用安全性(ACL)吗?如果是这样,批量加载的 ACL 需要是对表/CF 的 CREATE 权限,而不仅仅是 WRITE 权限。请记住这一点。这不是限制,只是说。批量加载存在一些缺陷,但在 1.3+ 版本中,这些应该已经修复。

没错,您可以尝试使用数据写入的批量加载方式,这似乎与您的用例完美匹配。

于 2018-01-30T05:03:11.287 回答