Yarn 事件分发调度

原创
2017/05/03 23:51
阅读数 129

 

yarn:调度框架,基于事件

    AsyncDispatcher:异步事件分发器,总管道
        参数:
            事件队列:BlockingQueue<Event> eventQueue
            事件分发器:eventDispatchers = new HashMap<Class<? extends Enum>, EventHandler>()
        方法:
            dispatch(event):将事件进行分发到对应的事件处理器 EventHandler
        内部类:
            GenericEventHandler,将事件添加到队列中,implements EventHandler
        
        
    ApplicationAttemptEventDispatcher:二次分发,implements EventHandler
        handle(RMAppAttemptEvent event)
            调用rmAppAttempt.handle(event);
    
    RMAppImpl:implements EventHandler
        handle(e):事件处理

远程调试准备:
    1.设置ResourceManagers 的 JVM 开启远程调试功能。
        enable_yarn-remotedebug.sh:启用脚本
            export YARN_RESOURCEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000"
        disable_yarn-remotedebug.sh:停用脚本
            export YARN_RESOURCEMANAGER_OPTS=
    2.执行脚本,并source *.sh 生效
    3.启动 start-yarn.sh
    4.在win7下配置eclipse的远程调试,连接到RM的8000端口
        a.Re sourceManager 的main方法添加断点
    5.在ResourceManager类上选择Debug as--> debug configuration
    6.打开调试窗口 --》remote java Application
        connectionType:socket attack
        Host:s0
        port:8000
        

job:
    1.application
    2.application 基于状态机模型。
        NEW 
        NEW_SAVING 
        SUBMITTED 
        ACCEPTED 
        RUNNING 
        FINISHED 
        FAILED 
        KILLED 

    3.状态之间的变换通过事件触发的。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部