Hadoop拥有一个庞大而且充满活力的开发者社区,但Hadoop生态系统当中的很多项目在名称与功能的匹配性方面出入很大,这直接导致很多朋友难以分清各个项目的作用以及使用目的。
作为Hadoop的构建核心,HDFS与MapReduce是无法回避的两大要素。不过开发者及企业做出的大量贡献让Hadoop成为一套更为复杂的平台。生态系统中的一部分项目属于Apache基金会项目(在下图中以‘A’作为标注),另一些则属于具备Apache许可、但却由企业负责运作(在下图中以‘AL’作为标注)的项目。
在今天的文章中,我们将对Hadoop的发展历程做一番回顾,看看如今其阵容之中包含着哪些“猛将”。
能做什么: 作为Hadoop的文件系统或者存储机制。
有何帮助: 创建一套重复性、可容错且可扩展的文件系统,旨在处理大型文件。利用数据位置提高MapReduce任务的数据输入性能。
能做什么: 一款高度可扩展的数据库。
有何帮助: 允许我们以线性方式对数据库进行扩展。提供可进行调节的数据一致性级别控制。
能做什么: 利用HDFS创建高度可扩展性数据库。
有何帮助: 实现高度可扩展特性与随机访问。利用HDFS保障严格的数据一致性。
能做什么:帮助分布式节点之间的数据实现同步 。
有何帮助: 对集群中所有节点之间的一致性分布式小规模数据进行维护。
#p#
能做什么: 将一项工作拆分为多个任务并同时加以实施。
有何帮助: 框架会对分布式系统当中的疑难组件进行抽象化处理,允许系统同时处理大量数据。
能做什么: 允许用户通过查询语言来处理数据。
有何帮助: 帮助SQL程序员通过创建类SQL查询以使用MapReduce。
能做什么: 在大规模数据当中实现低延迟查询。
有何帮助: 帮助SQL程序员通过创建类SQL查询以提高大数据访问速度。
能做什么: 利用数据流或者脚本类语言进行数据处理。
有何帮助: 帮助程序员利用数据流语言发挥MapReduce功能。
能做什么: 利用预先编写的库在MapReduce中运行机器学习算法。
有何帮助: 允许用户通过库创建MapReduce建议与集群。利用现有代码加快开发速度。
能做什么: 利用预先编写的库在MapReduce中运行图形算法。
有何帮助: 用户不必再为了使用MapReduce而重新编写图形算法。利用现有代码加快开发速度。
能做什么: 运行测试以验证MapReduce工作功能的正确性。
有何帮助: 运行程序测试以验证MapReduce程序运作的正确性。提供对象,允许用户模拟输入流程以验证执行结果。
#p#
能做什么: 提供简便方式以实现MapReduce工作数据的输入与输出。
有何帮助: 创建域对象以存储数据。简化MapReduce工作数据的序列化与反序列化。
能做什么: 在关系型数据库与Hadoop之间实现数据移动。
有何帮助:允许数据从关系型数据库转移到Hadoop当中,以备后期处理。将数据输出结果从MapReduce工作中提取出来并移回关系型数据库。
能做什么: 以可扩展方式处理大量日志数据。
有何帮助: 将大量日志数据转移到HDFS当中。由于Flume拥有的扩展性,因此能够处理大量传入数据。
能做什么: 允许用户通过网络浏览器与Hadoop集群进行交互。
有何帮助: 用户能够更轻松地与Hadoop集群实现交互。细化权限设定帮助管理员对用户进行配置。
能做什么: Hadoop中的复杂工作流的创建任务更加便捷。
有何帮助: 允许用户利用Hive、pig以及MapReduce等其它项目创建复杂工作流。内置逻辑允许用户按预定步骤处理故障。
英文原文:http://www.networkworld.com/slideshow/124977/sizing-up-the-hadoop-ecosystem.html#slide1