我们将购买一些仅用于 Hadoop 集群的新硬件,但我们仍然坚持应该购买什么。假设我们有 5000 美元的预算,我们应该购买两台 2500 美元/台的超级好机器,四台 1200 美元左右的机器,还是八台 600 美元左右的机器?hadoop 会在更慢的机器或最少的更快的机器上更好地工作吗?或者,就像大多数事情一样“取决于”?:-)
5 回答
Hadoop 获得一些不那么强大的额外机器通常会更好。您几乎从未见过具有超过 16GB 内存和双四核 CPU 的数据节点,而且它们通常比这更小。
您总是必须运行一个作为名称节点(主节点),并且通常您不会在同一个盒子上运行一个数据节点(工作者/从节点),尽管您可以,因为您的集群很小。但是,假设您不这样做,那么获得 2 台机器将只留下 1 个工作节点,这在某种程度上违背了目的。(不完全是,因为您仍然可以在从属设备上并行运行 4-8 个作业,但仍然如此。)
同时,您不希望拥有 1000 个 486 的集群。如果你的预算是 5000 美元,我会权衡一下,做 4 台 1200 美元的机器。这些将在个人性能方面提供一个不错的基准,您将有 3 个数据节点来分配工作,并且如果您需要,您将有空间来扩展您的集群。
需要记住的事情:您需要在每个数据节点上运行多个 map 或 reduce 任务,这意味着多个 JVM 同时运行。我会尝试获得至少 4GB,最好是 8GB 内存。CPU 不太重要,因为大多数 MR 作业都是 IO 绑定的。您可能会以 1200 美元的价格目标获得这样的机器,所以这是我的投票。
简而言之,您希望最大限度地增加处理器内核和磁盘的数量。你可以牺牲可靠性和质量,但不要买最便宜的硬件,因为你会遇到太多的可靠性问题。
我们选择了戴尔 2xCPU 4 核戴尔服务器,因此每盒 8 个内核。每盒 16GB 内存,即每核 2GB,有点低,因为您的任务和磁盘缓冲都需要内存。5x500GB 硬盘驱动器,我希望我们选择 TB 或更高的驱动器。
对于驱动器,我的意见是购买更便宜、速度慢、不可靠、大容量的驱动器,而不是购买更昂贵、更快、更小、更可靠的驱动器。如果您在磁盘吞吐量方面遇到问题,更多内存将有助于缓冲。
这可能是比您所看到的更强大的配置,但是最大化内核和驱动器而不是购买更多的盒子通常是一个不错的选择 - 更少的电力成本,更易于管理,并且对于某些操作来说更快。
更多驱动器意味着每个内核的同时磁盘吞吐量更高,因此拥有与内核一样多的驱动器是一件好事。基准测试似乎表明 RAID 配置比 JBOD 配置慢(只需安装驱动器并让 Hadoop 在它们之间分散负载),而且 JBOD 也更可靠。
最后的!确保获得 ECC 内存。Hadoop 通过内存推送 TB 级数据,一些用户发现非 ECC 内存配置偶尔会在 TB 级数据集中引入单比特错误。调试这些错误是一场噩梦。
我建议看看这个演示文稿:http://www.cloudera.com/hadoop-training-thinking-at-scale 这里描述了各种赞成和反对的观点。
我认为答案还取决于您对集群增长的期望以及您正在使用的网络技术。如果您对 1GB 以太网没问题 - 那么机器类型就不那么重要了。同时——如果你想要 10GBit 以太网——你应该选择更少数量的更好的机器来降低网络成本。
另一个参考:http ://hadoopilluminated.com/hadoop_book/Hardware_Software.html (免责声明:我是这本免费hadoop书的合著者)