HBase:使用集群执行小型作业

时间:2016-05-15 12:03:59

标签: java hadoop mapreduce hbase bigdata

我有一个在单个HBase行(Result)上运行的Java函数,它需要Result作为输入并输出byte[]。我想在10K-100K HBase行上运行此函数并收集结果。我有List<byte[]>这是我想要运行此函数的行,它们均匀分布在表的所有区域。我想在这些限制下这样做:

  • 不将所有行从服务器发送到客户端
  • 没有长时间的初始化,整个操作预计将在第二个
  • 下运行
  • 利用Hadoop集群的处理能力,而不是客户端的处理能力
  • 显然,不依赖于可能数十亿行的HBase表的大小

实现这一目标的最佳方法是什么?我想到了这些选择:

  • Spark - 如果我的作业在表格中的行数很小的情况下运行,我不确定这是否是一个不错的选择
  • 协处理器 - 有没有办法在List<byte[]>个rowkeys上批量运行协处理器并收集结果?工作是否会由集群并行处理?
  • 实施自定义HBase过滤器,然后使用自定义过滤器在Get上执行批量List<byte[]> - Get将由所有区域服务器并行处理,并且可以运行自定义逻辑,但这似乎是一个黑客,我不确定自定义过滤器可以返回该行的其中一列中不存在的数据。

0 个答案:

没有答案