1

我有一个有 50 个节点的集群,每个节点有 8 个计算核心。如果我有一份计划强加 200 个减速器的工作,那么什么是好的计算资源分配策略可以获得更好的性能?

我的意思是在每个节点上分配 50 个节点和 4 个内核,还是为每个节点分配 25 个节点和 8 个内核更好?在什么情况下哪个更好?

4

2 回答 2

1

很难说,通常总是“越高越好”。更多的机器会更好地防止故障。

通常 Hadoop 适合商用硬件,您可以为每台服务器选择 50 个 4 核。

但是我会选择 8 核,如果它们有更好的硬件,例如更高的 CPU 频率、DDR3 RAM 或 10k rpm 磁盘。

于 2011-10-10T14:01:06.477 回答
1

要回答您的问题,这取决于几件事。在我看来,50 个节点总体上会更好:

  • 如果您要从磁盘读取大量数据,则 50 个节点会更好,因为您会将磁盘加载并行化 2 倍。
  • 如果您要计算和处理大量数据,则 50 个节点会更好,因为内核数量不会随着处理的比例达到 1:1(即 2 倍的内核数量并没有 2 倍的速度……同时,更多处理器的比例确实接近 1:1)。
  • Hadoop 必须在这些节点上运行诸如 TaskTracker 和 DataNode 进程之类的东西,以及操作系统层的东西。那些“占用”核心也是如此。

但是,如果您主要关心的是网络,以下是拥有 50 个节点的一些缺点:

  • 很可能,50 个节点将超过两个机架。他们是在一个平面网络上还是你必须处理 iter-rack 通信?您必须相应地设置 Hadoop;
  • 支持 50 个节点的网络交换机将比支持 25 个节点的网络交换机更昂贵;
  • map 和 reduce 之间的网络 shuffle 将导致 switch 为你的 50 节点集群做更多的工作,但仍然会通过网络传递大约相同数量的数据。

即使有这些网络问题,我想你会发现 50 个节点更好,因为一个节点的价值不仅仅是核心数。您必须主要考虑您拥有多少磁盘。

于 2011-10-10T14:23:47.183 回答