Bird
Raised Fist0
Kafkadevops~3 mins

Why Log compaction in Kafka? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

What if your data log could clean itself and always show the freshest info instantly?

The Scenario

Imagine you have a huge notebook where you write down every change to your contacts list. Each time you update a phone number, you add a new line instead of erasing the old one. Over time, the notebook becomes bulky and hard to find the latest number.

The Problem

Manually searching through all entries to find the latest update is slow and tiring. It's easy to make mistakes by reading old data or missing the newest info. Also, the notebook grows endlessly, wasting space and making backups slow.

The Solution

Log compaction automatically keeps only the latest update for each key, like having a smart notebook that erases old phone numbers and keeps just the newest one. This way, you always get the current data quickly without sifting through old entries.

Before vs After
✗ Before
append all changes to log
search entire log for latest key value
✓ After
enable log compaction
Kafka keeps only latest record per key
What It Enables

Log compaction lets systems efficiently store and retrieve the latest state of data streams, saving space and speeding up access.

Real Life Example

In a messaging app, log compaction ensures the server keeps only the latest status of each user (online/offline), so clients quickly get current info without processing all past status changes.

Key Takeaways

Manual logs grow large and slow to search.

Log compaction keeps only the newest update per key.

This improves storage efficiency and data retrieval speed.

Practice

(1/5)
1. What is the main purpose of log compaction in Kafka?
easy
A. To compress messages to save disk space
B. To delete all messages older than a certain time
C. To replicate messages across multiple brokers
D. To keep only the latest message for each key in a topic

Solution

  1. Step 1: Understand log compaction concept

    Log compaction keeps the latest message per key, removing older duplicates.
  2. Step 2: Compare with other options

    Deleting old messages is retention, compression is different, replication is for fault tolerance.
  3. Final Answer:

    To keep only the latest message for each key in a topic -> Option D
  4. Quick Check:

    Log compaction = latest message per key [OK]
Hint: Log compaction keeps latest per key, not all old messages [OK]
Common Mistakes:
  • Confusing log compaction with time-based retention
  • Thinking compression means log compaction
  • Mixing replication with compaction
2. Which configuration enables log compaction on a Kafka topic?
easy
A. cleanup.policy=delete
B. cleanup.policy=compact
C. log.compaction.enabled=true
D. retention.ms=0

Solution

  1. Step 1: Identify correct cleanup policy

    Log compaction is enabled by setting cleanup.policy=compact on the topic.
  2. Step 2: Eliminate incorrect options

    cleanup.policy=delete is default retention, log.compaction.enabled is invalid, retention.ms controls time retention.
  3. Final Answer:

    cleanup.policy=compact -> Option B
  4. Quick Check:

    Enable compaction with cleanup.policy=compact [OK]
Hint: Remember: compact, not delete, enables log compaction [OK]
Common Mistakes:
  • Using cleanup.policy=delete instead of compact
  • Assuming a separate 'log.compaction.enabled' setting exists
  • Confusing retention.ms with compaction setting
3. Given a compacted Kafka topic with keys and values:
key1: v1, key2: v2, key1: v3, key3: v4
What messages remain after log compaction?
medium
A. key1: v3, key2: v2, key3: v4
B. key1: v1, key2: v2, key3: v4
C. key1: v3, key2: v2
D. key2: v2, key3: v4

Solution

  1. Step 1: Identify latest message per key

    For key1, latest is v3; key2 is v2; key3 is v4.
  2. Step 2: List messages after compaction

    Only latest per key remain: key1:v3, key2:v2, key3:v4.
  3. Final Answer:

    key1: v3, key2: v2, key3: v4 -> Option A
  4. Quick Check:

    Latest message per key kept [OK]
Hint: Keep only last message per key after compaction [OK]
Common Mistakes:
  • Keeping all messages instead of only latest per key
  • Confusing order and keeping first message per key
  • Dropping keys incorrectly
4. You set cleanup.policy=compact on a topic but notice old messages are not removed. What is a likely cause?
medium
A. The topic has no keys in messages
B. The retention.ms is set to 0
C. The broker is running in debug mode
D. The topic has too many partitions

Solution

  1. Step 1: Understand log compaction requirement

    Log compaction requires messages to have keys to identify duplicates.
  2. Step 2: Analyze why old messages remain

    If messages lack keys, compaction cannot remove duplicates, so old messages stay.
  3. Final Answer:

    The topic has no keys in messages -> Option A
  4. Quick Check:

    Compaction needs keys to remove old messages [OK]
Hint: Compaction needs keys; no keys means no compaction [OK]
Common Mistakes:
  • Assuming retention.ms=0 disables compaction
  • Blaming debug mode for compaction issues
  • Thinking partition count affects compaction directly
5. You want to store the current state of user profiles in Kafka using log compaction. Which approach is best?
hard
A. Use a topic with cleanup.policy=delete and produce messages without keys
B. Use a topic with retention.ms=0 and produce messages with random keys
C. Use a topic with cleanup.policy=compact and produce messages with user ID as key
D. Use a topic with cleanup.policy=compact but produce messages without keys

Solution

  1. Step 1: Identify requirements for storing current state

    Current state needs latest update per user, so keys must be user IDs.
  2. Step 2: Choose correct topic configuration

    Log compaction enabled with cleanup.policy=compact keeps latest per key.
  3. Step 3: Eliminate wrong options

    Delete policy removes old messages by time, no keys prevent compaction, random keys break state tracking.
  4. Final Answer:

    Use a topic with cleanup.policy=compact and produce messages with user ID as key -> Option C
  5. Quick Check:

    Compaction + keys = current state storage [OK]
Hint: Use compact policy and keys for current state topics [OK]
Common Mistakes:
  • Using delete policy for state storage
  • Producing messages without keys
  • Using random keys that break compaction logic
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