我們剛剛從CDH 5.3.6升級到5.10.0,並在嘗試寫入Kafka主題時開始出現錯誤。我們有一切默認設置,沒有啓用SSL或Kerberos身份驗證。當使用控制檯生產者寫我的話題之一,我得到這個錯誤:Cloudera上的Kafka - test = TOPIC_AUTHORIZATION_FAILED
/usr/bin/kafka-console-producer --broker-list = myhost1.dev.com:9092,myhost2.dev。 COM:9092 --topic測試
17/03/06 21:00:57 INFO utils.AppInfoParser: Kafka version : 0.10.0-kafka-2.1.0
17/03/06 21:00:57 INFO utils.AppInfoParser: Kafka commitId : unknown
x
17/03/06 21:00:59 WARN clients.NetworkClient: Error while fetching metadata with correlation id 0 : {test=TOPIC_AUTHORIZATION_FAILED}
尋找位於/ var /日誌/卡夫卡/,我看到一堆這些異常:
2017-03-06 21:00:26,964 WARN org.apache.sentry.provider.common.HadoopGroupMappingService: Unable to obtain groups for ANONYMOUS
java.io.IOException: No groups found for user ANONYMOUS
at org.apache.hadoop.security.Groups.noGroupsForUser(Groups.java:190)
at org.apache.hadoop.security.Groups.getGroups(Groups.java:210)
at org.apache.sentry.provider.common.HadoopGroupMappingService.getGroups(HadoopGroupMappingService.java:60)
at org.apache.sentry.provider.common.ResourceAuthorizationProvider.getGroups(ResourceAuthorizationProvider.java:167)
at org.apache.sentry.provider.common.ResourceAuthorizationProvider.doHasAccess(ResourceAuthorizationProvider.java:97)
at org.apache.sentry.provider.common.ResourceAuthorizationProvider.hasAccess(ResourceAuthorizationProvider.java:91)
at org.apache.sentry.kafka.binding.KafkaAuthBinding.authorize(KafkaAuthBinding.java:212)
at org.apache.sentry.kafka.authorizer.SentryKafkaAuthorizer.authorize(SentryKafkaAuthorizer.java:63)
at kafka.server.KafkaApis$$anonfun$kafka$server$KafkaApis$$authorize$2.apply(KafkaApis.scala:321)
at kafka.server.KafkaApis$$anonfun$kafka$server$KafkaApis$$authorize$2.apply(KafkaApis.scala:321)
at scala.Option.map(Option.scala:146)
at kafka.server.KafkaApis.kafka$server$KafkaApis$$authorize(KafkaApis.scala:321)
at kafka.server.KafkaApis$$anonfun$30.apply(KafkaApis.scala:702)
at kafka.server.KafkaApis$$anonfun$30.apply(KafkaApis.scala:702)
at scala.collection.TraversableLike$$anonfun$partition$1.apply(TraversableLike.scala:314)
at scala.collection.TraversableLike$$anonfun$partition$1.apply(TraversableLike.scala:314)
at scala.collection.immutable.Set$Set1.foreach(Set.scala:94)
at scala.collection.TraversableLike$class.partition(TraversableLike.scala:314)
at scala.collection.AbstractTraversable.partition(Traversable.scala:104)
at kafka.server.KafkaApis.handleTopicMetadataRequest(KafkaApis.scala:702)
at kafka.server.KafkaApis.handle(KafkaApis.scala:79)
at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:60)
at java.lang.Thread.run(Thread.java:745)
我一直在尋找一個解決的辦法,但到目前爲止已空無一人。我是否需要將ANONYMOUS用戶分配給某個組?我能夠在CDH 5.3.6中將消息寫入我的主題,但升級時出現問題。
試圖讓helloWorld/Quickstart例子在升級到CDH 5.10.0後再次在我們的DEV Kafka上工作。
-----------------臨時解決方法解決方案---
在Cloudera的經理5.10沒有在卡夫卡配置的super.users屬性。將匿名添加到該列表中,允許我從我的主題中製作和使用。
我已經嘗試在/opt/cloudera/parcels/KAFKA-2.1.0-1.2.1.0.p0.115/etc/kafka/conf.dist/server.properties中執行此操作,該操作無效。所以Cloudera必須在其他地方管理這些價值。
您可以檢查您爲_authorizer.class.name_設置的值嗎?如果沒有配置Kerberos或SSL,如果在此處設置了某些內容,仍可以強制執行ACL,但是每個連接的用戶都將被認證爲「匿名」,這是您在日誌中可以看到的內容。 –
我修改了/opt/cloudera/parcels/KAFKA-2.1.0-1.2.1.0.p0.115/etc/kafka/conf.dist/server.properties以擁有此行:authorizer.class.name = kafka.security。 auth.SimpleAclAuthorizer但它似乎並不重要,我甚至不確定這是否是正確的文件,或者如何驗證更改是否生效。 – medloh
是的,那裏拉是什麼造成這個(不知道該文件,但似乎適合)。通過該行,您可以告訴Kafka將ACL應用於所有連接嘗試 - 所有這些都將與「ANONYMOUS」無關。我建議刪除該行,一切都應該工作。或者,你可以在配置中將ANONYMOUS設置爲超級用戶,它應該具有相同的效果,但不提供任何額外的安全性,所以不是非常有用的imo。 –