当我使用“火花流”读取“ 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认证之间存在冲突 有谁可以给我一些建议吗?
答案 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>
有效