如何为Hadoop集群选择最合适的硬件?
中关村在线 12年12月29日 00:50 【转载】 作者:zol 责任编辑:唐蓉
导读: 我们的客户开始使用Hadoop时的第一个问题是如何为他们的Hadoop集群选择合适的硬件。这个博客介绍Hadoop管理员需要考虑的各种因素。我们也鼓励其他人根据他们的经验决定Hadoop集群配置。虽然Hadoop设计在工业标准硬件上运行,建议一个理想的集群配置不只是提供硬件规格列表那么容易。为一个给定的工作负载选择硬件来实现性能和经济的最佳平衡,需要测试和验证。例如,IO密集型工作负载的用户将投资更多中等性能CPU。在这个博客,我们将讨论工作负载评价和它在硬件选择中至关重要的作用。
关键词: 云计算
我们的客户开始使用Hadoop时的第一个问题是如何为他们的Hadoop集群选择合适的硬件。这个博客介绍Hadoop管理员需要考虑的各种因素。我们也鼓励其他人根据他们的经验决定Hadoop集群配置。虽然Hadoop设计在工业标准硬件上运行,建议一个理想的集群配置不只是提供硬件规格列表那么容易。为一个给定的工作负载选择硬件来实现性能和经济的最佳平衡,需要测试和验证。例如,IO密集型工作负载的用户将投资更多中等性能CPU。在这个博客,我们将讨论工作负载评价和它在硬件选择中至关重要的作用。
存储和计算的融合
在过去十年中,IT组织有标准化的刀片服务器和SAN(存储区域网络),以满足他们的网格和计算密集型工作负载。虽然这种模式对一些标准的应用,如Web 服务器,应用服务器,规模较小的结构化数据库和简单的ETL(提取,转换,装载)有很大的意义,基础设施的需求已经发生变化,数据量和用户数已经大幅增长。Web服务器现在前端使用缓存层,数据库大规模并行使用本地磁盘,ETL作业正在推动比他们可以在本地处理能力更多的数据。硬件厂商建立创新体系,以满足这些要求,包括存储刀片,SAS(串行连接SCSI)交换,外部SATA阵列和更大容量的机架单元。
Hadoop的目的是基于一种新的方法来存储和处理复杂的数据。传统方式依靠SAN满足海量存储和可靠性,然后通过刀片集合进行处理,取而代之,Hadoop在软件层面处理大数据量和可靠性。 Hadoop把数据均衡分布到集群上,通过复制副本以确保数据的可靠性和容错。因为数据和处理能力是分布在服务器上,处理指令可以直接发送到存储数据的服务器。由于在Hadoop集群的每个服务器上存储和处理数据,他们需要进行配置,以满足数据存储和处理要求。
工作负载压力问题
在几乎所有情况下,MapReduce作业会遇到瓶颈,或者是从磁盘或从网络(作为IO密集工作)读取数据,或者是计算数据(CPU密集任务)。IO密集工作的一个例子是排序,这就需要非常小的计算(简单的比较)和大量的读取和写入磁盘。CPU密集型的工作的一个例子是分类,其中一些输入数据需要非常复杂的方式计算来确定一个实体。
这里有几个IO密集型工作例子:
1.索引
2.搜索
3.分组
4.解码/解压缩
5.数据导入和导出
这里有几个CPU密集型工作例子:
1.机器学习
2.复杂的文本挖掘
3.自然语言处理
4.特征提取
为了充分优化他们的Hadoop硬件,我们的客户需要了解他们的工作负载,在开始的时候,我们经常面临典型的鸡和蛋的问题。大部分团队在建立一个 Hadoop集群时还不知道他们的工作负载特征,往往运行Hadoop的第一个任务,和他们熟练精通之后的使用方式大相径庭。此外,有些工作负载可能会受 到无法预料的方式限制。例如,有时理论上IO密集型工作实际上可能因为用户选择了压缩方式而变为CPU密集型。有时可能使用不同算法改变了 MapReduce作业的限制。由于这些原因,当团队不熟悉需要运行的工作负载特点时,他们运行一个平衡型的Hadoop集群是有道理的。一旦他们在平衡 型集群上开始运行,团队可以建立MapReduce作业的基准,逐步了解他们的特点。
通过全面监控Hadoop集群,直接测量实际工作负载和确定瓶颈所在。我们建议在所有Hadoop机器上安装Ganglia提供实时统计,有关 CPU,磁盘和网络负载。安装了Ganglia,Hadoop的管理员可以运行自己的MapReduce作业,并检查Ganglia仪表盘来观察每一台机器执行情况。
除了与工作负载适配的集群建设,我们鼓励客户能够与硬件厂商探讨和了解供电和制冷的经济选择方案。由于Hadoop需要运行几十,几百或上千个节点,投资于低功耗硬件,一个运营团队可以节省相当数量的钱。每个硬件厂商都能够提供如何监控供电和制冷的工具和建议。