在当今信息爆炸的时代,大数据已经成为一个不可忽视的概念。大数据指的是那些无法通过传统方法,如关系型数据库管理系统(RDBMS)高效处理的数据集。Hadoop作为一个开源框架,已经在需要处理大量敏感数据并要求高效处理的行业和公司中占据了一席之地。
Hadoop生态系统由几个主要元素构成,包括Hadoop分布式文件系统(HDFS)、Yet Another Resource Negotiator(YARN)和MapReduce。这些工具或解决方案通常用于补充或支持这些核心元素。它们共同提供数据吸收、分析、存储和维护等服务。
HDFS是Hadoop生态系统中的核心组件,负责在多个节点上存储大量的结构化或非结构化数据集,同时存储元数据作为日志文件。HDFS由两个基本组件构成:名称节点和数据节点。名称节点是主节点,包含元数据,相较于存储实际数据的数据节点,它需要的资源较少。这些数据节点是分布式环境中的普通硬件,无疑,这也是Hadoop成本效益高的原因之一。HDFS维护集群和硬件之间的所有协调,因此它在系统的心脏位置工作。
YARN,顾名思义,帮助管理集群中的资源。简而言之,它执行Hadoop系统的资源规划和分配。YARN由三个主要组件构成:资源管理器、节点管理器和应用程序管理器。资源管理器负责为系统中的应用程序分配资源,而节点管理器则负责为每台机器分配CPU、内存和带宽等资源,并随后通知资源管理器。应用程序管理器充当资源管理器和节点管理器之间的接口,并根据两者的要求进行协商。
MapReduce使用分布式和并行算法,允许卸载处理逻辑,并帮助编写将大型数据集转换为可管理数据集的应用程序。MapReduce使用两个函数,即Map()和Reduce()。Map()执行数据的排序和过滤,从而以组的形式组织数据。Map()根据键值对生成结果,随后由Reduce()方法处理。Reduce()顾名思义,通过聚合映射数据执行汇总。简单地说,Reduce()将Map()生成的输出作为输入,并把这些元组合并成更小的元组集合。
Pig由Yahoo开发,基于Pig Latin,这是一种类似于SQL的基于查询的语言。Pig是一个用于数据流结构化、处理和分析大数据集的平台。Pig执行命令,所有MapReduce活动都在后台处理。处理后,Pig将结果存储在HDFS中。Pig Latin语言专为此框架设计,运行在Pig Runtime上。Pig有助于实现编程和优化的便捷性,因此是Hadoop生态系统的核心部分。
Hive通过SQL方法和Hive接口读取和写入称为Hive查询语言的大型数据集。它具有高度的可扩展性,允许实时和批量处理。此外,Hive支持所有SQL数据类型,使查询处理更加容易。像查询处理框架一样,Hive包括两个组件:JDBC驱动程序和Hive命令行。JDBC与ODBC驱动程序一起创建数据存储和连接权限,而Hive命令行有助于查询处理。
Mahout使系统或应用程序能够进行机器学习。机器学习,顾名思义,帮助系统根据某些模式、用户/环境交互或算法发展。它提供了各种库或功能,如协同过滤、聚类和分类,这些都是机器学习概念。它允许根据需要使用库调用算法。
Apache Spark是一个平台,处理所有处理密集型任务,如批量处理、实时交互或迭代处理、图形转换和可视化等。因此,它消耗内存资源,并且在优化方面比前一个更快。Spark最适合实时数据,而Hadoop最适合结构化数据或批量处理。因此,两者在大多数公司中交替使用。
Apache HBase是一个NoSQL数据库,支持所有类型的数据,并且能够处理来自Hadoop数据库的任何数据。它提供了Google BigTable的功能,可以高效地处理大型数据集。当需要在庞大的数据库中搜索或检索小量数据时,请求必须在短暂的快速时间内处理。在这种情况下,HBase派上用场,因为它为提供了一种容忍的方式来存储有限的数据。
除了上述所有组件外,还有一些其他组件执行使Hadoop能够处理大型数据集的巨大任务。它们如下:
Solr和Lucene:这两个服务使用一些Java库执行搜索和索引任务。Lucene基于Java,也支持拼写检查机制。然而,Lucene由Solr驱动。
Zookeeper:在管理Hadoop资源或组件之间的协调和同步方面存在巨大问题,这经常导致不一致。Zookeeper通过执行同步、组件间通信、分组和维护来克服所有问题。
Oozie:Oozie简单地充当调度器,因此它调度作业并将它们组合在一起。有两种类型的任务,即Oozie工作流和Oozie协调器任务。Oozie工作流是需要按顺序执行的任务。相比之下,Oozie协调器任务在给出某些数据或外部刺激时被触发。