本文原文出处: 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. 记:青岛理工ACM交流赛筹备工作总结篇

    这几天筹备青岛理工ACM交流赛的过程中遇到了不少问题也涨了不少经验.对非常多事也有了和曾经不一样的看法, ​一直在想事后把这几天的流水帐记一遍,一直没空直到今天考完C++才坐下来開始动笔.将这几天的忙 ...

  2. 字符串匹配算法——BF、KMP、Sunday

    一:Brute force 从源串的第一个字符开始扫描,逐一与模式串的对应字符进行匹配,若该组字符匹配,则检测下一组字符,如遇失配,则退回到源串的第二个字符,重复上述步骤,直到整个模式串在源串中找到匹 ...

  3. 在Ubuntu上安装pyenv 相关问题Common build problems

    Requirements: Ubuntu/Debian: sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libb ...

  4. 如何去掉browserLinkSignalR

    在使用vs开发时查看源代码可以发现最下面有以下代码,此段代码会一直请求网络,感觉不爽的可以这样去掉: <!-- Visual Studio Browser Link --> <scr ...

  5. cocos2d-js Shader系列1:cocos2d-js Shader和OpenGL ES2.0

    cocos2d的Shader也就是差不多直接跟GPU打交道了,跟Flash的Stage3D(AGAL)类似,不过没有AGAL这么恶心,不需要直接编写汇编语言.而Fragment Shader又跟Fla ...

  6. Java之创建对象>4.Enforce noninstantiability with a private constructor

    如果你定义的类仅仅是包含了一些静态的方法和静态的字段,这些类一般是一些工具类,这些一般是设计为不能被实例化的. 1. Attempting to enforce noninstantiability ...

  7. 要想找出包含“w”的名字

    要想找出包含“w”的名字:mysql> SELECT * FROM pet WHERE name LIKE '%w%'“_”:匹配任何单个字符“%”:匹配任意数目字符(包括零字符)

  8. Spring Cloud开发实践 - 03 - 接口实现和下游调用

    接口实现 Scot Commons Impl 接口实现模块 scot-commons-impl, 一方面实现了 scot-commons-api 的接口, 一方面将自己暴露为 REST 服务. 有4个 ...

  9. TCP/IP协议——TCP/IP协议栈及框架

    TCP/IP协议同ISO/OSI模型一样,也可以安排成栈形式.但这个栈不同于ISO/OSI版本,比ISO/OSI栈少,所以又称之为短栈.另外,需要知道的是:TCP/IP协议栈只是许多支持ISO/OSI ...

  10. 你应该知道的HTTP基础知识

    本文主要内容: HTTP请求报文格式 HTTP响应报文格式 Header 请求体的3种形式 推荐调试工具 HTTP的组成图示 1. HTTP请求报文格式 HTTP 的请求报文分为三个部分 请求行.请求 ...