HDFS 中有namenode,secondarynode,datanode.
namenode维护这系统中大量元数据,负责管理文件系统的命名空间和控制外部访问
secondarynode 和 namenode 进行节点间的通信,根据配置定期地获取其上的元数据快照,达到备份和灾备的目的。
datanode 存储数据。 这里需要补充另外两个主要概念:工作追踪节点(job traker),任务追踪节点(task tracker)
工作跟踪节点是应用程序和hadoop之间的纽带。 一旦代码提交到hadoop 集群上,工作跟踪节点就会执行计划,包括决定处理哪些文件,为不同的任务分配节点,以及监控所有任务的运行,如果任务失败,工作跟踪节点将会根据配置打开重试机制,自动重启任务,
每个hadoop集群通常只有1个工作跟踪的守护进程,它和命名节点的守护进程一起运行在主节点上,监测MapReduce 作业的整个执行过程。
任务跟踪节点task tracker 管理各个任务在每个从节点上的运行情况,负责运行有工作跟踪节点分配的单项任务,因此,任务跟踪节点和工作跟踪节点会不断通信,实现心跳机制,用于监控,如果工作跟踪节点没有在指定的时间内收到某个任务跟踪节点的心跳消息,它会假定该任务跟踪节点已经死机,然后将任务重新分配到集群中的其他节点上,这就是前面提到的容错性和可靠性。由于工作跟踪节点和命名节点都是主节点,因此它们通常都部署在同样的服务器,而任务跟踪节点和数据节点都是从节点,它们也可以部署在同样的服务器上。
mapreduce 框架的问题:
job tracker 它是mapreduce 集中点,完成太多任务,造成过多资源消耗,存在单点故障的可能,而在task tracker 端,用任务的数量来衡量负载方式过于简单,没有考虑中央运算器cpu,内存,硬盘等使用情况,可能会出现负载不均,或者某些节点过载。 针对这种情况,apache hadoop yarn 是一种新的资源管理器,为上层应用提供了统一的hadoop 资源管理和调度。yarn 将工作节点的两个主要功能分成了两个独立的服务程序:全局资源管理器(resource manager) 和针对每个应用的主节点(application master)。这样是为了让子任务的监测进行分布式处理,大幅度减少了job tracker
的资源消耗。这里的任务既可以是mapreduce 任务也可以是DAG无环图任务。在yarn 的基础上,还可以使用spark ,storm,这样的流式计算和实时性作业,并利用hadoop 集群的计算能力和丰富的数据存储类型,来提升数据共享和集群的利用率。