Yarn
文章平均质量分 76
zhifeng687
这个作者很懒,什么都没留下…
展开
-
Spark任务失败 Container be Killed 案情分析
1.案情很单纯的讲,就是一个spark程序以yarn-cluster的模式运行在yarn集群上,经常遇到Lost executor Container be killed by yarn for exceed memory limits2.spark大致架构3、案发现场从日志可以看出,Container被杀掉,Executor丢失,导致stage中的task也失败,大致原因可以看出,堆内存基本被全部用完,同时建议设置spark.yarn.execu...转载 2017-04-21 17:32:41 · 7800 阅读 · 0 评论 -
Spark任务提交后,一直处于Accept状态,无法正常运行
问题背景与现象Spark任务提交后,任务一直处于Accept状态,无法正常运行。Driver端提示executor memory超限。原因分析FusionInsight集群中,Spark任务运行在Yarn的资源管理框架下,由Yarn来负责资源的调度管理,Yarn在接收Spark任务后,任务会先处于Accept状态,待为该任务分配到资源之后,人后然后才会进入Running状态执行如果Yarn上没有足够资源,则任务将一直处于Accept状态。可通过如下方式查看Yarn上资源。查看当前yarn是否转载 2015-09-28 19:34:07 · 9438 阅读 · 0 评论 -
yarn3.2源码分析之ApplicationMaster与NodeManager之间的通信
概述ApplicationMaster与NodeManager之间通过ContainerManagementProtocol进行通信。ContainerManagementProtocolApplicationMaster与NodeManager之间的通信消息主要包括:startContainers:stopContainers:getContainerStatus:...原创 2015-07-12 00:54:14 · 2718 阅读 · 0 评论 -
spark-yarn源码分析之submitApplication与run ApplicationMaster
概述启动ApplicationMaster进程的方式是:调用org.apache.spark.deploy.yarn.ApplicationMaster的main方法。submitApplication方法流程如下:1、verifyClusterResources():校验yarn集群在分配一个container时是否有足够的内存资源分配给executor memory和AM m...原创 2015-07-01 15:27:03 · 639 阅读 · 0 评论 -
yarn3.2源码分析之YarnClient与ResourceManager通信之submitApplication(四)
概述submitApplication会经历的event:launch类型的AMLaucherEventApplicationMasterLauncher处理launch类型的AMLaucherEventResourceManager的内部类RMActiveService为AsyncDispatcher注册AMLauncherEventType类型的处理器——Application...原创 2019-05-09 18:24:16 · 368 阅读 · 0 评论 -
spark-yarn源码分析之registerApplicationMaster事件流程
概述本文基于spark-yarn 2.4与yarn3.2分析registerApplicationMaster的整个流程spark-yarn部分spark-yarn运行driverprivate def runDriver(): Unit = { addAmIpFilter(None) userClassThread = startUserApplication(...原创 2015-07-01 14:59:01 · 688 阅读 · 0 评论 -
yarn3.2源码分析之YarnClient与ResourceManager通信之submitApplication(三)
概述submitApplication会经过一系列Event:app_accepted类型的RMAppEvent start类型的RMAppAttemptEvent appAttemptAdd类型的SchedulerEvent AttemptAdded类型的RMAppAttemptEvent storeAppAttempt类型的RMStateStoreEvent At...原创 2019-05-09 15:37:18 · 381 阅读 · 0 评论 -
yarn 3.2源码分析之NM端launchContainer事件流程
概述NM端launch container会经历的event:LaunchContainer类型的ContainersLaunchEventyarn application会因为container分配失败而导致application failed,以下日志可以大概得知launch container的流程Application application_1555482591931_0...原创 2019-04-19 15:32:56 · 2269 阅读 · 0 评论 -
yarn3.2 源码分析之FairScheduler连续调度和assignContainer流程
概述FairScheduler分配container的核心调度流程核心调度流程如下:调度器锁住FairScheduler对象,避免核心数据结构冲突。 调度器选取集群的一个节点(node),从树形队列的根节点ROOT开始出发,每层队列都会按照公平策略选择一个子队列,最后在叶子队列按照公平策略选择一个App,为这个App在node上找一块适配的资源。对于每层队列进行如下流程:队列预...原创 2019-04-15 11:42:46 · 1760 阅读 · 0 评论 -
yarn3.2源码分析之YarnClient与ResourceManager通信之submitApplication
概述YarnClient通过ApplicationClientProtocol与ResourceManager通信。YarnClient通过它完成向RM提交应用程序、查看应用程序状态、控制应用程序(杀死)等。在ResourceManager中,负责与YarnClient通信的组件是ClientRMService。如果是submitApplication等通信,ClientRMService再转...原创 2019-04-21 11:22:53 · 1610 阅读 · 0 评论 -
spark-yarn源码分析之AM申请container事件流程
spark-yarn部分run Driverprivate def runDriver(): Unit = { addAmIpFilter(None) userClassThread = startUserApplication() // This a bit hacky, but we need to wait until the spark.driver.p...原创 2015-07-03 23:33:17 · 2268 阅读 · 0 评论 -
yarn3.2源码分析之YarnClient与ResourceManager通信之submitApplication(二)
概述submitApplication会经历一系列Event:start类型的RMAppEvent storeApp类型的RMStateStoreEvent newSaved类型的RMAppEvent appAdded类型的SchedulerEvent Accepted类型的RMAppEvent在处理storeApp类型的RMStateStoreEvent过程中,存储app的信...原创 2019-05-07 18:22:25 · 457 阅读 · 0 评论 -
yarn3.2源码分析之CapacityScheduler的心跳调度
CapacityScheduler#nodeUpdate()方法protected void nodeUpdate(RMNode rmNode) { long begin = System.nanoTime(); try { readLock.lock(); setLastNodeUpdateTime(Time.now()); super....原创 2018-02-26 15:58:14 · 2868 阅读 · 0 评论 -
yarn3.2源码分析之NM端startContainer的资源本地化机制
概述Container启动过程主要经历三个阶段:资源本地化、启动并运行container、资源回收,其中,资源本地化指创建container工作目录,从HDFS下载运行container所需的各种资源(jar包、可执行文件等)等,而资源回收则是资源本地化的逆过程,它负责清理各种资源。在资源本地化的过程中,相关的组件定义如下:LocalResource:LocalResource代表运行一个...原创 2019-08-22 17:02:20 · 1691 阅读 · 0 评论 -
yarn3.2源码分析之ResourceManager基于zk的HA机制
概述ResourceManager#serviceInit()方法1、判断是否启动HA。如果yarn.resourcemanager.ha.enabled配置参数为true,则为启动HA。2、如果启动HA,判断是否启用自动失败重启。如果yarn.resourcemanager.ha.automatic-failover.enabled配置参数为true,则为启动自动失败重启。如果启...原创 2019-08-14 17:46:56 · 1339 阅读 · 0 评论 -
YARN源码解析之NodeManager中的ContainerExecutor
在NodeManager中,有三种运行Container的方式,它们分别是:DefaultContainerExecutor LinuxContainerExecutor DockerContainerExecutor从它们的名字中,我们就能看得出来,默认情况下,一定使用的是DefaultContainerExecutor。而一般情况下,DefaultContainerExecuto...转载 2015-06-23 23:17:51 · 3756 阅读 · 0 评论 -
Yarn设计原理分析之NodeManager
1、和其他模块之间的交互接口分析1)作为client,NodeStatusUpdater通过ResourceTracker协议和RM进行交互。该API有两个方法向RM注册NodeManager,参数为httpPort、nodeId、totalResource,其中totalResource为节点的总可分配资源,包括CPU、内存。向RM心跳,NM启动后通过定期的向RM汇报Cont...转载 2015-06-25 13:01:06 · 3428 阅读 · 0 评论 -
yarn3.2源码分析之NM端startContainer的流程(二)
概述NM端startContainer会经历一系列event:request_resource_localization类型的LocalizerEvent LocalizerTracker是LocalizerEvent的事件处理器。LocalizerTracker根据资源的类型进行资源本地化。资源有3种类型:public、private和application。public resou...原创 2019-05-12 00:28:11 · 581 阅读 · 0 评论 -
yarn3.2源码分析之NM端startContainer的流程
概述NM端启动container会经过一系列event:initApplication类型的ApplicationEvent init_application_resources类型的LocalizationEvent ResourceLocalizationService是LocalizationEvent的事件处理器。在处理init_application_resources类型的...原创 2019-05-10 17:56:56 · 831 阅读 · 0 评论 -
spark-yarn源码分析之AM在NM端startContainers事件流程
spark-yarn部分run Driverprivate def runDriver(): Unit = { addAmIpFilter(None) userClassThread = startUserApplication() // This a bit hacky, but we need to wait until the spark.driver....原创 2015-07-12 01:03:25 · 4759 阅读 · 0 评论 -
yarn3.2源码分析之moveApplication事件流程
概述yarn3.2moveApplication事件 不再经过中央异步调度器AsyncDispatcher和状态机StateMachineFactory,直接由RMAppManager直接调用scheduler处理moveApplication事件。yarn 2.6应用转移到到其它队列的日志yarn application移动到其它queue时,queue有maxShare c...原创 2019-04-12 23:34:25 · 934 阅读 · 0 评论 -
spark on yarn部署模式——yarn-client和yarn-cluster
一、yarn-cluster与standalone模式不同,yarn-cluster是基于yarn集群,yarn集群上有ResourceManager(RM)和NodeManager(NM)。1、发送请求到RM,请求启动AM2、RM会分配container,在某个NM上启动AM3、AM启动后,和RM通讯,请求container来启动executor4、RM会给AM提供一批c...转载 2018-06-03 15:36:42 · 2157 阅读 · 1 评论 -
yarn3.2源码分析之NM与RM的通信和心跳调度
概述ResourceTracker是ResourceManager与NodeManager通信使用的RPC协议。基于ResourceTracker,NodeManager可完成向ResourceManager注册、周期性心跳汇报工作,并在周期性心跳汇报中领取RM下达的命令,比如重新初始化、清理 Container等。在这个过程中,NM扮演的是RPC client的角色,而RM扮演的是RPC s...原创 2018-04-04 10:58:24 · 1221 阅读 · 0 评论 -
Hadoop YARN架构设计要点
YARN是开源项目Hadoop的一个资源管理系统,最初设计是为了解决Hadoop中MapReduce计算框架中的资源管理问题,但是现在它已经是一个更加通用的资源管理系统,可以把MapReduce计算框架作为一个应用程序运行在YARN系统之上,通过YARN来管理资源。如果你的应用程序也需要借助YARN的资源管理功能,你也可以实现YARN提供的编程API,将你的应用程序运行于YARN之上,将资源的分配...转载 2018-02-26 15:48:21 · 316 阅读 · 0 评论 -
yarn3.2源码分析之FairScheduler抢占式调度
概述FairScheduler可以通过配置yarn.scheduler.fair.preemption参数为true,开启抢占式调度,默认为false,即不开启。FairScheduler在计算这个队列允许抢占其它队列的资源大小时,如果这个队列使用的资源低于其minshare的时间超过了抢占超时时间,那么,应该抢占的资源量就在它当前的fair share和它的min share之间的差额...原创 2018-02-26 11:55:20 · 727 阅读 · 2 评论 -
Yarn 调度器Scheduler详解
概述问题引出:Capacity Scheduler和FIFO Scheduler哪个资源利用率更高?1) 默认调度器FIFOhadoop中默认的调度器,采用先进先出的原则2) 计算能力调度器CapacityScheduler选择占用资源小,优先级高的先执行3) 公平调度器FairScheduler同一队列中的作业公平共享队列中所有资源一、调度器的选择在Yarn中...转载 2018-02-26 11:44:01 · 331 阅读 · 0 评论 -
YARN Capacity Scheduler(容量调度器)
特点以队列为单位划分资源,每个队列可设定一定比例的资源最低保证和使用上限,同时,每个用户也可设定一定的资源使用上限以防止资源滥用。而当一个队列的资源有剩余时,可暂时将剩余资源共享给其他队列。总之,Capacity Scheduler主要有以下几个特点:容量保证:管理员可为每个队列设置资源最低保证和资源使用上限,而所有提交到该队列的应用程序共享这些资源 灵活性:如果一个队列中的资源有剩余,...转载 2018-02-26 11:33:25 · 1817 阅读 · 0 评论 -
yarn 3.2源码分析之ResourceManager
概述ResourceManager是一系列组件的集合。它会加载core-site.xml和yarn-site.xml,同时创建yarn scheduler、RMAppManager等一系列组件。创建yarn scheduler获取yarn.resourcemanager.scheduler.class配置项,默认是CapacityScheduler public stati...原创 2019-04-15 18:15:22 · 863 阅读 · 0 评论 -
spark较之MR快在哪里
1. IO操作 Spark是基于内存的计算,而Hadoop是基于磁盘的计算;Spark是一种内存计算技术。所谓的内存计算技术也就是缓存技术,把数据放到缓存中,减少cpu磁盘消耗。Spark和Hadoop的根本差异是多个任务之间的数据通信问题:Spark多个任务之间数据通信是基于内存,而Hadoop是基于磁盘。Hadoop每次shuffle操作后,必须写到磁盘,而Spark在shu...转载 2016-10-19 09:15:24 · 965 阅读 · 0 评论 -
hadoop-common2.7源码分析之ProtobufRpcEngine(RPC实现)
概述ProtobufRpcEngine是在RPC通信过程中,使用ptotobuf作为数据交换格式的RPC实现类。对ProtobufRpcEngine的源码分析将围绕RPC概念模型展开。RPC概念模型 RPC调用流程如下:RPC 服务端通过 RpcServer 去导出(export)远程接口方法,而客户端通过 RpcClient 去导入(import)远程接口方法。 客户端...原创 2019-02-13 23:42:11 · 1802 阅读 · 0 评论 -
yarn2.7源码分析之ApplicationMaster与ResourceManager.ApplicationMasterService的通信
概述ApplicationMaster与ResourceManager之间通信主要有以下三个步骤:1、ApplicationMaster通过rpc向ResourceManager注册。ApplicationMaster启动时,首先向ResourceManager注册,注册消息封装到ProtocolBuffers消息RegisterApplicationMasterRequest中,主要包含以...原创 2019-02-18 15:03:17 · 1483 阅读 · 0 评论 -
hadoop 2.7源码分析之RecordFactory
概述hadoop使用了protobuf作为默认的数据交换格式,但是hadoop也实现了插拔机制,允许用户使用其它的格式,如thrift等。所以,hadoop在制定接口和实现基于protobuf的底层模块时,使用了抽象工厂模式,并使用java反射对抽象工厂模式加以优化。抽象工厂模式抽象工厂模式用于生产不同产品族的全部产品。对于每一个产品族,都有一个具体工厂。而每一个具体工厂创建属于同一个...原创 2019-02-01 17:19:20 · 478 阅读 · 0 评论 -
Fair Scheduler与Capacity Scheduler比较
1、Fair SchedulerFacebook开发的适合共享环境的调度器,支持多用户多分组管理,每个分组可以配置资源量,也可限制每个用户和每个分组中的并发运行作业数量;每个用户的作业有优先级,优先级越高分配的资源越多。2、Capacity SchedulerYahoo开发的适合共享环境的调度器,支持多用户多队列管理,每个队列可以配置资源量,也可限制每个用户和每个队列的并发运行作业数量...转载 2018-02-26 11:13:42 · 2025 阅读 · 0 评论