Использование Phoenix с Cloudera Hbase (устанавливается из РЕПО)
Я могу заставить Phoenix работать на автономном Apache Hbase
(Обратите внимание, все это для Hbase 1.0.0 на RHEL6. 5)
Для аромата Cloudera Hbase, однако я никогда не получаю его работу без исключения из него. (даже попробовал RHEL7 minimal как en OS)
То же самое происходит с Phoenix 4.4 для Hbase 1.0.
hbase(main):001:0> version
1.0.0-cdh5.4.4, rUnknown, Mon Jul 6 16:59:55 PDT 2015
Трассировка стека:
[ec2-user@ip-172-31-60-109 phoenix-4.5.0-HBase-1.0-bin]$ bin/sqlline.py localhost:2181:/hbase
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:localhost:2181:/hbase none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:localhost:2181:/hbase
15/08/06 03:10:25 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/08/06 03:10:26 WARN impl.MetricsConfig: Cannot locate configuration: tried hadoop-metrics2-phoenix.properties,hadoop-metrics2.properties
15/08/06 03:10:27 WARN ipc.CoprocessorRpcChannel: Call failed on IOException
org.apache.hadoop.hbase.DoNotRetryIOException: org.apache.hadoop.hbase.DoNotRetryIOException: SYSTEM.CATALOG: org.apache.hadoop.hbase.client.Scan.setRaw(Z)Lorg/apache/hadoop/hbase/client/Scan;
at org.apache.phoenix.util.ServerUtil.createIOException(ServerUtil.java:84)
at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.createTable(MetaDataEndpointImpl.java:1269)
at org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService.callMethod(MetaDataProtos.java:11619)
at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:7054)
at org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:1746)
at org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:1728)
at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:31447)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2035)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.hbase.client.Scan.setRaw(Z)Lorg/apache/hadoop/hbase/client/Scan;
at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.buildDeletedTable(MetaDataEndpointImpl.java:966)
at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.loadTable(MetaDataEndpointImpl.java:1042)
at org.apache.phoenix.coprocessor.MetaDataEndpointImpl.createTable(MetaDataEndpointImpl.java:1216)
... 10 more
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:106)
at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:95)
at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRemoteException(ProtobufUtil.java:313)
at org.apache.hadoop.hbase.protobuf.ProtobufUtil.execService(ProtobufUtil.java:1609)
at org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionCoprocessorRpcChannel.java:92)
at org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel$1.call(RegionCoprocessorRpcChannel.java:89)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:126)
at org.apache.hadoop.hbase.ipc.RegionCoprocessorRpcChannel.callExecService(RegionCoprocessorRpcChannel.java:95)
at org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel.callMethod(CoprocessorRpcChannel.java:56)
at org.apache.phoenix.coprocessor.generated.MetaDataProtos$MetaDataService$Stub.createTable(MetaDataProtos.java:11799)
at org.apache.phoenix.query.ConnectionQueryServicesImpl$6.call(ConnectionQueryServicesImpl.java:1273)
at org.apache.phoenix.query.ConnectionQueryServicesImpl$6.call(ConnectionQueryServicesImpl.java:1261)
at org.apache.hadoop.hbase.client.HTable$16.call(HTable.java:1737)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.DoNotRetryIOException): org.apache.hadoop.hbase.DoNotRetryIOException: SYSTEM.CATALOG: org.apache.hadoop.hbase.client.Scan.setRaw(Z)Lorg/apache/hadoop/hbase/client/Scan;
at ...
2 ответа:
Cloudera официально не поддерживает Apache phoenix, он все еще находится в Cloudera Labs, поэтому вы не можете найти никакого Cloudera Pheonix tar.файлы gz в репозитории cloudera, единственное место, где вы можете найти Phoenix в репозитории Cloudera, находится в репозитории parcel , однако parcel можно использовать только при установке через Cloudera manager, последняя доступная версия cloudera Phoenix-4.3.0.
Если вы хотите запустить версию Phoenix 4.4 или 4.5 в дистрибутиве Cloudera Hadoop, вы можете необходимо заново построить библиотеки phoenix, используя банки зависимостей CDH. Вы не можете просто использовать Apache Phoenix tar.gz
Вот шаги.
Недавно я обнаружил, что Эндрю Пуртелл проделал огромную работу, чтобы сделать Phoenix совместимым с версией CDH. То же самое доступно в приведенной ниже ссылке на странице github. Загрузите соответствующую ветку из приведенной ниже ссылки на github. Это экономит ваше время.
Https://github.com/chiastic-security/phoenix-for-cloudera/branches
- загрузите Apache phoenix 4.5 source из репозитория Apache . (Пропустите этот шаг, если вы загружаете с вышеуказанной страницы github)
Восстановить исходный код, используя банки ЦРБ зависимость - обновление пом.xml и 2 исходных файла следующим образом(моя версия CDH-5.4.2)
[h4ck3r@host1 phoenix]$ diff phoenix-4.5_Updated/phoenix-4.5.0-HBase-1.0-src/pom.xml phoenix-4.5_Orig/phoenix-4.5.0-HBase-1.0-src/pom.xml 28c28 < <!-- <module>phoenix-pig</module> --> --- > <module>phoenix-pig</module> 37a38,41 > <id>apache release</id> > <url>https://repository.apache.org/content/repositories/releases/</url> > </repository> > <repository> 42,43c46,50 < <id>cloudera</id> < <url>https://repository.cloudera.com/artifactory/cloudera-repos</url> --- > <id>apache snapshot</id> > <url>https://repository.apache.org/content/repositories/snapshots/</url> > <snapshots> > <enabled>true</enabled> > </snapshots> 45d51 < 54d59 < 77,81c82,83 < <hbase.version>1.0.0-cdh5.4.2</hbase.version> < <hadoop-two.version>2.6.0-cdh5.4.2</hadoop-two.version> /< <hadoop.version>2.6.0-cdh5.4.2</hadoop.version> < <pig.version>0.12.0</pig.version> < <flume.version>1.5.0-cdh5.4.2</flume.version> --- > <hbase.version>1.0.1</hbase.version> > <hadoop-two.version>2.5.1</hadoop-two.version> 84a87,88 > <hadoop.version>2.5.1</hadoop.version> > <pig.version>0.13.0</pig.version> 97a102 > <flume.version>1.4.0</flume.version> 449,450c454 < < <dependency> --- > <dependency> 454c458 < </dependency> --- > </dependency> [h4ck3r@host1 phoenix]$ diff phoenix-4.5_Updated/phoenix-4.5.0-HBase-1.0-src/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexMerger.java phoenix-4.5_Orig/phoenix-4.5.0-HBase-1.0-src/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexMerger.java 84c84 < rss.getServerName(), metaEntries,1); --- > rss.getServerName(), metaEntries); [h4ck3r@host1 phoenix]$ diff phoenix-4.5_Updated/phoenix-4.5.0-HBase-1.0-src/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexSplitTransaction.java phoenix-4.5_Orig/phoenix-4.5.0-HBase-1.0-src/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/IndexSplitTransaction.java 291c291 < daughterRegions.getSecond().getRegionInfo(), server.getServerName(),1); --- > daughterRegions.getSecond().getRegionInfo(), server.getServerName()); 978c978 < } --- > } \ No newline at end of file
- выше build создаст новые банки в целевом каталоге каждого компонента.
- загрузите Apache phoenix 4.5 binary из репозитория Apache
Извлечь phoenix-4.5.0-HBase-1.0-bin.смола.gz и замените нижеприведенные банки Феникса новыми банками
- phoenix-4.5.0-HBase-1.0-клиент.jar
- phoenix-4.5.0-HBase-1.0-server-without-antlr.jar
- phoenix-4.5.0-HBase-1.0-client-minimal.кувшин
Феникс-сборка-4.5.0-HBase-1.0-тесты.jar- phoenix-4.5.0-HBase-1.0-client-without-hbase.jar
- phoenix-core-4.5.0-HBase-1.0.jar
- phoenix-4.5.0-HBase-1.0-сервер.jar
Замените
phoenix-4.5.0-HBase-1.0-server.jar
иphoenix-core-4.5.0-HBase-1.0.jar
в расположении HBase lib и перезапустите hbase. (В 4.7 только Феникс-4.7.0-cdh5.X. 1-сервер.jar для копирования в HBase lib)выполните команду phoenix из нового обновленного каталога. Из-за некоторой зависимости проблемы phoenix-pig не решаются, это просто обходной путь.