我有一系列命令行应用程序,这些应用程序在〜3GB数据文件中接收原始数据。这些应用程序链接在一起以产生较小的输出。我有一个6核系统,每个应用程序只需要一个核,所以我想我可以并行运行6个。

我一直在尝试使这一过程自动化(包括整理结果),并一直在Hadoop上阅读以解决该问题。

Hadoop是否适合此解决方案?如果是,那么我应该使用它的哪一部分(或者还有其他更适合的解决方案)?

编辑

为了使这一点更加清晰,粗略的管道如下所示:

     .-> [A] -> W1 -> [B] -> X1 -> [C] -> Y1 -.
    /                                          \
V -<                                            >- [D] -> Z
    \                                          /
     `-> [M] -> W2 -> [B] -> X2 -> [C] -> Y2 -`

..哪里
  • [A, B, C, D]是命令行应用程序。
  • V是一个3GB数据文件(其中有数百个并且还在计数)。
  • W1W2是大约3MB的中间文件。
  • X1X2是大约200KB的中间文件。
  • Y1Y2是大约200KB的中间文件。
  • Z是最终报告。
  • 最佳答案

    这取决于您的要求。如果您的数据要增加,并且如您所说是原始或非结构化格式,那么hadoop可以为您提供帮助。

  • 您可以使用map-reduce给它一系列输入,将生成输出,该输出根据键和值列表提供给reducer。您可以使用不同的方式来减少映射和编程语言。您将获得有关hadoop here的更多信息。
  • 如果您有诸如从文件或db中获取数据之类的处理,请对其进行处理,然后将输出存储回文件或db中,而您的数据则相对较小(因为它说hadoop通常用于当您的TB中有非常大的数据时使用)那么你也可以看看spring-batch
  • 关于hadoop - hadoop是在单个计算机上管理数据批处理的可行解决方案吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31001925/

    10-10 01:09
    查看更多