我们将购买一些新的硬件,仅用于Hadoop集群,而我们仍然坚持要购买什么。 假设我们有$ 5k的预算,那么我们应该购买两台超级好机器,每台2500美元,四台每台1200美元左右,八台每台600美元左右。 用更慢的机器或最less的机器,Hadoop工作会更好吗? 或者,就像大多数事情“取决于”一样? 🙂
如果可以的话,我会考虑利用Amazon Web Services(AWS) 弹性计算云(EC2)等云基础架构服务,至less在您确定在自己的硬件上进行投资是合理的。 很容易陷入购买闪闪发光的装备(我必须每天抵制)。 通过在云端购买之前进行尝试,您可以学到很多东西,并回答这个问题:我的公司软件X或映射/减less框架与这个数据集是否最适合小型,中型或大型服务器集。 我在AWS上运行了一些组合,几天之内就可以在美元上进行升值,降息,进出。 我们对testing非常满意,所以我们决定继续使用AWS,并放弃购买一大堆我们必须冷却,耗电,维护等等的机器。 实例types的范围从:
标准实例
高CPU实例
高CPU中型实例1.7 GB内存,5个EC2计算单元(2个虚拟核心,每个EC2计算单元2.5个),350 GB实例存储,32位平台
高CPU超大型实例7 GB内存,20个EC2计算单元(8个虚拟核心,每个EC2计算单元2.5个),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爱记忆。 您拥有的核心越多,您可以同时运行的作业stream程就越多。
我认为这将取决于你的工作量。 你的工作如何分配? 更大的块可能会有利于less数快速的服务器,因为更小的工作可能会更喜欢更慢的机器。
这完全取决于你的工作量。 你的任务是否高度平行? 还是它有一个大的串行组件? 如果它的规模很好,你应该尽可能多地获得你的钱。 如果它不能很好地扩展,那么你应该find缩放比例下降的点。 然后尝试购买最强大的CPU,你可以为这个核心数量。
这只是一个普遍的指导原则,但是我不认为Hadoop有什么特殊之处,它给了它超越任何其他并行化框架的特殊要求。
请记住,非常小的Hadoop集群不能很好地工作,特别是在故障情况下。 问题在于许多启发式algorithm都是假定群集将有20台以上的机器。 其中的一些启发式algorithm在很小的集群上就会失败。
一个很好的例子(甚至在最近的版本中可能还没有被修复)是当你写一个块时会发生什么。 假设复制= 3,随机select三个节点来承载副本。 如果其中一个节点在写入期间发生故障,则为不同的随机三个节点查询namenode。 在一个大的集群上,新的三个节点包含故障节点的概率可以忽略不计,但是在一个非常小的集群,比如6个节点上,发生故障的节点很可能会在新的列表中。 写入将再次失败,甚至可能再次失败。 这足以保住这份工作。 修复是显而易见的,但是对于大多数提交者来说,它很快就可以被整合。
Hadoop实际上还没有企业级的发行版,它可以满足所有的可扩展性。 也许不久,但还没有。
使用EC2 / EMR的build议,直到你清楚你的需求是一个很好的。 它不仅可以让你更好地理解你的约束和需求,而且可以让你拥有比你所谈论的要多得多的集群。