oozie 重新提交作业

在oozie的运行过程当中可能会出现错误,比如数据库连接不上,或者作业执行报错导致流程进入suspend或者killed状态,这个时候我们就要分析了,如果确实是数据或者是网络有问题,我们比如把问题解决了才可以重新运行作业。重新运行作业分两种情况,suspend状态和killed状态的,这两种状态是要通过不同的处理方式来处理的。

(1)suspend状态的我们可以用resume方式来在挂起的地方恢复作业,重新运行,或者是先杀掉它,让它进入killed状态,再进行重新运行。

public static void resumeJob(String jobId) {
        try {
            OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
            wc.resume(jobId);
        } catch (OozieClientException e) {
            log.error(e);
        }
    }
    public static void killJob(String jobId) {
        try {
            OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
            wc.kill(jobId);
        } catch (OozieClientException e) {
            log.error(e);
        }
    }

(2)killed状态的重新运行方法和它不一样,下面先贴出代码。

public static void reRunJob(String jobId, Properties conf) {
        OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
        try {
            Properties properties = wc.createConfiguration();
            properties.setProperty("nameNode", "hdfs://192.168.1.133:9000");
            properties.setProperty("queueName", "default");
            properties.setProperty("examplesRoot", "examples");
            properties
                    .setProperty("oozie.wf.application.path",
                            "${nameNode}/user/cenyuhai/${examplesRoot}/apps/map-reduce");
            properties.setProperty("outputDir", "map-reduce");
            properties.setProperty("jobTracker", "http://192.168.1.133:9001");
            properties.setProperty("inputDir",
                    "/user/cenyuhai/examples/input-data/text");
            properties.setProperty("outputDir",
                    "/user/cenyuhai/examples/output-data/map-reduce");
            properties.setProperty("oozie.wf.rerun.failnodes", "true");
            //这两个参数只能选一个,第一个是重新运行失败的节点,第二个是需要跳过的节点
            // properties.setProperty("oozie.wf.rerun.skip.nodes", ":start:");
            wc.reRun(jobId, properties);
        } catch (OozieClientException e) {
            log.error(e);
        }
    }

好,现在开始讲解,重新运行作业,除了需要原有流程的id之外,还需要重新配置作业属性,它可以和原来的属性不一样,这里面有两个属性是必须要注意的,它们是重新提交作业必须具备的属性,如果不存在就会报错的,它们分别是oozie.wf.rerun.failnodes和oozie.wf.rerun.skip.nodes。这两个必须必须存在一个,第一个是自动运行失败的流程节点,第二个是需要跳过的节点,通过设置这个属性的话,如果已经运行成功的节点不在这个属性里面的话就可以让已经运行成功的节点再运行一遍了,爽吧!

好啦,就到这吧,oozie貌似就这么多东西了,目前貌似一直都没有看到它的事务机制,它的定时作业不太想研究,看着就费劲儿,还不如自己写一个定时作业呢。。。

时间: 2024-09-13 21:59:06

oozie 重新提交作业的相关文章

oozie java api提交作业

今晚试验用java的api来提交代码,由于代码是在我机器上写的,然后提交到我的虚拟机集群当中去,所以中间产生了一个错误..要想在任意一台机器上向oozie提交作业的话,需要对hadoop的core-site.xml文件进行设置,复制到所有机器上,然后重启hadoop集群. 设置如下: <property> <name>hadoop.proxyuser.cenyuhai.hosts</name> <value>*</value> </prop

torque提交作业不运行

问题描述 torque提交作业不运行 torque提交作业后作业状态一直都是Q或者W状态,一直不运行,请问是什么原因?

Flink运行时之客户端提交作业图-上

客户端提交作业图 作业图(JobGraph)是Flink的运行时所能理解的作业表示,无论程序通过是DataStream还是DataSet API编写的,它们的JobGraph提交给JobManager以及之后的处理都将得到统一.本篇我们将分析客户端如何提交JobGraph给JobManager. 流处理程序提交作业图 在前面讲解Flink的核心概念的时候我们谈到了Flink利用了"惰性求值"的概念,只有当最终调用execute方法时,才会真正开始执行.因此,execute方法是我们的切

利用博客提交作业的程序设计课程实践模式

(本文基于本人近三年来的工作写成,发表于<计算机教育>2014年第18期) 利用博客提交作业的程序设计课程实践模式 贺利坚  卢云宏 (烟台大学 计算机学院,山东 烟台 264005) 摘  要:探讨利用博客提交作业的实践教学模式改革,在合作.模仿.主动投入理念的支持下,保证教学效果,同时也解决了作业抄袭的顽症,在养成习惯等方面给学生带来了更多的机会和额外回报.关键词:程序设计:实践:博客:互联网 0  引  言 计算机类专业程序设计课程的教学改革一直是焦点话题.无论采用案例教学,还是培养抽象

coursera机器学习的课程,用matlab怎么提交作业呢

问题描述 coursera机器学习的课程,用matlab怎么提交作业呢 急求,正在学习coursera机器学习的课程,本人英语较差,对网页上说的不是很理解

mapreduce提交作业出现报错信息

问题描述 mapreduce提交作业出现报错信息 我最近采用这种方法提交作业,把mr作业的业务逻辑打包上传至hdfs中,在eclipse中提交任务(不安装hadoop插件),报错Error: java.io.IOException: Unable to initialize any output collector,如果把mr作业的业务逻辑打包上传至hdfs节点上,就可以顺利完成. 这是为什么? Configuration conf = new Configuration(); conf.set

搭建Gateway向E-MapReduce集群提交作业

Gateway 一些客户需要自主搭建Gateway向E-MapReduce集群提交作业,目前E-MapReduce在产品页面上不支持购买Gateway,后续可以在产品上直接购买Gateway,并把Hadoop环境准备好供用户使用. 购买ECS 在ECS控制台购买ECS,公共镜像系统选择CentOS 7.2 网络 首先要保证Gateway机器在EMR对应集群的安全组中,Gateway节点可以顺利的访问EMR集群.设置机器的安全组请参考ECS的安全组设置说明. 环境 EMR-3.1.1版本 将下面脚

Flink运行时之客户端提交作业图-下

submitJob方法分析 JobClientActor通过向JobManager的Actor发送SubmitJob消息来提交Job,JobManager接收到消息对象之后,构建一个JobInfo对象以封装Job的基本信息,然后将这两个对象传递给submitJob方法: 我们会以submitJob的关键方法调用来串讲其主要逻辑.首先判断jobGraph参数,如果为空则直接回应JobResultFailure消息: 接着,向类库缓存管理器注册该Job相关的库文件.类路径: 必须确保该步骤率先成功执

oozie 客户端常用命令

1.提交作业,作业进入PREP状态  oozie job -oozie http://localhost:11000/oozie -config job.properties -submit job: 14-20090525161321-oozie-joe 2.执行已提交的作业 oozie job -oozie http://localhost:11000/oozie -start 14-20090525161321-oozie-joe 3.直接运行作业 oozie job -oozie htt