Ryan Detzel Asked: 2009-06-18 12:56:16 +0800 CST2009-06-18 12:56:16 +0800 CST 2009-06-18 12:56:16 +0800 CST Hadoop 集群。2 台快速、4 台中等、8 台较慢的机器? 772 我们将购买一些仅用于 Hadoop 集群的新硬件,但我们仍然坚持应该购买什么。假设我们有 5000 美元的预算,我们应该购买两台 2500 美元/台的超级好机器,四台 1200 美元左右的机器,还是八台 600 美元左右的机器?hadoop 会在更慢的机器或最少的更快的机器上更好地工作吗?或者,就像大多数事情一样“取决于”?:-) hardware cluster hadoop 4 个回答 Voted Best Answer Shaun Hess 2009-06-18T17:13:02+08:002009-06-18T17:13:02+08:00 如果可以的话,我会考虑使用像Amazon Web Services (AWS) Elastic Compute Cloud (EC2)这样的云基础设施服务,至少在您确定投资自己的硬件是有意义的之前。购买闪亮的装备很容易陷入困境(我必须每天抵制)。通过在购买云之前进行尝试,您可以学到很多东西并回答以下问题:我公司的软件 X 或针对此数据集的 map/reduce 框架是否最适合小型、中型或大型服务器集。我在 AWS 上运行了许多组合,在几天内以几美分的价格向上、向下、进出。我们对我们的测试非常满意,因此决定继续使用 AWS,并放弃购买我们必须冷却、供电、维护等的大型机器集群。实例类型包括: 标准实例 小型实例(默认)1.7 GB 内存、1 个 EC2 计算单元(1 个虚拟内核和 1 个 EC2 计算单元)、160 GB 实例存储、32 位平台 大型实例 7.5 GB 内存、4 个 EC2 计算单元(2 个虚拟内核,每个内核有 2 个 EC2 计算单元)、850 GB 实例存储、64 位平台 超大型实例 15 GB 内存、8 个 EC2 计算单元(4 个虚拟内核,每个内核有 2 个 EC2 计算单元)、1690 GB 实例存储、64 位平台 高 CPU 实例 高 CPU 中型实例 1.7 GB 内存,5 个 EC2 计算单元(2 个虚拟内核,每个内核有 2.5 个 EC2 计算单元),350 GB 实例存储,32 位平台 高 CPU 超大型实例 7 GB 内存,20 个 EC2 计算单元(8 个虚拟内核,每个内核有 2.5 个 EC2 计算单元),1690 GB 实例存储,64 位平台 EC2 计算单元 (ECU) – 一个 EC2 计算单元 (ECU) 提供相当于 1.0-1.2 GHz 2007 Opteron 或 2007 Xeon 处理器的 CPU 容量。 标准按需实例 Linux/UNIX 使用 Windows 使用 小(默认) 每小时 0.10 美元 每小时 0.125 美元 大 每小时 0.40 美元 每小时 0.50 美元 超大 每小时 0.80 美元 每小时 1.00 美元 高 CPU 按需实例 Linux/UNIX 使用情况 Windows 使用情况 中 0.20 美元/小时 0.30 美元/小时 特大 0.80 美元/小时 1.20 美元/小时 很抱歉,回答听起来像是供应商推销,但如果您的环境允许您走这条路,我认为您会很高兴,并且如果您将来购买自己的硬件,您会做出更好的购买决定。 David Pashley 2009-06-18T14:23:39+08:002009-06-18T14:23:39+08:00 我认为您不应该考虑服务器的数量,而应该考虑 CPU 内核的数量和内存量。据我所知,hadoop 喜欢记忆。您拥有的核心越多,您可以同时运行的作业进程就越多。 我认为这将取决于您的工作量。你的工作划分有多好?更少的大块可能会偏爱少数快速的服务器,而更多的小任务可能偏爱更慢的机器。 Kamil Kisiel 2009-06-18T17:38:50+08:002009-06-18T17:38:50+08:00 这完全取决于你的工作量。您的任务是否高度并行?还是它有一个大的串行组件?如果它可以很好地扩展,您应该尝试为您的钱获得尽可能多的内核。如果它不能很好地缩放,那么您应该找到缩放失败的点。然后尝试为该数量的内核购买功能最强大的 CPU。 这只是一个一般性的指导方针,但我不认为 Hadoop 有任何特定的东西可以给它提供任何其他并行化框架之外的任何特殊要求。 Ted Dunning 2010-12-05T12:13:13+08:002010-12-05T12:13:13+08:00 还要记住,非常小的 Hadoop 集群不能很好地工作,尤其是在故障情况下。问题在于,许多启发式算法都是在假设集群将拥有超过 20 台机器的情况下调整的。其中一些启发式方法在非常小的集群上根本失败。 一个很好的例子(即使在最近的版本中可能仍然没有被修复)是当你写一个块时发生的。假设复制 = 3,随机选择三个节点来托管副本。如果其中一个节点在写入期间发生故障,则查询 namenode 以查找不同的随机三个节点。在一个大集群上,新的三个节点包含故障节点的概率可以忽略不计,但在一个非常小的集群上,比如 6 个节点,故障节点很有可能出现在新列表中。写入将再次失败,甚至可能再次失败。这足以完成这项工作。修复是显而易见的,但对于大多数提交者来说,它无法快速集成的可能性太低了。 Hadoop 确实还没有一个企业级的发行版来解决全方位的可伸缩性,向上和向下。也许很快,但还没有。 在明确您的需求之前使用 EC2/EMR 的建议是一个很好的建议。它不仅可以让您更好地了解您的限制和需求,还可以让您拥有比您所说的购买更大的集群。
如果可以的话,我会考虑使用像Amazon Web Services (AWS) Elastic Compute Cloud (EC2)这样的云基础设施服务,至少在您确定投资自己的硬件是有意义的之前。购买闪亮的装备很容易陷入困境(我必须每天抵制)。通过在购买云之前进行尝试,您可以学到很多东西并回答以下问题:我公司的软件 X 或针对此数据集的 map/reduce 框架是否最适合小型、中型或大型服务器集。我在 AWS 上运行了许多组合,在几天内以几美分的价格向上、向下、进出。我们对我们的测试非常满意,因此决定继续使用 AWS,并放弃购买我们必须冷却、供电、维护等的大型机器集群。实例类型包括:
标准实例
高 CPU 实例
高 CPU 中型实例 1.7 GB 内存,5 个 EC2 计算单元(2 个虚拟内核,每个内核有 2.5 个 EC2 计算单元),350 GB 实例存储,32 位平台
高 CPU 超大型实例 7 GB 内存,20 个 EC2 计算单元(8 个虚拟内核,每个内核有 2.5 个 EC2 计算单元),1690 GB 实例存储,64 位平台
EC2 计算单元 (ECU) – 一个 EC2 计算单元 (ECU) 提供相当于 1.0-1.2 GHz 2007 Opteron 或 2007 Xeon 处理器的 CPU 容量。
标准按需实例 Linux/UNIX 使用 Windows 使用
小(默认) 每小时 0.10 美元 每小时 0.125 美元
大 每小时 0.40 美元 每小时 0.50 美元
超大 每小时 0.80 美元 每小时 1.00 美元
高 CPU 按需实例 Linux/UNIX 使用情况 Windows 使用情况
中 0.20 美元/小时 0.30 美元/小时
特大 0.80 美元/小时 1.20 美元/小时
很抱歉,回答听起来像是供应商推销,但如果您的环境允许您走这条路,我认为您会很高兴,并且如果您将来购买自己的硬件,您会做出更好的购买决定。
我认为您不应该考虑服务器的数量,而应该考虑 CPU 内核的数量和内存量。据我所知,hadoop 喜欢记忆。您拥有的核心越多,您可以同时运行的作业进程就越多。
我认为这将取决于您的工作量。你的工作划分有多好?更少的大块可能会偏爱少数快速的服务器,而更多的小任务可能偏爱更慢的机器。
这完全取决于你的工作量。您的任务是否高度并行?还是它有一个大的串行组件?如果它可以很好地扩展,您应该尝试为您的钱获得尽可能多的内核。如果它不能很好地缩放,那么您应该找到缩放失败的点。然后尝试为该数量的内核购买功能最强大的 CPU。
这只是一个一般性的指导方针,但我不认为 Hadoop 有任何特定的东西可以给它提供任何其他并行化框架之外的任何特殊要求。
还要记住,非常小的 Hadoop 集群不能很好地工作,尤其是在故障情况下。问题在于,许多启发式算法都是在假设集群将拥有超过 20 台机器的情况下调整的。其中一些启发式方法在非常小的集群上根本失败。
一个很好的例子(即使在最近的版本中可能仍然没有被修复)是当你写一个块时发生的。假设复制 = 3,随机选择三个节点来托管副本。如果其中一个节点在写入期间发生故障,则查询 namenode 以查找不同的随机三个节点。在一个大集群上,新的三个节点包含故障节点的概率可以忽略不计,但在一个非常小的集群上,比如 6 个节点,故障节点很有可能出现在新列表中。写入将再次失败,甚至可能再次失败。这足以完成这项工作。修复是显而易见的,但对于大多数提交者来说,它无法快速集成的可能性太低了。
Hadoop 确实还没有一个企业级的发行版来解决全方位的可伸缩性,向上和向下。也许很快,但还没有。
在明确您的需求之前使用 EC2/EMR 的建议是一个很好的建议。它不仅可以让您更好地了解您的限制和需求,还可以让您拥有比您所说的购买更大的集群。