在我的情况下,Hadoop会给我更多的好处吗?

时间:2011-08-02 23:03:54

标签: xml clojure jvm hadoop mapreduce

我正在使用Clojure每小时提取10个XML文件,每个文件大约10 MB。此脚本在服务器计算机上运行 XML文件现在被解析并存储到RDBMS中(所有这些都是使用本机Clojure代码完成的。)

考虑到我的情况,如果我使用Hadoop Map / Reduce解析XML文件,我会获得更多好处吗?或者它会有点矫枉过正?

2 个答案:

答案 0 :(得分:8)

在这种情况下,使用Hadoop绝对是一种过度杀伤力。如果你使用Hadoop来解析10个文件,那么就等了

  • 它将从每个Map任务中生成10个JVM
  • 它可以为reduce任务生成另外一个JVM(当然你可能只有一个地图hadoop作业,你不需要减少阶段)
  • 在Map和Reduce阶段之间会有一个随机播放阶段,所有Map输出都通过网络发送到reduce节点

如果你的文件最多都是10 Mb,那么我没有看到太多的优势,你将从JVM启动和过多的IO中获得显着的开销。

我想你应该在每个文件交叉100-150 Mb时考虑Hadoop

答案 1 :(得分:3)

我有两个可用于比较的clojure示例:

  • 1个应用程序解析数千个xml文件,每个文件大约1Mb或更少,并且在正常负载下处理大约50ms。
  • 另外一个应用程序在相对较大的日志文件上处理,每个文件50mb-100mb,处理大约每1-2秒。

当然,这取决于服务器的处理能力,但一切都是在clojure中完成的,没有任何瓶颈。