0

I work with vanilla versions of components

  • Apache Kafka 3.3.2 Scala 2.12
  • Apache Ranger 2.3.0

server.properties: authorizer.class.name=org.apache.ranger.authorization.kafka.authorizer.RangerKafkaAuthorizer

The necessary libraries copied to $KAFKA_HOME/libs

  • ranger-kafka-plugin-impl/
  • ranger-kafka-plugin-shim-2.3.0.jar
  • ranger-plugin-classloader-2.3.0.jar

When starting kafka, I get an error

Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]: java.lang.NoClassDefFoundError: kafka/security/auth/Authorizer
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/java.lang.ClassLoader.defineClass1(Native Method)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/java.lang.Class.forName0(Native Method)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/java.lang.Class.forName(Class.java:398)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at org.apache.kafka.common.utils.Utils.loadClass(Utils.java:419)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:408)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at kafka.security.authorizer.AuthorizerUtils$.createAuthorizer(AuthorizerUtils.scala:31)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at kafka.server.KafkaConfig.createNewAuthorizer(KafkaConfig.scala:1689)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at kafka.server.KafkaServer.startup(KafkaServer.scala:386)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at kafka.Kafka$.main(Kafka.scala:109)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at kafka.Kafka.main(Kafka.scala)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]: Caused by: java.lang.ClassNotFoundException: kafka.security.auth.Authorizer
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
Jul 27 07:32:01 kafka01 kafka-server-start.sh[892961]:         ... 18 more

It looks like a library version conflict, maybe Ranger is compiled wrong

Do you have any ideas how to fix it?

UP: Apparently there is a version conflict I compiled the Ranger version from the wizard and there is not this error... It is a pity that the problem is not solved in the stable version of ranger 2.3 or 2.4

Alatau
  • 41
  • 1
  • 6

1 Answers1

0

Nothing is compiled wrong. See https://github.com/apache/ranger/pull/133

This interface indeed does not exist in that version of Kafka, nor does that package

https://kafka.apache.org/33/javadoc/allpackages-index.html

You fix it by using a lower version of Kafka that does include it, or newer Ranger that uses correct interfaces. E.g. Ranger 2.4.0 release only builds against Kafka 2.8.1

OneCricketeer
  • 179,855
  • 19
  • 132
  • 245