但是尽管Hadoop颇具吸引力,想了解Hadoop能够为企业扮演什么角色、如何最有效地部署它,仍要面临一条很陡的学习曲线。换句话说,学起来很费劲。只有明白了Hadoop的有所为而有所不为,你才能更清楚地了解如何才能最有效地把它部署到你自己的数据中心或云环境。然后,才可以为部署的Hadoop落实最佳实践。
使用大数据技术有着强烈的吸引力,而如今没有比Apache Hadoop更诱人的大数据技术了,这种可扩展的数据存储平台是许多大数据解决方案的核心。
但是尽管Hadoop颇具吸引力,想了解Hadoop能够为企业扮演什么角色、如何最有效地部署它,仍要面临一条很陡的学习曲线。换句话说,学起来很费劲。
只有明白了Hadoop的有所为而有所不为,你才能更清楚地了解如何才能最有效地把它部署到你自己的数据中心或云环境。然后,才可以为部署的Hadoop落实最佳实践。
Hadoop的有所不为
我们不打算花大量的时间来解释何谓Hadoop,因为许多技术文档和媒体报道已对此作了深入介绍。一言以蔽之,知道Hadoop的两个主要组件很重要:一个是用于存储的Hadoop分布式文件系统(HDFS),另一个是MapReduce框架,让你可以对Hadoop里面存储的任何数据执行批量分析任务。值得一提的是,这种数据不一定是结构化数据,这使得Hadoop非常适合分析和处理来自社交媒体、文档和图形等来源的数据:即并不容易适用于行和列的任何数据。
这倒不是说,你无法将Hadoop用于结构化数据。实际上,市面上有许多解决方案可以充分利用Hadoop的这个优点:每TB比较低的存储开支,以便将结构化数据存储在Hadoop中,以取代关系数据库系统(RDBMS)。但是如果你的存储需求不是那么大,那么在Hadoop和RDBMS之间来回转移数据毫无必要。
你不想使用Hadoop的一个方面是事务型数据。顾名思义,事务型数据异常复杂,因为电子商务网站上的交易事务会生成许多步骤,而这些步骤都必须迅速加以实现。这种场景根本就不适合使用Hadoop。
Hadoop也不适合用于要求延迟时间极短的结构化数据集,比如当网页由典型的LAMP堆栈中的MySQL数据库来呈现时。这需要速度快,而Hadoop很难满足这样的要求。
Hadoop的有所为
由于批量处理功能,Hadoop应该部署在这些场合:索引编制、模式识别、推荐引擎建立和情绪分析;在所有这些场合下,数据大量生成,存储在Hadoop中,然后最终使用MapReduce函数来进行查询。
但是这并不意味着,Hadoop会取代你数据中心里面目前的组件。恰恰相反,Hadoop会集成到你现有的IT基础设施里面,以便充分利用进入到贵企业的海量数据。
比如说,设想一个相当典型的非Hadoop企业网站在处理商业交易。据Cloudera的教育服务主管Sarah Sproehnle声称,来自其一个客户的流行网站的日志每天晚上都要经历抽取、转换和加载(ETL)的过程——这个过程可能最多耗时3小时,然后把数据存储到数据仓库中。这时,存储过程将被启动,另外过两小时后,被清理的数据将驻留在数据仓库中。不过,最终的数据集将只有原始大小的五分之一——这意味着,就算可以从整个原始数据集获取什么价值,现在这个价值也荡然无存了。
Hadoop集成到这家企业后,情况大为改观:节省了时间和精力。来自Web服务器的日志数据不用经历ETL操作,而是直接被完整地发送到了Hadoop里面的HDFS。然后,对日志数据执行同样的清理过程,现在只使用MapReduce任务。一旦数据清理完毕,随后被发送到数据仓库。但是这个操作要迅速得多,这归因于省去了ETL这一步,加上MapReduce操作速度快。而且,所有数据仍然保存在Hadoop里面,准备回答网站操作人员之后可能提出来的任何额外问题。
想了解Hadoop,有必要明白这个重要的一点:千万不要把它看作是取代你现有的基础设施,而是补充数据管理和存储功能的一种工具。使用Apache Flume或Apache Sqoop之类的工具,你就能把现有系统与Hadoop联系起来,并且对你的数据进行处理——不管数据有多大。Apache Flume可以将数据从RDBMS获取到Hadoop,并将数据从Hadoop获取到RDBMS;Apache Sqoop则可以将系统日志实时抽取到Hadoop。你只要为Hadoop添加节点,就可以执行数据存储和处理任务。
所需的硬件和成本
那么,我们又需要多少的硬件呢?
估计Hadoop所需的硬件有点不一样,这取决于你是在问哪家厂商。Cloudera的清单详细地列出了Hadoop的典型从属节点应该有怎样的硬件配置:
•中档处理器
•4GB至32 GB内存
•每个节点连接至千兆以太网,并配备一只万兆以太网架顶式交换机
•专用的交换基础设施,以避免Hadoop拥塞网络
•每个机器4至12个驱动器,非RAID配置方式
另一家Hadoop经销商Hortonworks的硬件规格大同小异,不过网络方面的信息来得模糊一点,那是由于任何某家企业添加到Hadoop实例的工作负载可能不一样。
Hortonworks的首席技术官Eric Baldeschwieler写道:“一条经验法则就是,要关注网络成本与计算机成本之比,网络成本尽量控制在总成本的20%左右。网络成本应包括你的整个网络、核心交换机、机架交换机和所需的任何网卡等。”
至于Cloudera,它估计每个节点所需的成本在3000美元至7000美元之间,具体取决于你确定每个节点有什么样的硬件规格。
Sproehnle也概述了一条很容易遵守的经验法则,帮助你规划Hadoop容量。由于Hadoop具有线性扩展的特性,你只要添加一个节点,就可以增加存储和处理能力。这使得规划起来简单直观。
比如说,要是你的数据每个月增加1TB,那么规划方法如下:Hadoop将数据复制三次,所以你需要3TB的原始存储空间才能容纳新增加的1TB数据。留出一点额外空间(Sproehnle估计要预留30%),以便处理数据操作;这样一来,每个月实际需要的存储空间是4TB。如果你使用4个1 TB驱动器的机器作为节点,每个月就需要一个新的节点。
好就好在,所有新的节点一旦连接上,就可以立即投入使用,从而让你的处理和存储能力增强X倍,其中X指节点的数量。
不过,安装和管理Hadoop节点其实并非易事,但是市面上有许多工具可以助你一臂之力。Cloudera 管理器、Apache Ambari(这是Hortonworks用于其管理系统的工具)和MapR控制系统都是同样卓有成效的Hadoop集群管理工具。如果你使用一套“纯粹”的Apache Hadoop解决方案,还可以关注Platform Symphony MapReduce、StackIQ Rocks + Big Data和Zettaset Data Platform等第三方Hadoop管理系统。
当然,说到为贵企业部署一款Hadoop解决方案,本文介绍的这些内容只是皮毛而已。也许最宝贵的心得在于明白这一点:Hadoop并非旨在取代你目前的数据基础设施,而是只是起到互补作用。
一旦弄清楚了这个重要的区别,就比较容易开始考虑Hadoop可以如何帮助贵企业,没必要对你现有的数据流程进行大刀阔斧的改动。