大数据hadoop之YARN理解与架构简单分析
最近看了看大数据相关的书虽然很顺利的搭建了一个伪分布式的集群,但是坑确实是挺多的
最大的坑是 我们在进行idea操作的时候需要添加依赖
<repository> <id>cloudera-releases</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository>
也就是这个
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <hadoop.version>2.6.0-cdh5.7.0</hadoop.version> </properties>
下面是我用的版本号
但是 重要的事情是,我们一般都习惯了用阿里云的maven仓库,但是这个库得配置回到默认的库才能加载到 里面的jar包
默认的库,默认的库,默认的库
重要的事情说三遍
好了我们开始今天的''<得到>'(我不是罗粉)
说起大数据的一套处理架构我们不得不说YARN,YARN在我理解就是一个操作系统级别的东西 先上一张图:
我们看到在最以前的时候都是每个程序运行不同的系统图 ,起初的问题就是因为资源分配的不均衡,因为没台服务器都有空闲期和忙碌期,但是他们又在各自不同的服务器,所以问题出现了,资源浪费,一浪费老板就不开心所以我们的YARN出现了:
我们看到这张图,意思就是说所有的组件都是运行在YARN上面之上也就是说整个资源都是由我们的YARN来分配的,相当于我们的系统,每个程序运行多少内存不能由我们决定
当然这只是个比喻
总结:
YARN:不同计算框架可以共享同一个HDFS集群上的数据,享受整体的资源调度
XXX on YARN的好处:
与其他计算框架共享集群资源,按资源需要分配,进而提高集群资源的利用率
XXX: Spark/MapReduce/Storm/Flink
YARN 是系统级别的,通用的资源管理和调度
整体的结构是主从结构的
简单的了解之后我们来看它的整体架构 当然是官网:YARN官网
嗯虽然英文认识我,但是我不认识它,然而翻译软件就是我们的媒人
先看看它个个的名字的意思与我自己的理解:
1)ResourceManager: RM(在生产环境的时候是备份的)
整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度
处理客户端的请求: 提交一个作业、杀死一个作业
监控我们的NM,一旦某个NM挂了,那么该NM上运行的任务需要告诉我们的AM来如何进行处理
一个NM 上面会运行很多个程序task而每个不同的程序又是不同的AM
2) NodeManager: NM
会定时的向RM 汇报本节点的资源使用情况(方便资源的调用)
整个集群中有多个,负责自己本身节点资源管理和使用
定时向RM汇报本节点的资源使用情况
接收并处理来自RM的各种命令:启动Container
处理来自AM的命令(启动多少container来运行AM)
单个节点的资源管理(通过心跳通知RM)
3) ApplicationMaster: AM
每个应用程序对应一个:MR、Spark,负责应用程序的管理
为应用程序向RM申请资源(core、memory),分配给内部task
需要与NM通信:启动/停止task,task是运行在container里面,AM也是运行在container里面
4) Container
封装了CPU、Memory等资源的一个容器
是一个任务运行环境的抽象
5) Client
提交作业
查询作业的运行进度
杀死作业
流程 :
1过程client提交作业到RM
2-->到任意的一个NM运行Container启动AM,
3-->然后AM去RM里面去申请资源(也就是注册到RM里面去)注意这里做了两件事,1注册(也就是告诉RM我在那儿)2拿到资源(就是RM让你去哪儿执行以及对应的AM)
4 -->通知对应的NM去启动资源5-->在NM上面启动一些Container去运行 task
从我肤浅的理解来看总结出:
只需要按照框架的标准实现对应的AM方法对于的功能这样就让不用的资源运行到同一个YARN之上运行多种不同作业的操作系统
当然如果你想配置并启动它的话那就继续看文档吧,反正都是这样跑起来的
图解: