Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用Map Reduce和Hadoop来并行处理批处理作业?_Hadoop_Parallel Processing_Mapreduce - Fatal编程技术网

是否可以使用Map Reduce和Hadoop来并行处理批处理作业?

是否可以使用Map Reduce和Hadoop来并行处理批处理作业?,hadoop,parallel-processing,mapreduce,Hadoop,Parallel Processing,Mapreduce,我们的组织有成百上千的批处理作业在一夜之间运行。其中许多工作需要2、3、4小时才能完成;有些甚至需要7小时。目前,这些作业在单线程模式下运行,因此我们提高性能的尝试受到机器垂直扩展和额外CPU和内存的限制 我们正在探索利用并行处理技术(如Map Reduce)来缩短完成这些工作所需的时间的想法。我们的大多数批处理过程通常从数据库中提取大型数据集,逐行处理数据,并将结果作为文件转储到另一个数据库中。在大多数情况下,对单个行的处理独立于其他行 现在,我们正在研究Map-Reduce框架,以将这些作业

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

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

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

我们需要什么来让它工作?Hadoop是唯一需要的组件吗?我们也需要HBase吗?我们对所有不同的产品都有点困惑,需要一些帮助


谢谢

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

您所描述的是完全可能的,但我认为在现阶段选择Map Reduce这样的特定编程模型可能还为时过早

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

可能还有其他类似的“机会主义计算”系统,也许其他人也可以推荐它们。您也可以使用其他集群解决方案,并使用传统的排队系统来运行作业(sge、rocks等),但大多数集群解决方案都假设这些机器总是属于他们的


至于MapReduce,如果您的大部分计算都是以(独立访问数据库)的形式进行的→ (独立计算)→ (将独立行放在第二个DB中),我认为MapReduce甚至可能对于您想要的东西来说是杀伤力过大。您可能可以编写一些脚本,将作业划分为各个任务,并单独运行它们,而不需要整个MapReduce系统及其关联的非常特殊的文件系统的开销。但如果您愿意,可以在一些调度/资源管理器类型的系统(如condor)上运行mapreduce。condor之上的Hadoop有。

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

您所描述的是完全可能的,但我认为在现阶段选择Map Reduce这样的特定编程模型可能还为时过早

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

可能还有其他类似的“机会主义计算”系统,也许其他人也可以推荐它们。您也可以使用其他集群解决方案,并使用传统的排队系统来运行作业(sge、rocks等),但大多数集群解决方案都假设这些机器总是属于他们的


至于MapReduce,如果您的大部分计算都是以(独立访问数据库)的形式进行的→ (独立计算)→ (将独立行放在第二个DB中),我认为MapReduce甚至可能对于您想要的东西来说是杀伤力过大。您可能可以编写一些脚本,将作业划分为各个任务,并单独运行它们,而不需要整个MapReduce系统及其关联的非常特殊的文件系统的开销。但如果您愿意,可以在一些调度/资源管理器类型的系统(如condor)上运行mapreduce。condor之上的Hadoop有。

有趣的是,我们也想到了它。台式机是否在linux上运行并且有足够的磁盘空间?重要提示:在存储需要处理的数据时要非常小心。在我看来,桌面的可用性太低,无法存储此类数据。还可以看到:@Thomas:Windows机器,@Niels:我们所有的数据都驻留在Oracle和Sybase中。我们不打算将数据转移到这些区域之外,除非数据准备由MR框架处理。即使桌面在处理过程中断电,MR框架是否会识别节点上发生的故障并尝试重新处理来自该节点的数据?我以为MR应该是强壮的?有趣的是,我们也想到了。台式机是否在linux上运行并且有足够的磁盘空间?重要提示:在存储需要进行proc的数据时要非常小心