Hadoop的分布式计算和分布式存储都采用了主从结构。分布式存储系统被称为HDFS。可以将整个文件系统看成一个超大的硬盘。
hdfs的组成
- 主节点
namenode(nn):存放元数据信息,存储文件名称,文件属性,文件块列表,所在dn节点列表。
secondarynamenode(2nn):降低namenode压力,辅助作用。
- 从节点
datanode(dn):存放具体的block块,检验文件。
yarn的组成
yarn也是主从架构的,主节点是 ResourceManager ,从节点是 NodeManager
-
ResourceManager(rm):整个集群的资源调度。
- ASM:ApplicationsManager 负责所有任务的管理(包含每一个任务的启动和销毁、每一个任务的跟踪、以及任务执行的是否成功)。所以管理的是每一个应用程序的MRAppMaster。
- 1)管理每一个应用MRAppMaster的启动和销毁。
- 2)负责跟踪 MRAppMaster 的运行状态,失败重启。
- Scheduler:决定任务的执行顺序
- FIFO:先进先出。内部维护的单一队列,哪一个任务线提交,哪一个任务线进行资源分配,哪一个任务线运行。缺点:如果前面有一个大任务,会造成后面的任务集体阻塞。
- FAIR:公平调度器。所有任务平分资源。缺点:没有根据任务大小进行资源分配。
- CAPACITY:容量调度器。可以根据任务大小或组的需要,手动配置资源占比。(内部维护多个队列,每一个队列都是FIFO)
- ASM:ApplicationsManager 负责所有任务的管理(包含每一个任务的启动和销毁、每一个任务的跟踪、以及任务执行的是否成功)。所以管理的是每一个应用程序的MRAppMaster。
-
NodeManager(nm):单个节点的资源调度。是资源的真正提供者(为计算任务提供资源)
- 运行时提供资源,运行完成之后,回收资源。资源是动态分配的。
- 提供资源的时候,是以一个maptask或reducetask为单位提供资源。
- 一个maptask 或 reducetask 需要一个 container 的资源。(container 是一个抽象资源容器,或者说是一个逻辑资源容器。是nodemanager提供资源的基本单位(最小单位)。一个container内部封装了一定的资源:内存、cpu、网络、IO等)
- 一个container中运行一个maptask或一个reducetask任务。
- MRAppMaster:mapreduce application master。 mapreduce中,每一个应用程序(job)运行的时候,先启动 MRAppMaster,之后MRAppMaster负责管理整个应用程序。管理包括:
- 1)帮助当前应用程序申请资源。
- 2)启动maptask 任务和 reducetask任务。
- 3)跟踪 maptask 任务和 reducetask任务的运行状态的进度。
- 4)进行 maptask 和 reducetask 的资源回收。