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包路徑。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章