大数据组件——spark
基础知识
yarn是hadoop集群的资源管理系统
yarn的组件主要包含3个部分
1.ResourceManager:Global(全局)的进程
2.NodeManager:运行在每个节点上的进程
3.ApplicationMaster:Application-specific 应用级别的进程
4.Container:YARN中的资源抽象
ResourceManager (RM)
ResourceManager主要包含两个组件:Scheduler和ApplicationManager
Scheduler是一个资源调度器,主要负责协调集群中各个应用的资源分配,只负责调度Containers,不关心应用程序监控及其运行状态等信息
ApplicationManager主要负责接收job的提交请求,为应用分配第一个 Container来运行ApplicationMaster,还有负责监控ApplicationMaster,遇到失败时重启ApplicationMaster运行的Container
NodeManager(NM)
NM是每个节点上的资源和任务管理器,会定时向RM汇报本节点上的资源使用情况和各个Container的运行状态,同时会接收并处理来自AM的Container启动/停止等请求
ApplicationMaster(AM)
ApplicationMaster是对运行在Yarn中的某个应用的抽象,它其实就是某个类型应用的实例,主要功能是向ResourceManager申请计算资源(Containers)并且和NodeManager交互来执行和监控具体的task。很多分布式应用都开发了对应的应用程序框架,用于在YARN上运行任务,例如Spark,Storm等,自己也可以开发符合规范的YARN application
Container
封装了某个节点上的多维度资源,如内存,cpu,磁盘,网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container且该任务只能使用该Container中描述的资源
spark的yarn-cluster模式
1. 程序提交作业到ResourceManager,请求启动ApplicationMaster
2. ResourceManager会分配container,在某个NodeManager上面启动ApplicationMaster,相当于Driver
3. ApplicationMaster启动后,会和ResourceMananger通讯,请求container来启动executor
4. ResourceManager会提供一些container给ApplicationMaster用来启动executor
5. ApplicationMaster会连接其他NodeManager来启动executor
6. executor启动后会向ApplicationMaster反向注册
spark的yarn-client模式
1. yarn-client,区别在于driver是在本地客户端上运行的,相应的ApplicationMaster只是作为一个Executor启动器,并没有相应的Driver进程
yarn-cluster | yarn-client |
driver运行在AM中 | driver运行在client客户端 |
日志分布在各个节点上,需要登录到某个节点才能看到日志 | 比较适合于调试,日志存在客户端,可以直接查看到各种日志 |
client断开的话,任务不受影响,可以继续运行 | 连接断了,任务就会被中断 |
注意:spark任务都会绑定一个端口来显示WebUI,默认端口是4040,如果端口被占用会依次递增+1端口重试,重试次数由参数spark.port.maxRetries=16控制,默认重试16次后放弃执行