ClassNotFoundException: org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory

HBaseClientService unable to connect when Phoenix is installed


Nifi使用PutHbaseJSON往HDP平台的HBASE里面写入数据时,HBase_1_1_2_ClientService enable之后,虽然显示已经Enabling,但日志提示Controller Service disabled ,报如下错误:


2016-03-31 13:24:24,101 INFO [StandardProcessScheduler Thread-5] o.a.nifi.hbase.HBase_1_1_2_ClientService HBase_1_1_2_ClientService[id=e7e9b2ed-d336-34be-acb4-6c8b60c735c2] Successfully logged in as principal [email protected] with keytab /app/env/nifi.keytab2016-03-31 13:24:24,177 ERROR [StandardProcessScheduler Thread-5] o.a.n.c.s.StandardControllerServiceNode HBase_1_1_2_ClientService[id=e7e9b2ed-d336-34be-acb4-6c8b60c735c2] Failed to invoke @OnEnabled method due to java.io.IOException: java.lang.reflect.InvocationTargetException2016-03-31 13:24:24,182 ERROR [StandardProcessScheduler Thread-5] o.a.n.c.s.StandardControllerServiceNodejava.io.IOException: java.lang.reflect.InvocationTargetExceptionat org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:240) ~[hbase-client-1.1.2.jar:1.1.2]at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218) ~[hbase-client-1.1.2.jar:1.1.2]at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:119) ~[hbase-client-1.1.2.jar:1.1.2]at org.apache.nifi.hbase.HBase_1_1_2_ClientService$1.run(HBase_1_1_2_ClientService.java:215) ~[nifi-hbase_1_1_2-client-service-0.6.0.jar:0.6.0]at org.apache.nifi.hbase.HBase_1_1_2_ClientService$1.run(HBase_1_1_2_ClientService.java:212) ~[nifi-hbase_1_1_2-client-service-0.6.0.jar:0.6.0]at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_71]at javax.security.auth.Subject.doAs(Subject.java:422) ~[na:1.8.0_71]at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1656) ~[hadoop-common-2.6.2.jar:na]at org.apache.nifi.hbase.HBase_1_1_2_ClientService.createConnection(HBase_1_1_2_ClientService.java:212) ~[nifi-hbase_1_1_2-client-service-0.6.0.jar:0.6.0]at org.apache.nifi.hbase.HBase_1_1_2_ClientService.onEnabled(HBase_1_1_2_ClientService.java:161) ~[nifi-hbase_1_1_2-client-service-0.6.0.jar:0.6.0]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_71]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_71]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_71]at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_71]at org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:137) ~[na:na]at org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:125) ~[na:na]at org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotations(ReflectionUtils.java:70) ~[na:na]at org.apache.nifi.util.ReflectionUtils.invokeMethodsWithAnnotation(ReflectionUtils.java:47) ~[na:na]at org.apache.nifi.controller.service.StandardControllerServiceNode$1.run(StandardControllerServiceNode.java:285) ~[na:na]at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_71]at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_71]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_71]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_71]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_71]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_71]at java.lang.Thread.run(Thread.java:745) [na:1.8.0_71]Caused by: java.lang.reflect.InvocationTargetException: nullat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_71]at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_71]at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_71]at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_71]at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238) ~[hbase-client-1.1.2.jar:1.1.2]... 25 common frames omittedCaused by: java.lang.UnsupportedOperationException: Unable to find org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactoryat org.apache.hadoop.hbase.util.ReflectionUtils.instantiateWithCustomCtor(ReflectionUtils.java:36) ~[hbase-common-1.1.2.jar:1.1.2]at org.apache.hadoop.hbase.ipc.RpcControllerFactory.instantiate(RpcControllerFactory.java:58) ~[hbase-client-1.1.2.jar:1.1.2]at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.createAsyncProcess(ConnectionManager.java:2242) ~[hbase-client-1.1.2.jar:1.1.2]at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.(ConnectionManager.java:690) ~[hbase-client-1.1.2.jar:1.1.2]at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.(ConnectionManager.java:630) ~[hbase-client-1.1.2.jar:1.1.2]... 30 common frames omittedCaused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactoryat java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_71]at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_71]at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_71]at java.lang.Class.forName0(Native Method) ~[na:1.8.0_71]at java.lang.Class.forName(Class.java:264) ~[na:1.8.0_71]at org.apache.hadoop.hbase.util.ReflectionUtils.instantiateWithCustomCtor(ReflectionUtils.java:32) ~[hbase-common-1.1.2.jar:1.1.2]... 34 common frames omitted2016-03-31 13:24:24,184 ERROR [StandardProcessScheduler Thread-5] o.a.n.c.s.StandardControllerServiceNode Failed to invoke @OnEnabled method of HBase_1_1_2_ClientService[id=e7e9b2ed-d336-34be-acb4-6c8b60c735c2] due to java.io.IOException: java.lang.reflect.InvocationTargetException


原因:

找不到类org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory,此类为phoenix下的类,需要将phoenix-$version-client.jar放到classpath路径下面。


解决办法:

1.通过AMBARI关闭Phoenix开关,此时HBase_1_1_2_ClientService不再需要Phoenix相关的类。

2.通过AMBARI安装Phoenix query server,将Phoenix的phoenix-$version-client.jar拷贝到nifi的work/nar/下面,在Controller Service的HBase_1_1_2_ClientService中classpath选项中指定此JAR包路径。






你可能感兴趣的:(nifi)