Configure High Availability for Oozie
Prerequisites
IMPORTANT This component is deprecated. Hewlett Packard
Enterprise recommends using an alternate product. For more information, see Discontinued Ecosystem Components.
To
configure HA for Oozie on your cluster, the cluster must meet the following prerequisites:
- Your cluster must have access to a database with support for multiple concurrent connections. To prevent this database from becoming a single point of failure, the database must support HA. HA for the Oozie service works regardless of the database’s HA status. See MySQL Data Store for Oozie.
- To prevent the ZooKeeper service from becoming a single point of failure, your cluster must have at least 3 ZooKeeper nodes. You can still configure HA for Oozie on clusters with a single ZK node.
- Multiple nodes on the cluster must have Oozie installed. For installation
instructions, see the Installing MapR and MapR Ecosystem Components.
NOTE For greater consistency of behavior on your cluster, verify that all of the Oozie servers have the same configuration.
- A load balancer, virtual IP, or round-robin DNS set up, such as HAProxy. To prevent the load balancer from becoming a single point of failure, the load balancer must support HA.
Procedure
- Verify that the Oozie servers are all configured to connect to the same database. Do not start Oozie.
-
On each Oozie node, edit the
oozie-site.xml
file to add the following section, which changes the results in Oozie using the Zookeeper's version of the services, overriding the default implementations:<property> <name>oozie.services.ext</name> <value> org.apache.oozie.service.ZKLocksService, org.apache.oozie.service.ZKXLogStreamingService, org.apache.oozie.service.ZKJobsConcurrencyService, org.apache.oozie.service.ZKUUIDService </value> </property>
-
On each Oozie node, edit the
oozie-site.xml
file to include a comma-separated list of the host names and ports for the ZooKeeper servers. For example:<property> <name>oozie.zookeeper.connection.string</name> <value>zk1:5181,zk2:5181,zk3:5181</value> </property>
-
On each Oozie node, edit the
oozie-site.xml
file to include the Oozie server host name:<property> <name>oozie.http.hostname</name> <value><FQDN></value> </property>
-
On each Oozie node, edit the
oozie-site.xml
file to specify the namespace. Each Oozie server that communicates to other Oozie servers must use the same namespace:<property> <name>oozie.zookeeper.namespace</name> <value>oozie</value> </property>
-
On each Oozie node, change the value of the
OOZIE_BASE_URL
property in theoozie-site.xml
file to point to the load balancer or virtual IP.<property> <name>oozie.base.url</name> <value>http://my.loadbalancer.hostname:<oozie_port_number>/oozie</value> </property>
The
<oozie_port_number>
depends on whether your cluster is secure. -
On all nodes, update the services line in the
warden.oozie.conf
file (stored at/opt/mapr/conf/conf.d
; or for a fresh installation, at/opt/mapr/oozie/oozie-<version>/conf/warden.oozie.conf
) from:
toservices=oozie:1:cldb
services=oozie:all:cldb
-
Run the
configure.sh -R
command. -
Run Oozie share lib update command to make sure that all Oozie services use the
latest and the same version:
{OOZIE_HOME}/bin/oozie admin -oozie="http(s)://my.loadbalancer.hostname:<oozie_port_number>" -sharelibupdate