在单个服务器上映射/减少

时间:2011-11-08 19:42:09

标签: architecture mapreduce sharding

在非分片架构上进行map / reduce是否有意义?

或者换句话说,在单个服务器上执行它是否有效。

2 个答案:

答案 0 :(得分:4)

总的来说,我不赞同Praveen。

是的,我同意在单个系统上运行时会丢失平台的容错属性。但是,在许多情况下,平台具有特定用途的有用属性。

在许多情况下,使用Hadoop工具包比没有Hadoop时更有优势。

  1. 您无需担心输入文件的大小。如果您的输入数据是许多GiB,那么您仍然可以在只有512MiB系统RAM的系统上运行它。
  2. 使用该平台,您可以使数据处理应用程序运行多线程,而无需深入创建线程。您只需将应用程序部署在平台的其他实例上即可。
  3. 您可以通过多个系统扩展门。当您的应用程序达到该级别时,实现真正的水平可伸缩性的步骤非常简单。
  4. 当您使用Hadoop编写处理应用程序时,您有几种运行它的选项:

    1. 使用本地文件系统在单个盒子上单线程。这样,它就是一个将输入转换为输出的命令行Java应用程序。
    2. 使用本地文件系统在一个盒子上设置jobtracker / tasktracker。有关详细信息,请参阅此stackoverflow问题:Is it possible to run Hadoop in Pseudo-Distributed operation without HDFS?
    3. 在单个系统上完成(pseudo-distributed模式)。
    4. 全面的多系统设置。

答案 1 :(得分:2)

使用MapReduce,我认为你的意思是Hadoop。还有其他语言和框架支持MapReduce范例。以下是我对Hadoop的看法。

单个服务器上的Hadoop适合测试目的(stand alonepseudo-distributed modes)。

当Hadoop在单个服务器上运行时,容错等固有功能会丢失,因为如果服务器出现故障,那么与服务器关联的所有数据都将丢失。此外,当数据量较小且计算量较小时,与实际处理相比,Hadoop的开销很大。

当选择单个服务器时,最好不要选择Hadoop(专为分布式计算而设计)。