Menu

Oozie Client Install

Install and configure an Oozie client environment.

The oozie command doesnt reference any configuration. It expect the environmental variable "OOZIE_URL" to connect to the server.

Additionnal oozie properties may be defined inside the "OOZIE_CLIENT_OPTS" environmental variables. For example, HDP declare its version as "-Dhdp.version=${HDP_VERSION}".

module.exports = header: 'Oozie Client Install', handler: ({options}) ->

Register

  @registry.register 'hconfigure', 'ryba/lib/hconfigure'
  @registry.register 'hdp_select', 'ryba/lib/hdp_select'

Identities

  @system.group header: 'Group', options.group
  @system.user header: 'User', options.user

Install

Install the oozie client package. This package doesn't create any user and group.

  @call header: 'Packages', ->
    @service
      name: 'oozie-client'
    @hdp_select
      name: 'oozie-client'

Profile

Expose the "OOZIE_URL" environmental variable to every users.

  @file
    header: 'Profile Env'
    target: '/etc/profile.d/oozie.sh'
    # export OOZIE_CLIENT_OPTS='-Djavax.net.ssl.trustStore=/etc/hadoop/conf/truststore'
    content: """
    #!/bin/bash
    export OOZIE_URL=#{options.oozie_site['oozie.base.url']}
    """
    mode: 0o0755

User

  @system.group header: 'Group', options.group
  @system.user header: 'User', options.user

Configuration

  @hconfigure
    header: 'Oozie site'
    target: "#{options.conf_dir}/oozie-site.xml"
    source: "#{__dirname}/../resources/oozie-site.xml"
    local: true
    properties: options.oozie_site
    uid: options.user.name
    gid: options.group.name
    mode: 0o0755
    merge: true
    backup: true

SSL

Over HTTPS, the certificate must be imported into the JRE's keystore for the client to submit jobs. Setting the java property "javax.net.ssl.trustStore" in the "OOZIE_CLIENT_OPTS" environmental variable (both in shell and "oozie-env.sh" file) is enough to retrieve the oozie status but is not honored when submiting an Oozie job (erreur inside the mapreduce action).

At the moment, we only support adding the certificate authority into the default Java location ("$JRE_HOME/lib/security/cacerts").

keytool -keystore ${JAVA_HOME}/jre/lib/security/cacerts -delete -noprompt -alias tomcat
keytool -keystore ${JAVA_HOME}/jre/lib/security/cacerts -import -alias tomcat -file master3_cert.pem
  @java.keystore_add
    header: 'JKS Truststore'
    keystore: "#{options.jre_home or options.java_home}/lib/security/cacerts"
    storepass: "changeit"
    caname: "ryba_cluster" # was tomcat
    cacert: options.ssl.cacert.source
    local: options.ssl.cacert.local