使用kafka和HBase引起的冲突

时间:2018-11-15 14:15:31

标签: apache-spark apache-kafka hbase

当我使用“火花流”读取“ kafka”(需要进行sasl验证),然后将数据存储到“ HBase”时,“ HBase”会出现以下错误

  

java.io.IOException:java.lang.reflect.InvocationTargetException           在org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:240)           在org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218)           在org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:181)           在com.xueersi.datamining.ups.database.implement.HbaseClient.connect(HbaseClient.scala:91)           在com.xueersi.datamining.ups.stream.start.BaseInfoLogAnalysisStart $$ anonfun $ main $ 1 $$ anonfun $ apply $ 2.apply(BaseInfoLogAnalysisStart.scala:78)处           在com.xueersi.datamining.ups.stream.start.BaseInfoLogAnalysisStart $$ anonfun $ main $ 1 $$ anonfun $ apply $ 2.apply(BaseInfoLogAnalysisStart.scala:75)处           在org.apache.spark.rdd.RDD $$ anonfun $ foreachPartition $ 1 $ anonfun $ apply $ 29.apply(RDD.scala:925)           在org.apache.spark.rdd.RDD $$ anonfun $ foreachPartition $ 1 $ anonfun $ apply $ 29.apply(RDD.scala:925)           在org.apache.spark.SparkContext $$ anonfun $ runJob $ 5.apply(SparkContext.scala:1956)           在org.apache.spark.SparkContext $$ anonfun $ runJob $ 5.apply(SparkContext.scala:1956)           在org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)           在org.apache.spark.scheduler.Task.run(Task.scala:99)           在org.apache.spark.executor.Executor $ TaskRunner.run(Executor.scala:325)           在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)           在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)           在java.lang.Thread.run(Thread.java:748)   造成原因:java.lang.reflect.InvocationTargetException           在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)处           在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)           在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)           在java.lang.reflect.Constructor.newInstance(Constructor.java:423)           在org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238)           ...另外15个   造成原因:java.lang.ExceptionInInitializerError           在org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:64)           在org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:75)           在org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105)           在org.apache.hadoop.hbase.client.ConnectionManager $ HConnectionImplementation.retrieveClusterId(ConnectionManager.java:931)           在org.apache.hadoop.hbase.client.ConnectionManager $ HConnectionImplementation。(ConnectionManager.java:658)           ...另外20个   造成原因:java.lang.NullPointerException           在org.apache.kafka.common.security.plain.PlainSaslServer $ PlainSaslServerFactory.getMechanismNames(PlainSaslServer.java:163)           在org.apache.hadoop.security.SaslRpcServer $ FastSaslServerFactory。(SaslRpcServer.java:381)           在org.apache.hadoop.security.SaslRpcServer.init(SaslRpcServer.java:186)           在org.apache.hadoop.ipc.RPC.getProtocolProxy(RPC.java:570)           在org.apache.hadoop.hdfs.NameNodeProxies.createNNProxyWithClientProtocol(NameNodeProxies.java:418)   在org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:314)           在org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider $ DefaultProxyFactory.createProxy(ConfiguredFailoverProxyProvider.java:68)处           在org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider.getProxy(ConfiguredFailoverProxyProvider.java:152)           在org.apache.hadoop.io.retry.RetryInvocationHandler。(RetryInvocationHandler.java:75)           在org.apache.hadoop.io.retry.RetryInvocationHandler。(RetryInvocationHandler.java:66)           在org.apache.hadoop.io.retry.RetryProxy.create(RetryProxy.java:58)           在org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:181)           在org.apache.hadoop.hdfs.DFSClient。(DFSClient.java:762)           在org.apache.hadoop.hdfs.DFSClient。(DFSClient.java:693)           在org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:158)           在org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2816)           在org.apache.hadoop.fs.FileSystem.access $ 200(FileSystem.java:98)           在org.apache.hadoop.fs.FileSystem $ Cache.getInternal(FileSystem.java:2853)           在org.apache.hadoop.fs.FileSystem $ Cache.get(FileSystem.java:2835)           在org.apache.hadoop.fs.FileSystem.get(FileSystem.java:387)           在org.apache.hadoop.fs.FileSystem.get(FileSystem.java:186)           在org.apache.hadoop.fs.FileSystem.get(FileSystem.java:371)           在org.apache.hadoop.fs.Path.getFileSystem(Path.java:296)           在org.apache.hadoop.hbase.util.DynamicClassLoader.initTempDir(DynamicClassLoader.java:120)           在org.apache.hadoop.hbase.util.DynamicClassLoader。(DynamicClassLoader.java:98)           在org.apache.hadoop.hbase.protobuf.ProtobufUtil。(ProtobufUtil.java:246)           ...另外25个

但是,当我阅读另​​一个“ Kafka”(未经sasl验证)时,“ HBase”没有问题。 此外,“ kerberos”身份验证需要“ HBase” 我认为kafka的sasl认证和hbase的kerberos认证之间存在冲突 有谁可以给​​我一些建议吗?

1 个答案:

答案 0 :(得分:0)

我似乎找到了答案:https://issues.apache.org/jira/browse/KAFKA-5294

然后我手动指定依赖项(我以前使用的版本是0.10.2.1)

<dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.11</artifactId>
        <version>0.11.0.0</version>
        <scope>compile</scope>
</dependency>

有效