大数据革命正以Apache Hadoop为中心如火如荼的进行着。自从开源分布式数据处理平台在5年前发布时讨论之声就不绝于耳。在过去的一年中,Hadoop赢得了客户的认可,并得到众多商业化的支持以及众多数据库和数据集成软件商的整合。
Hadoop可以管理结构化数据,以及诸如服务器日志文件和Web点击流的数据。同时还可以管理以非结构化文本为中心的数据,如Facebook和Twitter。这种处理多类型数据的能力非常重要。它催生了NoSQL平台和产品。如Cassandra, CouchDB, MongoDB以及Oracle最新的NoSQL数据库。
而传统关系型数据库如Oracle,IBM DB2,Microsoft SQL Server和MySQL则都不能处理混合数据类型和非结构化数据。由于事务处理灵活性的需求,Hadoop获得大多数数据分析厂商的关注和支持。展望未来,在未来的3到5年,大数据已经成为私人和公共组织的战略关键。事实上,在未来5年预计有50%的大数据项目会在Hadoop框架下运行。
Hadoop主要组件包含:
Hadoop:Java编写的软件框架,以支持数据密集型分布式应用
ZooKeeper:高可靠性分布式协调系统
MapReduce:针对大数据的灵活的并行数据处理框架
HDFS:Hadoop分布式文件系统
Oozie:负责MapReduce作业调度
HBase:Key-value数据库
Hive:构建在MapRudece之上的数据仓库软件包
Pig:Pig是架构在Hadoop之上的高级数据处理层。Pig Latin语言为编程人员提供了更直观的定制数据流的方法。
Sqoop和Flume:可改进数据的互操作性和其余部分。Sqoop功能主要是从关系数据库导入数据到Hadoop,并可直接导入到HFDS或Hive。而Flume设计旨在直接将流数据或日志数据导入HDFS。
Mahout:Mahout提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括集群、分类、推荐过滤、频繁子项挖掘。
Ambari:Ambari是最新加入Hadoop的项目, Ambari可帮助系统管理员部署和配置Hadoop,升级集群以及监控服务。还可通过API集成与其他的系统管理工具。
MapReduce
MapReduce作为Hadoop的核心是一种处理大型及超大型数据集(TB级别的数据。包括网络点击产生的流数据、日志文件、社交网络等所带来的数据)并生成相关的执行的编程模型。其主要思想是从函数式编程语言借鉴而来的,同时也包含了从矢量编程语言借鉴的特性。
Google在2004年创造了MapReduce,而从MapReduce到Hadoop这其中经历了一个有趣的转变。MapReduce最初是帮助搜索引擎公司应对万维网所带来的创建索引时产生的大量数据。Google最初也招募了一些硅谷的精英,并雇用了大批的工程师来完善MapReduce。并快速将技术应用在相关的行业之中,如金融、零售等。Goolge曾拿出MapReduce的部分相关信息与Nutch团队分享,以开发开源版本“Hadoop”。但Yahoo则将Nutch收入到旗下。Yahoo在2007年将其发展成Hadoop开源项目。Hadoop现在越来越多的用于大数据的大规模并行数据处理引擎。
MapReduce系统获得成功的原因之一是它为编写需要大规模并行处理的代码提供了简单的编程模式。它受到了Lisp的函数编程特性和其他函数式语言的启发。MapReduce和云计算非常相配。MapReduce的关键特点是它能够对开发人员隐藏操作并行语义 — 并行编程的具体工作方式。
(责任编辑:吕光)