根据官方提供的方法,用HADOOP_CLASSPATH=`hadoop classpath`集成hadoop成功。
因为flink on yarn是用的cdh6集群,所以我想利用现有的classpath中的包含的hbase库,使用 export HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH/lib/hbase/lib/*:$HADOOP_CLASSPATH 然后用yarn-session创建一个flink运行环境,再用sql-client连接这个容器,创建hbase映射表,这种用法失败:分析提示是找不到hbase包。 ./bin/yarn-session.sh -d -s 4 -nm common-flink -jm 1024m -tm 4096m ./bin/sql-client.sh embedded -e conf/sql-env.yaml sql-env.yaml configuration: execution.target: yarn-session 再将hbase包复制到flink_home/lib这种方式,结果一下就掉到了深深的坑里: 尝试1.ClassNotFoundException: org.apache.hadoop.hbase.client.HTable 尝试2.ClassNotFoundException: org.apache.hbase.thirdparty.com.google.common.util.concurrent.ListeningExecutorService 尝试3.ClassNotFoundException: org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$BlockingInterface 尝试4.复制hbase-shaded-client-2.1.0-cdh6.3.0.jar到lib,类冲突整个yarn-session都无法启动容器 尝试5\6\7.同3 尝试8\9.ClassNotFoundException: org.apache.hbase.thirdparty.com.google.protobuf.RpcController 尝试9.ClassNotFoundException: org.apache.hbase.thirdparty.io.netty.channel.EventLoopGroup 尝试10.NoSuchMethodError: org.apache.hadoop.hbase.client.HTable.getTableName()[B at org.apache.flink.runtime.executiongraph.ExecutionJobVertex.<init>(ExecutionJobVertex.java:272) 直到尝试9通过复制jar包到lib下都解决了,现在lib包下的hbase依赖包有: hbase-client-2.1.0-cdh6.3.0.jar hbase-common-2.1.0-cdh6.3.0.jar hbase-protocol-2.1.0-cdh6.3.0.jar hbase-protocol-shaded-2.1.0-cdh6.3.0.jar hbase-shaded-miscellaneous-2.2.1.jar hbase-shaded-netty-2.2.1.jar hbase-shaded-protobuf-2.2.1.jar 直到尝试10时解决方法除了修改源代码,想问还有什么解决方法没有?或者有什么好的方法集成hbase? |
Administrator
|
1. 提示“找不到hbase包” 具体的异常栈是什么呢?
2. 看你的步骤中也没有加 flink hbase connector jar 到 lib 下,这会导致找不到 hbase table factory 3. flink 1.11 版本的时候还没有提供 hbase 2.x connector jar 4. flink 1.12 版本支持了 hbase 2.x,理论上也兼容 flink 1.11 集群。 所以你可以试下 download https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-hbase-2.2_2.11/1.12.0/flink-sql-connector-hbase-2.2_2.11-1.12.0.jar 这个 jar 到 flink/lib 下(这个 jar 已经 shade 了 hbase jar),然后用 HADOOP_CLASSPATH=`hadoop classpath`集成hadoop,应该就能 work。具体可以参考下 1.12 的文档 [1]。 Best, Jark [1]: https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/table/connectors/hbase.html On Tue, 8 Dec 2020 at 17:40, site <[hidden email]> wrote: > 根据官方提供的方法,用HADOOP_CLASSPATH=`hadoop classpath`集成hadoop成功。 > 因为flink on yarn是用的cdh6集群,所以我想利用现有的classpath中的包含的hbase库,使用 > > export > HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH/lib/hbase/lib/*:$HADOOP_CLASSPATH > > > 然后用yarn-session创建一个flink运行环境,再用sql-client连接这个容器,创建hbase映射表,这种用法失败:分析提示是找不到hbase包。 > > > > > ./bin/yarn-session.sh -d -s 4 -nm common-flink -jm 1024m -tm 4096m > > ./bin/sql-client.sh embedded -e conf/sql-env.yaml > > > > > sql-env.yaml > > configuration: > > execution.target: yarn-session > > > > > 再将hbase包复制到flink_home/lib这种方式,结果一下就掉到了深深的坑里: > > 尝试1.ClassNotFoundException: org.apache.hadoop.hbase.client.HTable > > 尝试2.ClassNotFoundException: > org.apache.hbase.thirdparty.com.google.common.util.concurrent.ListeningExecutorService > > 尝试3.ClassNotFoundException: > org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$BlockingInterface > > 尝试4.复制hbase-shaded-client-2.1.0-cdh6.3.0.jar到lib,类冲突整个yarn-session都无法启动容器 > > 尝试5\6\7.同3 > > 尝试8\9.ClassNotFoundException: > org.apache.hbase.thirdparty.com.google.protobuf.RpcController > > 尝试9.ClassNotFoundException: > org.apache.hbase.thirdparty.io.netty.channel.EventLoopGroup > > 尝试10.NoSuchMethodError: > org.apache.hadoop.hbase.client.HTable.getTableName()[B > > at > org.apache.flink.runtime.executiongraph.ExecutionJobVertex.<init>(ExecutionJobVertex.java:272) > > > > > 直到尝试9通过复制jar包到lib下都解决了,现在lib包下的hbase依赖包有: > > hbase-client-2.1.0-cdh6.3.0.jar > > hbase-common-2.1.0-cdh6.3.0.jar > > hbase-protocol-2.1.0-cdh6.3.0.jar > > hbase-protocol-shaded-2.1.0-cdh6.3.0.jar > > hbase-shaded-miscellaneous-2.2.1.jar > > hbase-shaded-netty-2.2.1.jar > > hbase-shaded-protobuf-2.2.1.jar > > > > > 直到尝试10时解决方法除了修改源代码,想问还有什么解决方法没有?或者有什么好的方法集成hbase? |
Free forum by Nabble | Edit this page |