官网
介绍
广义的Hadoop:是指Apache旗下的整体大数据技术生态
狭义的Hadoop:是指今天要说的三大组件
MapReduce
MapReduce是什么?
1、 MapReduce是一种分布式计算框架 ;
2、MR有两个阶段组成:Map和Reduce,用户只需实现map()和reduce()两个函数,即可实现分布式计算;
3、Map()负责把一个大的block块进行切片并计算;
4、Reduce() 负责把Map()切片的数据进行汇总、计算。
MapReduce怎么做?
1、对输入的数据进行切片,每个切片分配一个map()任务,map()对其中的数据进行计算,然后输出到环形缓冲区;
2、数据在环形缓冲区内进行快排,每个环形缓冲区默认大小100M,当数据达到80M时(默认),把数据输出到磁盘上,形成很多个内部有序整体无序的小文件。
3、框架把磁盘中的小文件传到Reduce()中来,然后进行归并排序,最终输出。
HDFS
NameNode(nn):
Master,它是一个主管、管理者。
(1)管理HDFS的名称空间;
(2)配置副本策略;
(3)管理数据块(Block)映射信息;
(4)处理客户端读写请求。
DataNode:
Slave,执行实际的操作。
(1)存储实际的数据块;
(2)执行数据块的读/写操作。
Client:
客户端
(1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block;
(2)与NameNode交互,获取文件的位置信息;
(3)与DataNode交互,读取或者写入数据;
(4)Client提供一些命令来管理HDFS,比如NameNode格式化;
(5)Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作。
YARN
为什么要使用YARN?
提升集群资源利用,为上层应用做资源统一管理。
YARN的优势?
集群中所有节点的资源(内存、CPU、磁盘、网络等)抽象为Container。计算框架需要资源进行运算任务时需要向YARN申请Container, YARN按照特定的策略对资源进行调度进行Container的分配。
资源隔离:
YARN使用了轻量级资源隔离机制Cgroups进行资源隔离以避免相互干扰,一旦Container使用的资源量超过事先定义的上限值,就将其杀死。
YARN是如何工作的?
Resource Manager:全局资源管理器,一个集群只有一个RM。负责和AM(Application Master)交互,资源调度、资源分配等工作;
Application Master:应用程序的管理器,一个应用程序只有一个AM。负责任务开始时找RM要资源,任务完成时向RM注销自己,释放资源;与NM通信以启动/停止任务;接收NM同步的任务进度信息。
Node Manager:一台机器上的管理者,管理着本机上若干小弟Containers的生命周期、监视资源和跟踪节点健康并定时上报给RM;接收并处理来自AM的Container启动/停止等各种请求。
Container:一台机器上具体提供运算资源,将设备上的内存、CPU、磁盘、网络等资源封装在一起的抽象概念——“资源容器”,Container是一个动态资源分配单位,为了限定每个任务使用的资源量。 NM和Container是一台设备上的不同进程
YARN提交一个应用程序时的执行过程:
1、用户向YARN提交程序,Resource Manager(资源管理器)接收到客户端程序的运行请求;
2、Resource Manager分配一个Container(资源)用来启动Application Master(程序管理员),并告知Node Manager(节点管理员),要求它在这个Container下启动Application Master;
3、Application Master启动后,向Resource Manager发起注册请求;
4、Application Master向Resource Manager申请资源;
5、取得资源后,根据资源,向相关的Node Manager通信,要求其启动程序;
6、Node Manager(多个)启动MR(每个MR任务都是一个job,可以在job日志中查看程序运行日志);
7、Node Manager不断汇报MR状态和进展给Application Master;
8、当MR全部完成时,Application Master向Resource Manager汇报任务完成,并注销自己。