【Hadoop】1、生态圈组件

Hadoop生态圈组件介绍

广义上来说,Hadoop是指大数据的一个生态圈,包括很多软件框架。

Apache Hadoop项目为可靠,可扩展的分布式计算开发开源软件。
Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。库本身不是依靠硬件来提供高可用性,而是旨在检测和处理应用程序层的故障,因此在计算机群集之上提供高可用性服务,每个计算机群集都可能容易出现故障。

该项目包括以下模块:
Hadoop Common:支持其他Hadoop模块的通用实用程序。
Hadoop 分布式文件系统(HDFS):一种分布式文件系统,提供对应用程序数据的高吞吐量访问。
Hadoop YARN:用于作业调度和集群资源管理的框架。
Hadoop MapReduce:一种基于YARN的系统,用于并行处理大型数据集。

Sqoop主要用于传统关系型数据库和Hadoop之间传输数据。Flume是海量日志收集系统,提供对日志数据进行简单处理的能力,如过滤、格式转换等,能够将日志写往各种数据目标。

HDFS是Hadoop体系中数据存储管理的基础,它是一个分布式文件系统,具有高容错性,提供高吞吐率的数据访问,能够有效处理海量数据集。(处于不同地域的计算机节点所组成的集群称之为分布式集群)

HBase是一个建立在HDFS之上,面向列的针对结构化和半结构化数据的动态数据库。HBase提供了对大规模数据的随机、实时读写访问,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。

Kafka是一种高吞吐量的分布式消息系统,它主要用于处理活跃的流式数据。这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。

YARN是通用资源管理系统,为上层应用提供统一资源管理调度。

MapReduce是面向大型数据处理的并行计算模型和方法,仅适合离线数据处理。

Spark提供一个通用并行计算框架用于处理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理需求。

Hive是一种数据仓库技术,用于查询和管理存储在分布式环境下的大数据集,通常用于离线分析。

Mahout是一个开源的数据挖掘算法库,实现了-些可扩展的机器学习领域经典算法。

Storm是一个分布式的、容错的实时处理系统。可用于"流处理"之中,实时处理消息并更新数据库。Storm也可用于"连续计算",对数据流做连续查询,在计算时就将结果以流的形式输出给用户。

Oozie是Hadoop平台的一种工作流调度引擎,用于协调多个Hadoop作业的执行。

Azkaban是一个批量工作流任务调度器,用于在一个工作流内以-个特定的顺序运行一组工作和流程。

ZooKeeper是一个分布式数据管理和协调框架,保证分布式环境中数据的一致性,是Hadoop组件的一个监管系统。

Hadoop的运行模式

Hadoop可以按三种模式进行安装和运行。

单机模式
( 1 ) Hadoop的默认模式,安装时不需要修改配置文件。
( 2 ) Hadoop运行在一台计算机上,不需要启动HDFS和YARN。
( 3 ) MapReduce运行处理数据时只有一个JAVA进程,使用本地文件系统进行数据的输入输出。
( 4 )用于对MapReduce程序的逻辑进行调试,确保程序的正确。

伪分布式模式
( 1 ) Hadoop安装在一台计算机上,需要修改相应的配置文件,用一台计算机模拟多台主机的集群。
( 2 )需要启动HDFS和YARN ,是相互独立的Java进程。
( 3 ) MapReduce运行处理数据时是每个作业一个独立进程,输入输出使用分布式文件系统。
( 4 )用来进行学习和开发测试Hadoop程序的执行是否正确。

完全分布式模式
( 1 )在多台计算机上安装JDK和Hadoop ,组成相互连通的集群,需要修改相应的配置文件。
( 2 ) Hadoop的守护进程运行在由多台主机搭建的集群上。真正的生产环境。

Hadoop优点

( 1 )扩容能力强:Hadoop是在可用的计算机集群间分配数据并完成计算任务这些集群可以方便地扩展到数以千计的节点。
( 2 )成本低:通过普通廉价的计算机组成服务器集群来分发以及处理数据,相比使用大型机乃至超级计算机成本低很多。
( 3 )高效率:通过并发数据, Hadoop可以在节点之间动态并行处理数据,使得处理速度非常快。
( 4 )高可靠性:能自动维护数据的多份复制,并且在任务失败后能自动地重新部署计算任务。

HDFS

( 1 ) HDFS是Hadoop体系中数据存储管理的基础,它是一个分布式文件系统。(分布式存储系统)
( 2 ) HDFS将大数据文件切分成若干个小的数据块,再把这些数据块分别写入不同的节点,这些负责保存文件数据的节点被称为数据节点(DataNode)。
( 3 ) HDFS使用一个专门保存文件属性信息的节点一 名称节点( NameNode )。

HDFS架构

HDFS主要组件

NameNode,名称节点,HDFS的管理者。

(1)管理HDFS的名字空间,维护管理所有文件的元数据。
(2)管理DataNode.上的数据块,决定文件数据块存储到哪个DataNode。
(3)处理客户端的读写请求。
(4)按用户确定的副本策略管理HDFS中数据的副本。

DataNode(数据节点)负责存储数据。

( 1 )存储实际的数据块,每个HDFS数据块默认大小为128MB ,存储在本地文件系统的单独文件中。
( 2 )处理客户端的读写请求,执行数据块的读和写。
( 3 )向NameNode定期汇报数据块信息,并定时向NameNode发送心跳信号保持联系。

FSImage和edits文件

( 1 ) FSImage文件存储文件的元数据, HDFS运行时会将该文件加载到内存中。
( 2 ) edits文件记录对文件的写操作(修改)。
( 3 )写文件操作只会对内存中的元数据进行修改,不会对FSImage文件进行修改。

SecondaryNameNode,用于合并元数据文件FSImage。

( 1 )将NameNode上的FSImage和edits文件复制到本地,并将两者合并生成新的FSImage文件,再将新的FSImage文件复制回NameNode。
( 2 )不是NameNode的备份,但可以帮助恢复NameNode ,因为其上保存了大部分的元数据信息。客户端,接收用户的读写请求,处理后转发给NameNode和DataNode。
( 1 )与NameNode进行信息交互,获得文件的位置信息。
( 2 )与DataNode进行信息交互,指示DataNode执行具体的数据读写。
( 3 )向用户提供接口来管理和访问HDFS。
( 4 )三类客户端:行命令、Web客户端和程序调用的API接口。

HDFS优缺点

优点:
( 1 )适合处理大数据: HDFS能够处理TB级甚至PB级的数据,文件数量也可达百万以上。
( 2 )高容错性:自动保存数据的多个副本,当某一副本丢失,可以自动重备。
( 3 )低成本运行: HDFS可以运行在廉价的商用计算机上。通过多副本机制提高可靠性。

缺点:
( 1 )不适合处理低延时的数据访问。
( 2 )不适合处理大量的小文件:小文件太多会消耗NameNode的内存。同时小文件的寻址时间超过读取时间,也违背了HDFS的设计目标。
( 3 )不支持并发写入和文件随机修改: HDFS的文件同时只能有一个用户进行写操作,也仅支持文件的数据追加。

YARN

( 1 ) Yarn就是通用资源管理系统,负责将系统资源分配给在Hadoop集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务,相当于一个分布式操作系统平台。
( 2 ) YARN的组件有ResourceManager、ApplicationMaster、NodeManager和Container,采用的是Master/Slave (主/从)结构。

YARN架构

YARN主要组件

ResourceManager(资源管理器),负责整个系统的资源管理与分配。由两个组件构成:

( 1 )调度器(Scheduler):根据资源情况和预先定义的策略以及应用程序的资源需求,将系统中的资源分配给各个正在运行的应用程序。
( 2 )应用程序管理器(Applications Manager):负责管理整个系统中所有应用程序,监控ApplicationMaster运行状态并在其失败时重新启动它。

NodeManager管理单个节点上的资源。

( 1 )定时向ResourceManager汇报节点的资源使用情况和节点中各Container的运行状态。
( 2 )负责接收ResourceManager的资源分配要求,分配具体的Container给应用的某个任务。
( 3 )处理来自ApplicationMaster的Container启动或停止请求。

ApplicationMaster,应用程序的第一个进程,负责监控、管理应用程序所有任务的运行。

( 1 )将要处理的数据进行切分,为每个切分的数据块在该数据块所在节点启动一个运算任务,由该任务对数据进行处理。
( 2 )为了启动任务向ResourceManager申请资源,然后指示任务所在的NodeManager启动Container.
( 3 )在任务的运行过程中,监视任务的运行状态,重新启动失败的任务。当任务运行完毕,负责返还资源。

Container是YARN中动态创建的资源容器,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。

( 1 )当ApplicationMaster为任务向ResourceManager申请资源时, ResourceManager为ApplicationMaster返回的资源便是用Container来表示的。
( 2 ) ResourceManager只负责告诉ApplicationMaster哪些Container可以用,ApplicationMaster还需要去找NodeManager情求分配具体的Container。

YARN应用程序的运行过程

( 1 )客户端向ResourceManager提交应用程序并请求运行一个ApplicationMaster进程。
( 2 ) ResourceManager计算所需要的资源,指定某个NodeManager初始化Container,在NodeManager的协助下启动第一个Container,并在Container中启动ApplicationMaster进程。
( 3 ) ApplicationMaster向ResourceManager注册,为内部要执行的任务申请资源。
( 4 ) ApplicationMaste拿到资源后,根据资源信息指定相应的NodeManager启动Container,在Container中启动对应的任务。
( 5 )所有任务运行完成后, ApplicationMaster向ResourceManager注销,归还所使用的全部资源,整个应用程序运行结束。

MapReduce

( 1 )MapReduce是面向大型数据处理的、简化的、并行计算模型。
( 2 )将用户编写的业务逻辑代码和自带的默认组件整合成一个完整的分布式运算程序,使得开发并行计算应用程序变得很容易。
( 3 )MapReduce把对大数据的操作分发给多个子节点并行处理,然后整合各个子节点的输出结果,得到最终的计算结果。

MapReduce运行模型

MapReduce运行流程

( 1 )读取数据阶段。从本地的HDFS文件系统中读取数据并分片。
( 2 ) Map处理阶段。每个分片会让一个Map任务来处理。
( 3 ) Shuffle阶段。分为两步:
1.在单个Map任务所在的节点上,将Map任务的输出数据进行分区、排序、合并。
2.在Reduce任务所在的节点上,将各个Map任务节点上对应的分区数据复制过来,进行排序、合并。
( 4 ) Reduce阶段。Reduce任务读入Shuffle处理后的数据进行处理,处理后的结果写入磁盘。

MapReduce - WordCount案例

MapReduce优缺点

优点:
( 1 )易于编程:使用它的一些简单接口,就可以完成一个分布式程序。
( 2 )良好的拓展性:当计算资源不足时,可以简单地通过增加计算机的数量来扩展它的计算能力。
( 3 )高容错性:当运算节点出现故障时, MapReduce的计算任务可以自动转移到另一个节点运行,不需要人工干预。
( 4 )适合处理离线大数据:能够处理PB级的离线数据。

缺点:
( 1 )不适合实时计算: MapReduce达不到在秒级以内反馈运算结果。
( 2 )不适合流式计算:流式计算处理的数据是动态的,而MapReduce只能处理静态的数据。
( 3 )不适合有向图计算:对于有向图计算, MapReduce在处理数据的过程中,每个任务的输出结果都会写入磁盘,会造成大量的磁盘读写,形成瓶颈,降低统的性能。

posted @ 2022-03-12 15:43  王智刚  阅读(342)  评论(0编辑  收藏  举报