我正在使用Clojure每小时提取10个XML文件,每个文件大约10 MB.此脚本在服务器计算机上运行.
XML文件现在被解析并存储到RDBMS中(所有这些都是使用本机Clojure代码完成的).
考虑到我的情况,如果我使用Hadoop Map/Reduce解析XML文件,我会获得更多好处吗?还是会有点矫枉过正?
在这种情况下使用Hadoop绝对是一种矫枉过正.如果你使用Hadoop解析10个文件,平行,
它会从每个Map任务中生成10个JVM
它可能会为reduce任务产生一个以上的JVM(当然,你可能只有一个地图hadoop作业,你不需要减少阶段)
在Map和Reduce阶段之间会有一个shuffle阶段,所有Map输出都通过网络发送到reduce节点
如果你的文件都是10 Mb的最大值,那么我没有看到太多的优势,你将从JVM启动和过多的IO中获得显着的开销.
我想你应该考虑Hadoop一旦你跨越每个文件100 - 150 Mb