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

Architecture 在单个服务器上映射/减少,architecture,mapreduce,sharding,Architecture,Mapreduce,Sharding,在非分片架构上进行map/reduce有意义吗 或者,换句话说,在一台服务器上运行是否有效。对于MapReduce,我认为您指的是Hadoop。还有其他支持MapReduce范例的语言和框架。以下是我对Hadoop的看法 单台服务器上的Hadoop适合用于测试目的(和) 当Hadoop在单个服务器上运行时,固有的功能(如容错)就会丢失,因为如果服务器宕机,那么与服务器相关的所有数据都会丢失。此外,当数据较小且计算量较少时,与实际处理相比,Hadoop会有很多开销 当使用单台服务器时,最好不要使用

在非分片架构上进行map/reduce有意义吗


或者,换句话说,在一台服务器上运行是否有效。

对于MapReduce,我认为您指的是Hadoop。还有其他支持MapReduce范例的语言和框架。以下是我对Hadoop的看法

单台服务器上的Hadoop适合用于测试目的(和)

当Hadoop在单个服务器上运行时,固有的功能(如容错)就会丢失,因为如果服务器宕机,那么与服务器相关的所有数据都会丢失。此外,当数据较小且计算量较少时,与实际处理相比,Hadoop会有很多开销


当使用单台服务器时,最好不要使用Hadoop(它是为分布式计算而设计的)。

总的来说,我不同意Praveen的观点

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

在许多情况下,使用Hadoop工具包比不使用Hadoop有优势

  • 您不必担心输入文件的大小。如果您的输入数据是多GiB,那么您仍然可以在只有512MB系统RAM可用的系统上运行它
  • 使用该平台,您可以使数据处理应用程序以多线程方式运行,而无需深入创建线程。您只需将应用程序部署到平台的另一个实例上
  • 您可以在多个系统上向外扩展。当您的应用程序达到该级别时,实现真正的水平可伸缩性的步骤非常简单
  • 当您使用Hadoop编写处理应用程序时,您有几个运行它的选项:

  • 使用本地文件系统在单个机箱上实现单线程。通过这种方式,它只是一个将输入转换为输出的命令行Java应用程序
  • 只需使用本地文件系统在单个框上设置jobtracker/tasktracker。有关更多信息,请参阅此stackoverflow问题:
  • 在单个系统上完全启动(模式)
  • 全面的多系统设置

  • 你对哪一点有不同意见?最初的查询是
    在非分片架构上进行map/reduce有意义吗。。。。在单个服务器上
    ,没有进一步扩展的必要。直截了当地说,Hadoop在一个单独的盒子上是一种过度杀伤力,因为它的开销太大了。Hadoop就像一个具有非分片架构的单盒电钻。在我的笔记本电脑上,对于相同的功能,一个简单的grep在伪分布式模式下比Hadoop快5-10倍。我不认为调整它会使它变得更好。Hadoop也有一个陡峭的学习曲线。Hadoop在单个系统上运行时会有开销。然而,即使只在单个系统上运行,它也可以轻松地处理较大的数据集。因此,我不同意您的结论,即在单个服务器上运行时不使用Hadoop。我已经发表了几个论据来支持这一观点。对于大数据集,磁盘读取速度将是这项工作的瓶颈(服务器上的多个主轴在某种程度上会有所帮助)。这就是Hadoop中数据分布在1+个节点上的原因之一。此外,还有很多IPC(JobTracker TaskTracker和NameNode DataNode)。这是一个需要长时间讨论的话题,但我仍然不同意单台服务器上的Hadoop值得付出努力。