补充不是替代:Hadoop的使命与局限

Hadoop不会替代企业现有的数据基础设施,而是会对现有数据基础设施进行有益的补充。与熟悉Hadoop原理同等重要的是,我们应该熟悉它到底能够在企业中发挥哪些作用,以及部署它的最佳方式。

能够在业务中利用大数据是非常具有诱惑力的。目前,同类产品中还没有任何一款产品的魅力超过了Apache Hadoop。这一可扩展的数据存储平台是许多大数据解决方案的核心。通过了解Hadoop能够做哪些事情,不能够做哪些事情,你将更了解如何更好地在数据中心或云上部署它们。下面,我们就将为大家介绍一些Hadoop部署中的最佳实践。

Hadoop无法做的事

对于Hadoop是什么我们就不花时间进行详细介绍了,因为大量的资料和媒体对它们的介绍已经足够详尽。我们需要说的是,清楚Hadoop的两个重要组件非常重要:Hadoop分布式文件系统和MapReduce架构。前者专门用于存储,后者可让你分析存储在Hadoop中的任何数据。值得关注的是,这些数据不一定非得是结构化的数据。它们可以让Hadoop分析和处理来自社交媒体、文档和图表等来源的数据,以及任何无法轻易归入行与列范畴的数据。

这并不是说你不能将Hadoop用于存储和分析结构化数据。实际上,有许多解决方案正是利用了Hadoop每TB存储成本相对低廉的优势,用它们替代传统的关系型数据库来存储结构化的数据。但是如果你的存储需求并不是那么高,那么能在Hadoop和传统关系型数据库之间迁移数据将更加具有优势。

你无法使用Hadoop处理的是交易型数据。交易型数据的特点决定其非常复杂,一个电子商务网站的交易可以分解为许多步骤,每一步都必须要被快速处理。这种应用场景并不适合于Hadoop。此外,Hadoop也不适合对延迟时间要求非常高的结构化数据集。例如,当网站选择在典型的LAMP(Linux+Apache+MySQL+Perl/PHP/Python)堆栈中使用一个MySQL数据库,因为Hadoop无法满足其速度需求。

Hadoop能做的事

由于具有批处理能力,Hadoop应该被部署在索引的建立、模式识别、建立推荐引擎和情感分析等环境中。在这些环境中,数据被大量生成并存储在Hadoop中,可以通过MapReduce功能被查询。但是这并不是说,Hadoop应该替代数据中心中现有的组件。相反,Hadoop应该被整合到企业现有的IT基础设施中,以充分利用流入企业的海量数据。

让我们来看看处理商业交易的典型非Hadoop企业网站目前的做法。Cloudera教育服务总监Sarah Sproehnle表示,在“夜航模式”下,来自客户流行网站的日志要经历ETL(提取、转换和加载)流程,将数据存储在数据仓库之前需要花费三个小时的时间。这时存储程序将被启动,但是仍需再过两个小时,清洗后的数据才能被存入到数据仓库之中。最终数据集的大小只有最初大小的五分之一。这意味着,如果对整个原始数据集做任何调整,都会导致数据的丢失。

然而,当把Hadoop整合到企业的IT架构中后,你在数据管理方面所投入的时间和精力将会更具效率。取代执行ETL操作的是,来自Web服务器的日志数据把整体数据直接发送到Hadoop的HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)中。日志数据需要经过相同的清洗程序,但是目前仅使用MapReduce。一旦被清洗,数据就会被发送至数据仓库中。这一操作速度更快,要归功于ETL环节的取消,以及MapReduce处理的速度。所有数据仍将存储在Hadoop中,并时刻为今后网站运营者的任何额外查询做好准备。

问题的关键是我们需要正确地认识Hadoop。它不应该被视为现有基础设施的替代者,相反应该被视为提升数据管理与存储能力的新工具。通过使用Apache Flume或是Apache Sqoop等工具,你能够将现有的系统与Hadoop连接在一起,无论数据大小都能够被处理。Apache Flume能够将数据从传统关系型数据库提取到Hadoop中,或是将数据从Hadoop中提取到关系型数据库中;Apache Sqoop则能够实时将系统日志提取至Hadoop中。你所需要做的是增加Hadoop的节点,以进行存储与处理。