首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Accumulo高速吞食选择

Accumulo高速吞食选择
EN

Stack Overflow用户
提问于 2014-02-11 22:52:29
回答 1查看 1.1K关注 0票数 7

简而言之,我有一个客户想要将数据包含在一组ASCII文本文件(即.一个“输入文件”)中,输入到Accumulo中。

这些文件由不同的数据提要设备输出,并将在非Hadoop/ continuously节点(即“提要节点”)上连续生成。所有提要的总体数据吞吐量预计将非常高。

为了简单起见,假设所有数据都将在Accumulo中的前向索引表和反向索引表中结束。

我已经编写了一个Accumulo客户端模块,该模块可以通过BatchWriter代理建立到Accumulo的连接,从本地文件系统(而不是HDFS)读取和解析输入文件,在代码中创建适当的正向和反向索引突变,并使用BatchWriter将突变写入正向和反向索引表。到现在为止还好。但更重要的是。

从不同的来源中,我了解到至少有几种标准的方法可以适用于我的场景中的Accumulo高速吞食,我正在征求一些关于哪些选项在资源使用、实现和维护方面最有意义的建议。以下是一些选择:

  1. 提要节点上的BatchWriter客户机:在提要节点上运行我的Accumulo客户机。此选项的缺点是在整个网络中发送正向和反向索引突变。此外,Accumulo /Th深层库需要在提要节点上可用,以支持Accumulo客户端。但是,该选项的优点是它并行处理了解析输入文件和创建突变的工作,并且与下面的选项相比,它似乎最小化了Hadoop集群上的磁盘I/O。
  2. Accumulo主节点上的BatchWriter客户机: scp/sftp将输入文件从提要节点输入到Accumulo主节点,进入本地文件系统上的某个目录。然后只在Accumulo主节点上运行我的Accumulo客户端。该选项的优点是它不向整个网络发送从提要节点到Accumulo主节点的正向和反向索引突变,并且它不需要在提要节点上提供Accumulo/Th深层库。但是,它的缺点是,它使Accumulo主节点完成所有解析输入文件和创建突变的工作,并且使用Accumulo主机的本地磁盘作为输入文件的路径点。
  3. MapReduce with AccumuloOutputFormat: scp/sftp将输入文件从提要节点发送到Accumulo主节点。然后定期将它们复制到HDFS,并运行一个MapReduce作业,该作业从HDFS读取和解析输入文件,创建突变,并使用AccumuloOutputFormat编写它们。该选项具有上面第2项的优点,另外它还并行处理了解析输入文件和创建突变的工作。但是,它的缺点是它会不断地拆分和分解MapReduce作业,并调用与这些进程相关的所有开销。它还存在一个缺点,即它使用两个磁盘路径点(本地和HDFS)与关联的磁盘I/O相关联,实现和维护连续摄入听起来有些痛苦。
  4. MapReduce与AccumuloOutput*File*Format (rfiles):scp/sftp将输入文件从提要节点输入到Accumulo主节点。然后定期将它们复制到HDFS,并运行一个MapReduce作业,该作业从HDFS读取和解析输入文件,创建突变,并使用AccumuloOutputFileFormat编写rfile。然后使用Accumulo shell“摄入”rfiles。这个选项有上面#3的所有优点,但我不知道它是否还有其他优点(是吗?Accumulo手册指出:“在某些情况下,以这种方式加载数据可能比通过使用BatchWriters的客户端更快。”什么案子?)。它也有上面#3的所有缺点,除了它使用三个磁盘路径点(本地,HDFSx2)与关联的磁盘I/O,这听起来很痛苦的实现和维护的持续摄入。

就我个人而言,我最喜欢选项#2,只要Accumulo主节点能够自己处理所涉及的处理负载(非并行输入文件解析)。我可以在每个Accumulo节点上运行Accumulo客户端,并将不同提要节点的输出发送给不同的Accumulo节点或循环的第二种变体,它仍然具有将正向和反向索引突变跨云网络发送到Accumulo主节点的缺点,但它的优点是更多地并行执行输入文件解析。

我需要知道的是:我是否错过了任何可行的选择?我是否错过了每种选择的优点/缺点?无论我的问题上下文如何,这些优点/缺点是微不足道的还是非常重要的,特别是网络带宽/ CPU周期/磁盘I/O权衡?与MapReduce相比,有或没有rfiles的BatchWriter值得麻烦吗?有人有“战争故事”吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-07-02 20:33:58

即使在每个用例中,人们对于如何为特定用例实现解决方案也有自己的偏好。实际上,我将在提要节点上运行flume代理并收集HDFS中的数据,并使用MapReduce方法对到达HDFS中的新数据定期运行一个RFile。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21714882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档