Hadoop基础介绍

  • 一、总体介绍
  • 二、HDFS架构
  • 三、MapReduce结构
  • 四、YARN架构


一、总体介绍

1、定义:
是一个开源的、可靠的、可扩展的分布式计算框架。

2、用途:

(1)数据仓库

(2)PB级别数据的存储与处理。

hadoop 框架版本 hadoop框架介绍_数据

3、核心组件
(1)HDFS:解决分布式存储,包括数据切分和多副本两部分。
(2)Map Reduce:解决分布式计算,Map:分,Reduce:合。既是分布式框架,又是编程模型。
(3)YARN:通用资源管理系统,实现资源管理、调度。

二、HDFS架构

1、结构:
Master-slave结构,NameNode带DataNode。

2、NameNode:
负责客户端请求的相应;负责元数据(数据的属性描述信息)的管理;监控DataNode健康状况。使用zookeeper实现高可用。

3、DataNode:
存储数据存储;要定期发送信息,汇报自身健康状况。

4、client:
负责数据拆分,默认为128MB,冗余3份。

5、优缺点:
优点:数据冗余;适合大文件存储;处理流式数据;可在廉价机器上构建。
缺点:无法实时运算;不适合小文件存储。

6、HDFS的高可用:
数据存储故障容错、磁盘故障容错、DataNode故障容错、NameNode故障容错。

三、MapReduce结构

1、优缺点:
优点:海量数据的离线处理;易开发。
缺点:无法进行实时的流式计算,比较慢。

2、结构:
分为Map和Reduce两个阶段,通过Hadoop streaming编程,编程时需要分别实现mapper和reducer脚本,可以通过mrjob包编辑python脚本实现MapReduce操作。

3、流程:
准备MapReduce的输入数据;准备Mapper数据,实现map接口,进行Map操作,将数据下发到节点;Shuffle;Reduce处理,实现reduce接口,汇总map阶段的结果;结果输出。

4、MapReduce慢的原因:
数据会频繁的在磁盘和内存中进行IO操作。

hadoop 框架版本 hadoop框架介绍_hadoop 框架版本_02


MapReduce的执行流程

四、YARN架构

1、作用:
资源管理工具,协调多个框架共同访问HDFS集群资源。

2、架构:
(1)ResourceManager:RM资源管理器,整个集群同一时间提供服务的RM只有一个。负责集群资源的统一管理和调度;处理客户端请求,submit和kill;监控NM;响应AM请求。
(2)NodeManager:NM节点管理器,整个集群中有多个,负责本身节点资源的管理;定时向RM汇报本节点资源使用情况;接收并处理RM的命令,启动Container运行task ;处理AM命令。
(3)ApplicationMaster:AM,每个应用程序对应一个MR、Spark,负责应用程序的管理;向RM申请资源;与NM通信,分发task,启动/停止task,task运行在container中,AM也运行在container中。
(4)Container:容器,是一个任务运行环境的抽象,封装CPU、内存等资源。
(5)Client:提交、查询、杀死task。

hadoop 框架版本 hadoop框架介绍_hadoop_03


YARN管理调度示意

3、步骤:
(1)Client提交作业请求。
(2)ResourceManager进程和NodeManager进程通信,根据集群资源,为用户程序分配第一个Container(容器),并将 ApplicationMaster分发到这个容器上面。
(3)在启动的Container中创建ApplicationMaster。
(4)ApplicationMaster启动后向ResourceManager注册进程,申请资源。
(5)ApplicationMaster申请到资源后,向对应的NodeManager申请启动Container,将要执行的程序分发到NodeManager上。
(6)Container启动后,执行对应的任务。
(7)Tast执行完毕之后,向ApplicationMaster返回结果。
(8)ApplicationMaster向ResourceManager汇报任务结束,请求kill。