简而言之,我有一个客户想要将数据包含在一组ASCII文本文件(即.一个“输入文件”)中,输入到Accumulo中。
这些文件由不同的数据提要设备输出,并将在非Hadoop/ continuously节点(即“提要节点”)上连续生成。所有提要的总体数据吞吐量预计将非常高。
为了简单起见,假设所有数据都将在Accumulo中的前向索引表和反向索引表中结束。
我已经编写了一个Accumulo客户端模块,该模块可以通过BatchWriter代理建立到Accumulo的连接,从本地文件系统(而不是HDFS)读取和解析输入文件,在代码中创建适当的正向和反向索引突变,并使用BatchWriter将突变写入正向和反向索引表。到现在为止还好。但更重要的是。
从不同的来源中,我了解到至少有几种标准的方法可以适用于我的场景中的Accumulo高速吞食,我正在征求一些关于哪些选项在资源使用、实现和维护方面最有意义的建议。以下是一些选择:
就我个人而言,我最喜欢选项#2,只要Accumulo主节点能够自己处理所涉及的处理负载(非并行输入文件解析)。我可以在每个Accumulo节点上运行Accumulo客户端,并将不同提要节点的输出发送给不同的Accumulo节点或循环的第二种变体,它仍然具有将正向和反向索引突变跨云网络发送到Accumulo主节点的缺点,但它的优点是更多地并行执行输入文件解析。
我需要知道的是:我是否错过了任何可行的选择?我是否错过了每种选择的优点/缺点?无论我的问题上下文如何,这些优点/缺点是微不足道的还是非常重要的,特别是网络带宽/ CPU周期/磁盘I/O权衡?与MapReduce相比,有或没有rfiles的BatchWriter值得麻烦吗?有人有“战争故事”吗?
谢谢!
发布于 2014-07-02 20:33:58
即使在每个用例中,人们对于如何为特定用例实现解决方案也有自己的偏好。实际上,我将在提要节点上运行flume代理并收集HDFS中的数据,并使用MapReduce方法对到达HDFS中的新数据定期运行一个RFile。
https://stackoverflow.com/questions/21714882
复制相似问题