本文原文出处: http://blog.csdn.net/bluishglc/article/details/46049817

Oozie工作流属性配置的三种方式

Oozie有三种方法可以给工作流提供属性属性配置:

  1. App部署文件夹根目录下的:config-default.xml
  2. 作业属性文件:job.properties
  3. 在命令行中指定属性:-Dkey=value

Oozie工作流属性配置的策略(最佳实践)

坦率地讲,三种配置相互重叠,全部使用会使属性的配置过于分散,使得查找和定位属性变得繁琐。就我个人的经验,我倾向于这样做:

  1. 对于静态的,不会因每次启动而发生成改变的配置项,全部配置在config-default.xml,因为这个文件是Oozie部署自包含(self-contained application)应用程序规范的一部分,也就是说这个文件会被自动加载并读取,就如同J2EE的中web.xml一样,所以把静态的配置项写在这里是最理想的。

  2. 对于动态的,会因为每次启动而变化的配置项(典型的例子是coordinator的start time), 通过命令行的方式指定是最合适的。

  3. 通常,大多数的构建工具(比如maven)都能够在构建时根据build的目标环境替换配置文件中的一些变量,我们应该利用这个特性,对config-default.xml和命令行(假如你有一个命令行脚本的话)中的与环境相关的属性在构建时进行替换。典型的例子是nameNode和jobTracker。

  4. 避免使用job.properties,因为job.properties是一个本地文件,它显然没有config-default.xml方便,因为config-default.xml是自包含的。

综上所属,一个简洁地启动工作流的命令行应该是这个样子的:首先,指定oozie.wf.application.path或oozie.coord.application.path或oozie.bundle.application.path是必不可少的,因为至少你要告诉oozie,你的应用程序放在哪里,然后我们需要从命令行中再指定一些动态参数。因此,通过命令行启动一个工作流往往会是这样的:

oozie job -run \
-Doozie.wf.application.path=hdfs://your-namenode:8020/your/app/path \
-DPARAM1=${PARAM1} \
-DPARAM1=${PARAM2}

至于工作流其他的属性配置,都已存放于hdfs://your-namenode:8020/your/app/path/config-default.xml中。

Oozie工作流属性的命名规范

最后,作为一个补充,我们来谈谈oozie对其属性命名的要求:

- Properties that are a valid Java identifier, [A-Za-z_][0-9A-Za-z_]* , are available as '${NAME}' variables within the workflow definition.

- **Properties that are not valid Java Identifier, for example 'job.tracker'**, are available via the String wf:conf(String name) function.

是的,看上去也是有点奇葩的规定了,对于Oozie的属性名,只允许 使用数字、字母和下滑线,类似于job.tracker这样的属性名是非法的!

Oozie工作流属性配置的方式与策略的更多相关文章

  1. Hystrix属性配置策略

    Hystrix属性配置 Command可配参数 设置隔离策略 execution.isolation.strategy = THREAD 设置超时时间 execution.isolation.thre ...

  2. 高可用Hadoop平台-Oozie工作流之Hadoop调度

    1.概述 在<高可用Hadoop平台-Oozie工作流>一篇中,给大家分享了如何去单一的集成Oozie这样一个插件.今天为大家介绍如何去使用Oozie创建相关工作流运行与Hadoop上,已 ...

  3. 高可用Hadoop平台-Oozie工作流

    1.概述 在开发Hadoop的相关应用使用,在业务不复杂,任务不多的情况下,我们可以直接使用Crontab去完成相关应用的调度.今天给大家介绍的是统一管理各种调度任务的系统,下面为今天分享的内容目录: ...

  4. hibernate属性配置

    数据库中一个字段的默认值设为0,当用hibernate插入数据时,没有对该字段进行操作,结果该字段居然不是0,而是空.后来google了一下,发现应该在.hbm.xml文件中添加一些参数定义(示例中的 ...

  5. ExtJs控件属性配置详细

    序言:    1.本文摘自网络,看控件命名像是4.0以前的版本,但控件属性配置仍然可以借鉴(不足之处,以后项目用到时再续完善). Ext.form.TimeField: 配置项:            ...

  6. Spring 学习笔记 4. 尚硅谷_佟刚_Spring_属性配置细节

    1,字面值 •字面值:可用字符串表示的值,可以通过 <value> 元素标签或 value 属性进行注入. •基本数据类型及其封装类.String 等类型都可以采取字面值注入的方式 •若字 ...

  7. Spring声明式事务(xml配置事务方式)

    Spring声明式事务(xml配置事务方式) >>>>>>>>>>>>>>>>>>>& ...

  8. Spark学习笔记-三种属性配置详细说明【转】

    相关资料:Spark属性配置  http://www.cnblogs.com/chengxin1982/p/4023111.html 本文出处:转载自过往记忆(http://www.iteblog.c ...

  9. Spring Boot 属性配置和使用

    Spring Boot 属性配置和使用 Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot ...

随机推荐

  1. Java 基础【14】@注解

    1.注解简介 JDK 1.5 中引入的 java.lang.annotation 包提供注解编程支持,可以让类在编译.类加载.运行时被读取,并执行相应的处理. 在 Java EE应用的时候,总是免不了 ...

  2. 三分钟彻底禁用、隐藏Android设备底部虚拟按钮(亲测有效)

       转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7613970.html Android设备屏幕底部一般都有虚拟导航栏,上面有 back.home等按钮. ...

  3. 一个封装的使用Apache HttpClient进行Http请求(GET、POST、PUT等)的类。

    一个封装的使用Apache HttpClient进行Http请求(GET.POST.PUT等)的类. import com.qunar.payment.gateway.front.channel.mp ...

  4. java 浮点运算

      CreateTime--2017年12月1日11:35:00 Author:Marydon java 浮点类型(float.double)间的运算工具类 /** * 进行BigDecimal对象的 ...

  5. 微软Xbox One无线手柄控制机器人

    ROS中的joy包提供了游戏手柄的驱动,并且包含joy_node节点,这一节点可以发布包含手柄按钮和轴信息的Joy消息.在终端中输入下面命令,安装joy包: $ sudo apt-get instal ...

  6. 三种常用的MySQL建表语句

    MySQL建表语句是最基础的SQL语句之一,下面就为您介绍最常用的三种MySQL建表语句,如果您对MySQL建表语句方面感兴趣的话,不妨一看. 1.最简单的: CREATE TABLE t1(    ...

  7. js 动态控制 input 框 的只读属性

    需求: 当下拉框的值为06即Voucher时, 文本框才可输入, 其他情况均为置灰不可录入状态. 问题: 设置input框的只读属性写成了readonly="true" 尼玛,坑死 ...

  8. sid-msg.map文件概述

    我这边编写了magic对应的指定文件规则,但是运行的时候发现储存的文件中包含我未指定的数据文件: 在rules下边看的时候,发现有sid-msg.map文件,上网了解下这个文件是干啥的.. 下边文章来 ...

  9. [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'beginTime';

    依照https://stackoverflow.com/questions/23702041/failed-to-convert-property-value-of-type-java-lang-st ...

  10. Cobbler自动部署主机系统

    Cobbler自动部署主机系统 简介: Cobbler由python语言开发,是对PXE和 Kickstart以及DHCP的封装.融合很多特性,提供了CLI和Web的管理形式.更加方便的实行网络安装. ...