Wednesday, January 7, 2015

Oozie pig job fails with "Provider org.apache.hadoop.hdfs.HftpFileSystem$TokenManager not found"


MapR 4.0.0 or above.


Oozie pig job fails with below errors by running command "oozie job -log <jobID>":
Error starting action [pig-node]. ErrorType [TRANSIENT], ErrorCode [JA009], Message [JA009: java.util.ServiceConfigurationError: Provider org.apache.hadoop.hdfs.HftpFileSystem$TokenManager not found
        at java.util.ServiceLoader.access$300(
        at java.util.ServiceLoader$
        at java.util.ServiceLoader$
        at org.apache.hadoop.mapred.JobInProgress.<init>(
        at org.apache.hadoop.mapred.JobTracker.submitJob(
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(
        at java.lang.reflect.Method.invoke(
        at org.apache.hadoop.ipc.WritableRpcEngine$Server$
        at org.apache.hadoop.ipc.RPC$
        at org.apache.hadoop.ipc.Server$Handler$
        at org.apache.hadoop.ipc.Server$Handler$
        at Method)
        at org.apache.hadoop.ipc.Server$
Even sample oozie pig job fails in this case.

Root Cause:

For MapR 4.0.0 or above version, oozie pig job should use PIG JARs under sub-directory "pig-2" of share lib. For MapR versions earlier than 4.0.0, it should use the Pig JARs from the "pig" sub-directory of share lib.
In this case, the root cause is most likely that the PIG JARs are using wrong ones.


1. On oozie node, identify the MapR-FS path of the share lib used by oozie.

Check "oozie.service.WorkflowAppService.system.libpath" from /opt/mapr/oozie/oozie-<version>/conf/oozie-site.xml.
By default:
            System library path to use for workflow applications.
            This path is added to workflow application if their job properties sets
            the property 'oozie.use.system.libpath' to true.

2. Confirm if the PIG JARs exist in the "pig-2" sub-directory of share lib.

For example:

hadoop fs -ls /oozie/share/lib/pig-2

3. Add below configuration to the oozie job's workflow.xml and then push it on the expected HDFS path.


4. Re-run the oozie example pig job to confirm it works fine.

No comments:

Post a Comment

Popular Posts