zoukankan      html  css  js  c++  java
  • “流”式思想解决hadoop job调度的一种思路

     本文基于"流"式思想解决Job调度的问题:

    1.关于Job调度的基本要点:

      什么时候启动Job、执行中的Job监控、某个Job可能需要几步完成、Job信息的存储介质、控制同一时间运行的Job个数

    2.方案:

      1).存储介质:

        以javaBean的形式存储在zookeeper上

      2).调度的思想:

        a).三棵树——prepare、working、failed,其结构分别为prepare/粒度/javaBean;working树结构为:working/粒度/步骤数/javaBean;failed为failed/javaBean;

        b).启动和监控逻辑:为每个粒度的Job启动一个线程,每隔一定时间(可配置)扫描hadoop集群中此粒度的数据是否满足Job启动的条件,如果满足,则在prepare树下添加一个节点;

          再为每个粒度的Job启动一个FlowJobContainer对象,此容器里包含着Job的n个步骤,为每个步骤启动一个线程,每隔一段时间获取此步骤节点下的javaBean节点信息,根据其Job的状态(成功、失败、超时、失败次数超过给定数),分别进行(进行下一步的Job、重新执行此Job并且更新javaBean信息、killed Job and run again、将此javaBean节点mv到failed树下)操作;

          这里有个关键点要特别注意:所有的步骤监控线程持有一个步骤数(1...n),每次间隔一段时间去查看working/粒度/步骤数下是否有节点信息,如果有,则进行监控,否则sleep等待;通过working树下所有正在运行的job个数(javaBean子节点个数)和给定的同时运行的最大Job数量差值m,由第一步的线程决定是否激活一个Job流(即从prepare树下取得m个节点,启动Job流并将prepare此粒度的节点mv到working树对应节点下的1/目录下)

    3.如需讨论,请邮箱联系:lifeonhadoop@gmail.com

  • 相关阅读:
    Leetcode 1489找到最小生成树李关键边和伪关键边
    Leetcode 113 路径总和 II
    hdu 1223 还是畅通工程
    hdu 1087 Super Jumping! Jumping! Jumping!
    hdu 1008 Elevator
    hdu 1037 Keep on Truckin'
    湖工oj 1241 畅通工程
    湖工oj 1162 大武汉局域网
    hdu 2057 A + B Again
    poj 2236 Wireless Network
  • 原文地址:https://www.cnblogs.com/uttu/p/2920382.html
Copyright © 2011-2022 走看看