You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Status

Current state:  Under Discussion

Discussion thread: TBD

JIRA:

Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).

Motivation

Currently tools in Kafka have three flavor of command line arguments:

  1. command line arguments using dot, e.g. --consumer.config
  2. command line arguments using dash --broker-list
  3. command line arguments using position 

#2 and #3 conforms to Unix standards while #1 does not. We want to standardize them.

Also, some tools always require config files for producer and consumer even when most people might just use default settings (ex. MirrorMaker).

Finally, some tools use a unique command line argument name for a command argument (ex. VerifyConsumerRebalance uses –zk to specify ZooKeeper URL while other tools use --zookeeper).

 

Public Interfaces

The following list summarizes the flavor of each tool we have now in Kafka. The argument style are marked in parentheses using the number in previous section.

ConsoleConsumer(1 & 2)

ConsoleProducer(2)

ConsumerOffsetChecker(2)

ConsumerPerformance(2)

DumpLogSegment(2)

ExportZkOffsets(2)

GetOffsetShell(2)

ImportZkOffsets(2)

JmxTool(2)

MirrorMaker(1)

ProducerPerformance - scala (2)

ProducerPerformance - java (3)

ReplayLogProducer(2)

ReplicaVerificationTool(2)

SimpleConsumerPerformance(2)

SimpleConsumerShell(2)

StateChangeLogMerger(2)

TestEndToEndLatency(3)

TestLogCleaning(2)

UpdateOffsetsInZk(3)

VerifyConsumerRebalacne(1)

Proposed Changes

  • Change ConsoleConsumer, VerifyConsumerRebalance tools to use style 2).
  • (Suggested by Gwen) Since mirror maker is more like a service instead of a tool. It makes sense to pass in a mirror maker config file.
  • Standardize command line argument naming by making the following argument name changes:
CommandOld Argument NameNew Argument Name
kafka-console-consumer.shconsumer.configconsumer-config
kafka-consumer-offset-checker.shsocket.timeout.mssocket-timeout-ms
kafka-consumer-offset-checker.shretry.backoff.msretry-backoff-ms 
ExportZkOffsets.scalazkconnectzookeeper
ImportZkOffsets.scalazkconnectzookeeper
KafkaMigrationTool.javaconsumer.configconsumer-config
KafkaMigrationTool.javaproducer.configproducer-config
KafkaMigrationTool.javanum.producersnum-producers
KafkaMigrationTool.javanum.streamsnum-streams
KafkaMigrationTool.javaqueue.sizequeue-size
kafka-mirror-maker.shconsumer.configconsumer-config
kafka-mirror-maker.shproducer.configproducer-config
kafka-mirror-maker.shnum.streamsnum-streams
kafka-producer-perf-test.shrequest-num-acksrequest-required-acks
kafka-replay-log-producer.shinputtopicinput-topic
kafka-replay-log-producer.shoutputtopicoutput-topic
kafka-replica-verification.shtopic-white-listwhitelist
kafka-replica-verification.shreport-interval-msreporting-interval
kafka-simple-consumer-shell.shfetchsizefetch-size
TestLogCleaning.scalazkzookeeper
VerifyConsumerRebalance.scalazookeeper.connectzookeeper
TestLinearWriteSpeed.scalacompressioncompression-codec
TestOffsetManager.scalathread-countthreads
TestOffsetManager.scalareporting-interval-msreporting-interval

 

Note that the following additional command line argument standardizations will be tracked via KAFA-1293 but are not part of this KIP since they are less invasive:

  • Add 'help' command line argument to any top-level tool scripts that were missing it.
  • Properly format argument descriptions (into sentences) and add any missing "REQUIRED" notes.

Compatibility, Deprecation, and Migration Plan

  • What impact (if any) will there be on existing users? - Previously used command line arguments will no longer function.
  • If we are changing behavior how will we phase out the older behavior? - End-users will need to adapt.
  • If we need special migration tools, describe them here. - None but note that Kafka Documentation & Wiki pages will need to be updated.
  • When will we remove the existing behavior? Users building from 

Rejected Alternatives

None

  • No labels