Ted Yu created HBASE-15752:
------------------------------
Summary: ClassNotFoundException is encountered when custom WAL
codec is not found in WALPlayer job
Key: HBASE-15752
URL: https://issues.apache.org/jira/browse/HBASE-15752
Project: HBase
Issue Type: Bug
Reporter: Ted Yu
Assignee: Ted Yu
[~cartershanklin] reported the following when he tried out back / restore
feature in a Phoenix enabled deployment:
{code}
2016-05-02 18:57:58,578 FATAL [IPC Server handler 2 on 38194]
org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task:
attempt_1462215011294_0001_m_000000_0 - exited : java.io. IOException: Cannot
get log reader
at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:344)
at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:266)
at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:254)
at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:403)
at
org.apache.hadoop.hbase.mapreduce.WALInputFormat$WALRecordReader.initialize(WALInputFormat.java:152)
at
org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:548)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:786)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1708)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:162)
Caused by: java.lang.UnsupportedOperationException: Unable to find
org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
at
org.apache.hadoop.hbase.util.ReflectionUtils.instantiateWithCustomCtor(ReflectionUtils.java:36)
at
org.apache.hadoop.hbase.regionserver.wal.WALCellCodec.create(WALCellCodec.java:103)
at
org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.getCodec(ProtobufLogReader.java:282)
at
org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.initAfterCompression(ProtobufLogReader.java:292)
at
org.apache.hadoop.hbase.regionserver.wal.ReaderBase.init(ReaderBase.java:82)
at
org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.init(ProtobufLogReader.java:149)
at org.apache.hadoop.hbase.wal.WALFactory.createReader(WALFactory.java:301)
... 12 more
Caused by: java.lang.ClassNotFoundException:
org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
{code}
This was due to the IndexedWALEditCodec (specified thru
hbase.regionserver.wal.codec) used by Phoenix being absent in hadoop classpath.
WALPlayer should handle this situation better by adding the jar for
IndexedWALEditCodec class to mapreduce job dependency.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)