Bird
Raised Fist0
Kafkadevops~20 mins

MirrorMaker 2 concept in Kafka - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
MirrorMaker 2 Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
What is the primary role of MirrorMaker 2 in Kafka?
MirrorMaker 2 is a tool used in Kafka ecosystems. What is its main purpose?
ATo manage Kafka topic configurations automatically
BTo compress Kafka messages to save storage space
CTo monitor Kafka cluster health and performance metrics
DTo replicate data between Kafka clusters for disaster recovery and geo-replication
Attempts:
2 left
💡 Hint
Think about data movement between clusters.
❓ Predict Output
intermediate
2:00remaining
What output does this MirrorMaker 2 configuration produce?
Given this MirrorMaker 2 configuration snippet, what will be the effect?
Kafka
clusters = {
  'primary': {
    'bootstrap.servers': 'primary.kafka:9092'
  },
  'secondary': {
    'bootstrap.servers': 'secondary.kafka:9092'
  }
}

tasks.max = 2

replication.policy.class = org.apache.kafka.connect.mirror.DefaultReplicationPolicy

# Replicate all topics from primary to secondary
source.cluster = primary
target.cluster = secondary
ANo topics will be replicated because tasks.max is too low
BOnly topics starting with 'primary' will be replicated
CAll topics from the primary cluster will be replicated to the secondary cluster
DTopics will be replicated from secondary to primary cluster
Attempts:
2 left
💡 Hint
Look at source and target cluster settings.
🔧 Debug
advanced
2:30remaining
Why does this MirrorMaker 2 setup fail to replicate topics?
This MirrorMaker 2 config does not replicate any topics. Identify the cause.
Kafka
clusters = {
  'clusterA': {
    'bootstrap.servers': 'clusterA.kafka:9092'
  },
  'clusterB': {
    'bootstrap.servers': 'clusterB.kafka:9092'
  }
}

tasks.max = 1

replication.policy.class = org.apache.kafka.connect.mirror.DefaultReplicationPolicy

source.cluster = clusterA
target.cluster = clusterB

# Missing topics whitelist filter
ABecause no topics are specified in the whitelist, no topics are replicated
BBecause tasks.max is set to 1, replication is disabled
CBecause replication.policy.class is incorrect, replication fails
DBecause source and target clusters are reversed, replication fails
Attempts:
2 left
💡 Hint
Check if topics are selected for replication.
📝 Syntax
advanced
2:00remaining
Which MirrorMaker 2 configuration snippet is syntactically correct?
Select the configuration snippet that is valid for MirrorMaker 2.
A
clusters = { 'src' => { 'bootstrap.servers' => 'src.kafka:9092' }, 'dest' => { 'bootstrap.servers' => 'dest.kafka:9092' } }
tasks.max=3
source.cluster=src
target.cluster=dest
B
clusters = { 'src': { 'bootstrap.servers': 'src.kafka:9092' }, 'dest': { 'bootstrap.servers': 'dest.kafka:9092' } }
tasks.max=3
source.cluster=src
target.cluster=dest
C
clusters = [ 'src': { 'bootstrap.servers': 'src.kafka:9092' }, 'dest': { 'bootstrap.servers': 'dest.kafka:9092' } ]
tasks.max=3
source.cluster=src
target.cluster=dest
D
clusters = { 'src': { 'bootstrap.servers': 'src.kafka:9092' }, 'dest': { 'bootstrap.servers': 'dest.kafka:9092' } }
tasks.max=three
source.cluster=src
target.cluster=dest
Attempts:
2 left
💡 Hint
Look for correct data structure and value types.
🚀 Application
expert
3:00remaining
How does MirrorMaker 2 handle topic offsets during replication?
When MirrorMaker 2 replicates topics between clusters, how does it manage consumer offsets to ensure consumers can continue seamlessly?
AIt replicates consumer offsets to the target cluster's __consumer_offsets topic to maintain consumer group state
BIt resets all consumer offsets to zero on the target cluster after replication
CIt does not replicate offsets; consumers must manually reset offsets on the target cluster
DIt stores offsets externally in a separate database outside Kafka
Attempts:
2 left
💡 Hint
Think about how consumer groups keep track of their position.

Practice

(1/5)
1. What is the main purpose of Kafka MirrorMaker 2?
easy
A. To copy data between Kafka clusters for backup and availability
B. To create new Kafka topics automatically
C. To monitor Kafka cluster health
D. To compress Kafka messages for storage

Solution

  1. Step 1: Understand MirrorMaker 2 role

    MirrorMaker 2 is designed to replicate data from one Kafka cluster to another to ensure data safety and availability.
  2. Step 2: Compare options with MirrorMaker 2 function

    Only To copy data between Kafka clusters for backup and availability describes copying data between clusters, which matches MirrorMaker 2's purpose.
  3. Final Answer:

    To copy data between Kafka clusters for backup and availability -> Option A
  4. Quick Check:

    MirrorMaker 2 purpose = Data replication [OK]
Hint: MirrorMaker 2 copies data between clusters for safety [OK]
Common Mistakes:
  • Confusing MirrorMaker 2 with monitoring tools
  • Thinking it creates topics automatically
  • Assuming it compresses messages
2. Which configuration is required to specify the source Kafka cluster in MirrorMaker 2?
easy
A. producer.bootstrap.servers
B. replica.bootstrap.servers
C. mirror.bootstrap.servers
D. consumer.bootstrap.servers

Solution

  1. Step 1: Identify source cluster connection

    MirrorMaker 2 uses consumer configs to read from the source Kafka cluster.
  2. Step 2: Match config key to source cluster

    The correct config key for source cluster is consumer.bootstrap.servers, which tells MirrorMaker 2 where to consume data from.
  3. Final Answer:

    consumer.bootstrap.servers -> Option D
  4. Quick Check:

    Source cluster = consumer.bootstrap.servers [OK]
Hint: Source cluster uses consumer.bootstrap.servers config [OK]
Common Mistakes:
  • Using producer.bootstrap.servers for source cluster
  • Confusing config keys with mirror.bootstrap.servers
  • Assuming replica.bootstrap.servers is valid
3. Given this MirrorMaker 2 config snippet:
{
  "source.cluster.bootstrap.servers": "source:9092",
  "target.cluster.bootstrap.servers": "target:9092",
  "topics": "topicA,topicB",
  "num.streams": 3
}

How many parallel streams will MirrorMaker 2 use to copy data?
medium
A. 3
B. 2
C. 1
D. 4

Solution

  1. Step 1: Locate num.streams setting

    The config sets "num.streams" to 3, which controls how many parallel streams MirrorMaker 2 uses.
  2. Step 2: Understand effect of num.streams

    More streams mean more parallelism in copying data, so MirrorMaker 2 will use 3 streams here.
  3. Final Answer:

    3 -> Option A
  4. Quick Check:

    num.streams = 3 [OK]
Hint: Check num.streams value for parallelism count [OK]
Common Mistakes:
  • Assuming default 1 stream if not read carefully
  • Confusing topics count with streams count
  • Ignoring num.streams config
4. You configured MirrorMaker 2 with:
topics = "topic1,topic2"
num.streams = 0

What is the problem with this configuration?
medium
A. topics must be a single topic, not multiple
B. num.streams cannot be zero; it must be at least 1
C. topics should be configured as a list, not a string
D. num.streams must be an even number

Solution

  1. Step 1: Check num.streams value validity

    num.streams controls parallel streams and must be at least 1 to work properly.
  2. Step 2: Identify error in config

    Setting num.streams to 0 disables streams, causing MirrorMaker 2 to fail or not copy data.
  3. Final Answer:

    num.streams cannot be zero; it must be at least 1 -> Option B
  4. Quick Check:

    num.streams ≥ 1 required [OK]
Hint: num.streams must be ≥ 1, zero disables copying [OK]
Common Mistakes:
  • Thinking topics must be single only
  • Assuming num.streams can be zero
  • Believing num.streams must be even
5. You want MirrorMaker 2 to replicate only topics starting with "logs-" from source to target cluster. Which config setting achieves this?
hard
A. "topics": "logs-*"
B. "topics": "logs-"
C. "topics.regex": "logs-.*"
D. "topics.regex": "^logs$"

Solution

  1. Step 1: Understand topic filtering in MirrorMaker 2

    MirrorMaker 2 supports filtering topics by regex using the "topics.regex" config.
  2. Step 2: Match regex to desired pattern

    To match all topics starting with "logs-", the regex "logs-.*" correctly matches any topic beginning with "logs-".
  3. Step 3: Compare options

    "topics": "logs-*" uses "topics" with wildcard which is not supported; "topics": "logs-" matches exact topic name; "topics.regex": "^logs$" matches only "logs" exactly.
  4. Final Answer:

    "topics.regex": "logs-.*" -> Option C
  5. Quick Check:

    Use topics.regex with proper regex for filtering [OK]
Hint: Use topics.regex with regex pattern to filter topics [OK]
Common Mistakes:
  • Using wildcard * in topics instead of regex
  • Confusing exact match with regex match
  • Using incorrect regex that matches wrong topics
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard