MapR 5.0 Documentation : Upgrade Oozie

If you installed Oozie with the MapR Installer, use the latest version of the MapR Installer to perform the upgrade. 

This page contains the following topics describing how to upgrade Oozie in the MapR distribution for Apache Hadoop:

Before you upgrade, make sure that the version of the MapR core software on your cluster supports the version of Oozie that you want to upgrade to. See the Ecosystem Support Matrix.

1. Update Repositories

MapR's rpm and deb repositories always contain the Oozie version recommended for the release of the MapR core associated with that repository.  You can connect to an internet repository or prepare a local repository with any version of Oozie you need. You can also manually download packages. 

If you plan to install from a repository, complete the following steps each node where Oozie is installed:

  1. Verify that the repository is configured correctly. See Preparing Packages and Repositories for information about setting up your ecosystem repository. 
  2. Update the repository cache

    On RedHat and CentOS...

    yum clean all

    On Ubuntu...

    apt-get update

2. Before You Upgrade

Before upgrading the Oozie software, you may need to complete the following steps:

  1. Stop any jobs or coordinators that are in a RUNNING or SUSPENDED state. 
  2. Stop the Oozie service: 

    # sudo -u mapr maprcli node services -name oozie -action stop -nodes <node names>
  3. Back up Oozie configuration files and save them in a temporary directory. If you have changed configuration properties on your current installation of Oozie, you probably want to apply those changes to the updated version after you upgrade the software. Configuration properties are located in /opt/mapr/oozie/oozie-<version>/conf/
  4. For upgrades to Oozie 4.1-1601 or below: 
    Remove org.apache.oozie.action.hadoop.EmailActionExecutor from oozie.service.ActionService.executor.ext.classes in the oozie-site.xml (/opt/mapr/oozie/oozie-<version>/conf/oozie-site.xml).
  5. Remove the old shared libraries and examples directories:

    • maprfs://oozie/share

    • maprfs://user/${user.name}/examples

3. Upgrading the Software

Use one of the following methods to upgrade the Oozie component:

To upgrade with a package manager

After configuring repositories so that the version you want to install is available, you can use a package manager to install from the repository.

On RedHat and CentOS
yum upgrade mapr-oozie-internal mapr-oozie
On Ubuntu
apt-get install mapr-oozie-internal mapr-oozie

 

To keep a prior version and install a newer version (manual installation)

Oozie installs into separate directories named after the version, such as /opt/mapr/oozie/oozie-<version>/, so the files for multiple versions can co-exist.

To keep the prior version when installing a new version, you must manually install the package file for the new version.

Perform the following steps:

  1. Download the RPM package files for mapr-oozie and mapr-oozie-internal from http://package.mapr.com/releases/ecosystem-all/.
  2. Install the package with rpm:
rpm -i --force mapr-oozie-internal-<version>.rpm mapr-oozie-<version>.rpm
This process is not supported on Ubuntu, because apt-get and dpkg cannot manage multiple versions of a package with the same name.

4. After Upgrading the Software

After you have upgrade the Oozie software packages, you may need to complete the following additional steps:

  1.  Add customized properties from the configuration files that you saved before the upgrade to the files in the new Oozie conf directory:
    /opt/mapr/oozie/oozie-<version>/conf/.
     
  2. For upgrades from Oozie 4.0.x to Oozie 4.2.0, run the following command to upgrade the database schema:

    # /opt/mapr/oozie/oozie-<version>/bin/ooziedb.sh upgrade -run
  3. When you upgrade the core MapR version on a cluster that already has Oozie installed, a packaging error results in Oozie building its WAR file with an incorrect version of maprfs.jar. To work around this issue, run the oozie-setup.sh script to rebuild the WAR file with the correct JARs:

    # sudo -u mapr maprcli node services -name oozie -action stop -nodes <nodelist>
    # sudo /opt/mapr/oozie/oozie-<version>/bin/oozie-setup.sh -hadoop <version> /opt/mapr/hadoop/hadoop-<version>
  4. If your Oozie installation is configured to use a MySQL or Oracle database:
    1. Copy the JDBC driver jar file to the following directory:

      /opt/mapr/oozie/oozie-<oozie version>/libext
    2. Run the following command to upgrade the database schema:

      # /opt/mapr/oozie/oozie-<version>/bin/ooziedb.sh upgrade -run

      This step is not required if you ran this command in step 2.

       

    3. Execute the oozie-setup.sh script to add the driver jar file to the Oozie WAR file:
      For Oozie 4.1-1506 or lower and Oozie 4.2.0 -1510 or lower: 

      # sudo /opt/mapr/oozie/oozie-<version>/bin/oozie-setup.sh -hadoop <version> /opt/mapr/hadoop/hadoop-<version> prepare-war -extjs /tmp/ext-2.2.zip


      As of Oozie 4.1.0-1601 and Oozie 4.2.0-1601:

      # sudo /opt/mapr/oozie/oozie-<version>/bin/oozie-setup.sh -hadoop <version> /opt/mapr/hadoop/hadoop-<version>
  5. Verify the status of the Oozie service and start it manually if necessary:

    # service mapr-oozie status
    # sudo -u mapr maprcli node services -name oozie -action start -nodes <nodelist>
    	    
  6. Start any Oozie coordinators that you stopped before the upgrade.
  7. As of Oozie 4.1.0-1601 and Oozie 4.2.0-1601, if the oozie.service.WorkflowAppService.system.libpath property in oozie-site.xml does not use the default value (/oozie/share/), you must run perform the following steps to update the shared libraries:

    1. Based on the cluster MapReduce mode, run one of the following commands to copy the new Oozie shared libraries to MapR-FS: 

      Cluster MapReduce ModeCommand
      YARN
      sudo -u mapr {OOZIE_HOME}/bin/oozie-setup.sh sharelib create -fs maprfs:/// -locallib /opt/mapr/oozie/oozie-<version>/share2
      
      Classic
      sudo -u mapr {OOZIE_HOME}/bin/oozie-setup.sh sharelib create -fs maprfs:/// -locallib /opt/mapr/oozie/oozie-<version>/share1
      
    2. Run the following command to update the Oozie classpath with the new shared libraries:

      sudo -u mapr {OOZIE_HOME}/bin/oozie admin -sharelibupdate