zoukankan      html  css  js  c++  java
  • Oozie工作流属性配置的方式与策略

    本文原文出处: 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这样的属性名是非法的!

  • 相关阅读:
    使用CustomValidate自定义验证控件
    C#中金额的大小写转换
    Andriod出错之Unable to build: the file dx.jar was not loaded from the SDK folder!
    VC 编写的打字练习
    机房工作笔记Ping只有单向通
    web服务协同学习笔记(1)
    Dll 学习3 将MDI子窗口封装在DLL中
    机房工作学习文件共享
    Andriod出错之Failed to find an AVD compatible with target 'Android 2.2'
    Andriod出错之wrapper was not properly loaded first
  • 原文地址:https://www.cnblogs.com/ilinuxer/p/6810450.html
Copyright © 2011-2022 走看看