hadoop的生态圈(1)

hadoop的历史

谈到 Hadoop 的历史,就不得不提到 Lucene 和 Nutch。Hadoop 开始时是 Nutch 的一个子项目,而 Nutch 又是 Apache Lucene 的子项目。这 3 个项目都是由 Doug Cutting 创立,每个项目在逻辑上都是前一个项目的演进。

Hadoop的生态圈

  1. Hadoop Common

    Common 为 Hadoop 的其他项目提供了一些常用工具,主要包括系统配置工具 Configuration、远程过程调用 RPC、序列化机制和 Hadoop 抽象文件系统 FileSystem 等。它们为在通用硬件上搭建云计算环境提供基本的服务,并为运行在该平台上的软件开发提供了所需的 API。

  2. Avro

    Avro 由 Doug Cutting 牵头开发,是一个数据序列化系统。类似于其他序列化机制,Avro可以将数据结构或者对象转换成便于存储和传输的格式,其设计目标是用于支持数据密集型应用,适合大规模数据的存储与交换。Avro 提供了丰富的数据结构类型、快速可压缩的二进制数据格式、存储持久性数据的文件集、远程调用 RPC 和简单动态语言集成等功能。

  3. ZooKeeper

    在分布式系统中如何就某个值(决议)达成一致,是一个十分重要的基础问题。ZooKeeper 作为一个分布式的服务框架,解决了分布式计算中的一致性问题。在此基础上,ZooKeeper 可用于处理分布式应用中经常遇到的一些数据管理问题,如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。ZooKeeper 常作为其他 Hadoop 相关项目的主要组件,发挥着越来越重要的作用。

  4. HDFS

    HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统)是 Hadoop 体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS 简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。

  5. MapReduce

    MapReduce 是一种计算模型,用以进行大数据量的计算。Hadoop 的 MapReduce 实现,和 Common、HDFS 一起,构成了 Hadoop 发展初期的三个组件。MapReduce 将应用划分为Map 和 Reduce 两个步骤,其中 Map 对数据集上的独立元素进行指定的操作,生成键 - 值对形式中间结果。Reduce 则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。MapReduce 这样的功能划分,非常适合在大量计算机组成的分布式并行环境里进行数据处理。

  6. HBase

    Google 发表了 BigTable 系统论文后,开源社区就开始在 HDFS 上构建相应的实现HBase。HBase 是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。和传统关系数据库不同,HBase 采用了 BigTable 的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。HBase 提供了对大规模数据的随机、实时读写访问,同时,HBase 中保存的数据可以使用 MapReduce 来处理,它将数据存储和并行计算完美地结合在一起。

  7. Hive

    Hive 是 Hadoop 中的一个重要子项目,最早由 Facebook 设计,是建立在 Hadoop 基础上的数据仓库架构,它为数据仓库的管理提供了许多功能,包括 :数据 ETL(抽取、转换和加载)工具、数据存储管理和大型数据集的查询和分析能力。Hive 提供的是一种结构化数据的机制,定义了类似于传统关系数据库中的类 SQL 语言 :Hive QL,通过该查询语言,数据分析人员可以很方便地运行数据分析业务。

  8. Pig

    Pig 运行在 Hadoop 上,是对大型数据集进行分析和评估的平台。它简化了使用 Hadoop进行数据分析的要求,提供了一个高层次的、面向领域的抽象语言 :Pig Latin。通过 Pig Latin,数据工程师可以将复杂且相互关联的数据分析任务编码为 Pig 操作上的数据流脚本,通过将该脚本转换为 MapReduce 任务链,在 Hadoop 上执行。和 Hive 一样,Pig 降低了对大型数据集进行分析和评估的门槛。

  9. Mahout

    Mahout 起源于 2008 年,最初是 Apache Lucent 的子项目,它在极短的时间内取得了长足的发展,现在是 Apache 的顶级项目。Mahout 的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout 现在已经包含了聚类、分类、推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。除了算法,Mahout 还包含数据的输入 / 输出工具、与其他存储系统(如数据库、MongoDB 或Cassandra)集成等数据挖掘支持架构。

  10. X-RIME

    X-RIME 是一个开源的社会网络分析工具,它提供了一套基于 Hadoop 的大规模社会网络 / 复杂网络分析工具包。X-RIME 在 MapReduce 的框架上对十几种社会网络分析算法进行了并行化与分布式化,从而实现了对互联网级大规模社会网络 / 复杂网络的分析。它包括HDFS 存储系统上的一套适合大规模社会网络分析的数据模型、基于 MapReduce 实现的一系列社会网络分析分布式并行算法和 X-RIME 处理模型,即 X-RIME 工具链等三部分。

  11. Crossbow

    Crossbow 是在 Bowtie 和 SOAPsnp 基础上,结合 Hadoop 的可扩展工具,该工具能够充分利用集群进行生物计算。其中,Bowtie 是一个快速、高效的基因短序列拼接至模板基因组工具;SOAPsnp 则是一个重测序一致性序列建造程序。它们在复杂遗传病和肿瘤易感的基因定位,到群体和进化遗传学研究中发挥着重要的作用。Crossbow 利用了 Hadoop Stream,将 Bowtie、SOAPsnp 上的计算任务分布到 Hadoop 集群中,满足了新一代基因测序技术带来的海量数据存储及计算分析要求。

  12. Chukwa

    Chukwa 是开源的数据收集系统,用于监控大规模分布式系统(2000+ 以上的节点 , 系统每天产生的监控数据量在 T 级别)。它构建在 Hadoop 的 HDFS 和 MapReduce 基础之上,继承了 Hadoop 的可伸缩性和鲁棒性。Chukwa 包含一个强大和灵活的工具集,提供了数据的生成、收集、排序、去重、分析和展示等一系列功能,是 Hadoop 使用者、集群运营人员和管理人员的必备工具。

  13. Flume

    Flume是Cloudera开发维护的分布式、可靠、高可用的日志收集系统。它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统。

  14. Sqoop

    Sqoop 是 SQL-to-Hadoop 的缩写,是 Hadoop 的周边工具,它的主要作用是在结构化数据存储与 Hadoop 之间进行数据交换。Sqoop 可以将一个关系型数据库(例如 MySQL、Oracle、PostgreSQL 等)中的数据导入 Hadoop 的 HDFS、Hive 中,也可以将 HDFS、Hive中的数据导入关系型数据库中。Sqoop 充分利用了 Hadoop 的优点,整个数据导入导出过程都是用 MapReduce 实现并行化,同时,该过程中的大部分步骤自动执行,非常方便。

  15. Ooize

    在 Hadoop 中执行数据处理工作,有时候需要把多个作业连接到一起,才能达到最终目的。针对上述需求,Yahoo 开发了开源工作流引擎 Oozie,用于管理和协调多个运行在Hadoop 平台上的作业。在 Oozie 中,计算作业被抽象为动作,控制流节点则用于构建动作间的依赖关系,它们一起组成一个有向无环的工作流,描述了一项完整的数据处理工作。Oozie 工作流系统可以提高数据处理流程的柔性,改善 Hadoop 集群的效率,并降低开发和运营人员的工作量。

  16. Karmasphere

    Karmasphere 包括 Karmasphere Analyst 和 Karmasphere Studio。其中,Analyst 提供了访问保存在 Hadoop 里面的结构化和非结构化数据的能力,用户可以运用 SQL 或其他语言,进行即时查询并做进一步的分析。Studio 则是基于 NetBeans 的 MapReduce 集成开发环境,开发人员可以利用它方便快速地创建基于 Hadoop 的 MapReduce 应用。同时,该工具还提供了一些可视化工具,用于监控任务的执行,显示任务间的输入输出和交互等。需要注意的是,在上面提及的这些项目中,Karmasphere 是唯一不开源的工具。


正是这些项目的发展,带来了廉价的处理大数据的能力,让 Hadoop 成为大数据行业发展背后的驱动力。如今,Hadoop 已成为分布式大数据处理事实上的标准。