@David Han,
I have tried an alternative approach and was successful in implementing Kafka Ingestion service in the production environment for a Kerberized Kafka cluster.
Step #1: Configure/setup a "PLAINTEXT" listener for the Kafka broker. You can follow this
Step #2: Add the following "ioConfig" specs to the Druid supervisor-spec (Druid Indexing task)
"ioConfig":{
"topic":"<Kafka_topic_name>",
"consumerProperties":{
"bootstrap.servers":"<myHost:6668(comma_separated_list_for_more_than_one_host)>",
"group.id": "<Kafka_topic_consumer_group>",
"security.protocol": "PLAINTEXT"
}
Step #3: Submit the supervisor spec as following
curl -X POST -H 'Content-Type: application/json' -d @supervisor-spec.json http://<OVERLOAD_IP>:<OVERLOAD_PORT>/druid/indexer/v1/supervisor
This indexing tasks reads events using Kafka's own partition and offset mechanism providing guaranteed exactly-once ingestion.