1.Hadoop上Yarn的架构设计:
= MapReduce架构设计(Yarn不可分)
= MapReduce上Job提交到Yarn的工作流程
= Yarn的架构设计、Yarn的工作流程

图上:
一个ResourceManager(RM)主节点,三个NodeManger(NM)从节点,两个client提交两个job,即存在两个ApplicationMaster(AM)作业程序,AM向RM注册和Schedule申请资源;拿到资源与NM通信分配任务在Container里执行作业并监控作业状态,Container作业并返回云运行状态给AM,作业结束AM向RM注销关闭
ResourceManger(RM):
负责对NM上资源进行统一管理和调度。将AM分配空闲的Container运行并监控状态,由调度器和应用程序管理器构成
ApplocationsManager: 应用程序管理器负责管理整个系统中所有的应用程序,包括应用程序的提交、调度器协商资源启动AM、监控AM的运行状态失败重启,跟踪分配给Container的进度和状态
ResourceSheduler:调度器 负责分配应用程序的资源分配,资源分配单位是Container
ApplicationMaster(AM):作业程序 负责作业的监控及执行的状态,失败重启;向ApplicationsManager注册,向ResourceScheduler协调资源拿到资源与NM通信分配任务,并监控Container作业状态
NodeManager(NM):节点资源和任务管理 定时向RM汇报本节点上的资源使用情况和各个Container的运行状态;接受并处理AM的Container启动和停止的请求
Container: 容器资源 Yarn资源抽象,分装了内存 CPU 磁盘的小房间,当AM向RM申请资源时,RM为AM 返回使用资源的Container小房间,每个作业任务都会分配一个Container
2.Yarn the command
# 只能Kill死正在进行的Yarn
yarn application -list
yarn application -kill application_id
3.Yarn the memory and CPU
Yarn调度程序内存和cpu参数配置,必须保证Memory够用,和Cpu够大,一旦内存不够用作业直接停止,Cpu不够用作业很慢
参数调整:
#ResourceSchuduler总大小
yarn.nodemanager.resource.memory-mb
#NodeManger上容器参数,默认1G增长
yarn.scheduler.minimum-allocation-mb 1024
yarn.scheduler.maximum-allocation-mb 8192
#虚拟Core,物理Core与虚拟 1:2
yarn.scheduler.minimum-allocation-vcores 1
yarn.scheduler.maximum-allocation-vcores 4
4.Yarn 三种调度
Yarn默认使用FIFO调度,生产环境下建议使用yarn调度器
FIFO Scheduler把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推

调度参考: http://www.cnblogs.com/gxc2015/p/5267957.html
= MapReduce架构设计(Yarn不可分)
= MapReduce上Job提交到Yarn的工作流程
= Yarn的架构设计、Yarn的工作流程

图上:
一个ResourceManager(RM)主节点,三个NodeManger(NM)从节点,两个client提交两个job,即存在两个ApplicationMaster(AM)作业程序,AM向RM注册和Schedule申请资源;拿到资源与NM通信分配任务在Container里执行作业并监控作业状态,Container作业并返回云运行状态给AM,作业结束AM向RM注销关闭
ResourceManger(RM):
负责对NM上资源进行统一管理和调度。将AM分配空闲的Container运行并监控状态,由调度器和应用程序管理器构成
ApplocationsManager: 应用程序管理器负责管理整个系统中所有的应用程序,包括应用程序的提交、调度器协商资源启动AM、监控AM的运行状态失败重启,跟踪分配给Container的进度和状态
ResourceSheduler:调度器 负责分配应用程序的资源分配,资源分配单位是Container
ApplicationMaster(AM):作业程序 负责作业的监控及执行的状态,失败重启;向ApplicationsManager注册,向ResourceScheduler协调资源拿到资源与NM通信分配任务,并监控Container作业状态
NodeManager(NM):节点资源和任务管理 定时向RM汇报本节点上的资源使用情况和各个Container的运行状态;接受并处理AM的Container启动和停止的请求
Container: 容器资源 Yarn资源抽象,分装了内存 CPU 磁盘的小房间,当AM向RM申请资源时,RM为AM 返回使用资源的Container小房间,每个作业任务都会分配一个Container
2.Yarn the command
# 只能Kill死正在进行的Yarn
yarn application -list
yarn application -kill application_id
3.Yarn the memory and CPU
Yarn调度程序内存和cpu参数配置,必须保证Memory够用,和Cpu够大,一旦内存不够用作业直接停止,Cpu不够用作业很慢
参数调整:
#ResourceSchuduler总大小
yarn.nodemanager.resource.memory-mb
#NodeManger上容器参数,默认1G增长
yarn.scheduler.minimum-allocation-mb 1024
yarn.scheduler.maximum-allocation-mb 8192
#虚拟Core,物理Core与虚拟 1:2
yarn.scheduler.minimum-allocation-vcores 1
yarn.scheduler.maximum-allocation-vcores 4
4.Yarn 三种调度
Yarn默认使用FIFO调度,生产环境下建议使用yarn调度器
FIFO Scheduler把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推

调度参考: http://www.cnblogs.com/gxc2015/p/5267957.html
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31441024/viewspace-2155253/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31441024/viewspace-2155253/