可以使用Map Reduce和Hadoop并行处理批处理作业



我们的组织有数百个通宵运行的批处理作业。其中许多工作需要2、3、4个小时才能完成;有些甚至需要长达7个小时。目前,这些作业在单线程模式下运行,因此我们提高性能的尝试受到机器垂直扩展和额外CPU和内存的限制。

我们正在探索利用并行处理技术(如Map Reduce)来缩短完成这些工作所需的时间的想法。我们的大多数批处理过程通常从数据库中提取大型数据集,逐行处理数据,并将结果作为文件转储到另一个数据库中。在大多数情况下,对单个行的处理独立于其他行。

现在,我们正在研究MapReduce框架,将这些作业分解为更小的部分进行并行处理。我们的组织有400多名员工的台式电脑,我们希望在非工作时间使用这些机器作为并行处理网格。

我们需要什么才能让它发挥作用?Hadoop是唯一需要的组件吗?我们也需要HBase吗?我们对所有不同的产品有点困惑,需要一些帮助。

感谢

这里有几个问题——关于MapReduce,以及如何使用400台PC完成这项工作。

你所描述的肯定是可能的,但我认为在现阶段选择像MapReduce这样的特定编程模型可能还为时过早。

让我们首先考虑使用400台台式机的想法。原则上,这是完全可行的。它也有自己的挑战——例如,请注意,让一堆台式机在一夜之间运行永远不会像专用集群节点那样高效。桌面节点不如集群节点可靠——有些节点可能被关闭,有些节点可能存在网络问题,有些节点仍在运行,这会减慢计算工作的速度。但是有一些框架可以解决这个问题。我熟悉的是秃鹰,它正是利用这种情况而得名的。它在windows和linux上运行(在混合环境中运行良好),非常灵活;即使在白天,你也可以让它自动利用未使用的机器。

很可能还有其他这样的"机会计算"系统,也许其他人也可以提出。你也可以使用其他集群解决方案,并使用传统的排队系统来运行你的作业(sge、rocks等),但大多数都认为机器总是他们的。

至于MapReduce,如果你的大部分计算都是(独立访问数据库)→(独立计算)→(将独立行放入第二个DB中),我认为MapReduce甚至可能对您想要的内容过于夸张。您可能可以编写一些脚本,将作业划分为单独的任务,并单独运行它们,而不需要整个MapReduce系统及其相关的特定文件系统的开销。但如果你愿意,你可以在一些调度/资源管理器类型的系统上运行mapreduce,比如condor。基于condor的Hadoop有着悠久的历史。

相关内容

  • 没有找到相关文章

最新更新