Apache Hadoop 是一个开源的软件框架,用于存储和处理大规模数据集的硬件集群。主要有五个组成部分(自下而上):
- Cluster集群是主机(节点)的集合。这是基础设施的硬件部分,也就是用虚拟机或物理机搭建的集群。
-
YARN资源管理平台(Yet Another Resource Negotiator) 负责提供计算资源(为应用程序分配如CPU,内存等资源)。YARN由两个组件组成:
-
Resource Manager (集群的Master节点) 。RM能感知到集群的Slaves(节点)都在哪个机架上,且知道有多少资源可用。RM运行几个服务,其中最重要的是Resource Scheduler资源调度器,因为它决定如何分配资源。
-
Node Manager (集群的Slave节点) 。 当NM启动时就会向RM发送周期性的心跳,以保证自己是活着的。并且每个NM都会向RM报告相关资源信息。其中包括Vcore数和内存,因为每个集群的配置都不同相关的配置要根据集群的配置来重新设定。在执行任务时Resource Scheduler会感知到怎样去使用这些Container来执行客户端的程序。
-
-
HDFS是负责提供可靠的分布式存储。通常用于数据的存储,虽然都是文件系统但是跟传统的文件系统有较大的差异。
- 其他替代存储解决方案。例如,亚马逊使用简单存储服务(S3)。
- MapReduce框架是大数据集的并行处理引擎。
YARN和HDFS是完全独立的项目:YARN提供用于运行应用程序的资源,而HDFS提供存储。MapReduce框架仅仅是在YARN平台上运行的诸多框架之一,还有包括有spark,tez等框架都可以在YARN上面运行。
YARN: Application Startup
在YARN中至少有3角色:
- Job Submitter (客户端)
- Resource Manager (Master节点)
- Node Manager (Slave节点)
应用程序启动过程是如下:
- 一个客户端向资源管理器(RM)提交一个应用程序
- 资源管理器(RM)分配一个容器(Container)
- 资源管理器(RM)与相关节点管理器(NM)联系
- 节点管理器(NM)启动容器(Container)
- 容器(Container)执行应用程序主程序(AM)
应用程序的主程序(Application Master)负责单个应用程序(Job)的执行。AM要求资源调度程序(资源管理器)执行特定的程序(例如,一个java类)。AM知道应用程序逻辑,因此它就是框架的实现。
转载至:http://ercoppa.github.io/HadoopInternals/HadoopArchitectureOverview.html