Architecture Diagram
Migration Phases
Discovery & Baseline
- Inventory all topics, partitions, replication factors
- Audit consumer groups and current offsets
- Capture producer/consumer throughput and SLAs
- Document all Schema Registry schemas (Avro/Protobuf/JSON)
- Map Cloudera Ranger policies → Kafka ACLs
- Identify Kafka Connect connectors and custom SMTs
- Profile retention, compaction, and tiered storage needs
- Assess KSQL queries and streaming jobs
Target Cluster Build
- Provision OSS Kafka brokers in KRaft mode (3+ controllers)
- Apply identical partition counts and replication factors
- Deploy Confluent or Apicurio Schema Registry
- Migrate all schemas; verify compatibility modes
- Re-create ACLs (SASL/TLS + Ranger-equivalent ACLs)
- Configure Prometheus JMX exporters + Grafana dashboards
- Set up Cruise Control for auto-rebalancing
- Deploy Terraform/Helm IaC for reproducibility
Data Replication & Shadowing
- Deploy MirrorMaker 2 for all topic replication
- Configure MM2 offset sync and heartbeat topics
- Enable consumer group shadow mode on OSS cluster
- Run parallel consumers; compare message parity
- Validate end-to-end latency and throughput parity
- Test failover/failback with MM2 checkpoints
- Validate all Connect connectors on OSS cluster
- Re-implement KSQL queries in ksqlDB OSS
Cutover Execution
- Migrate consumers cluster-by-cluster (start non-critical)
- Use dual-write interceptor for producers during transition
- Translate consumer group offsets via MM2 checkpoints
- Monitor consumer lag on both clusters in real time
- Migrate producers once consumers are fully validated
- Disable MirrorMaker 2 after full cutover confirmed
- Decommission Cloudera-specific components (ZooKeeper, Ranger)
- Update DNS, service discovery, and client configs
Stabilization & Decommission
- Run 2-week post-cutover monitoring period
- Tune broker configs (buffer sizes, fetch limits, GC)
- Validate Cruise Control auto-rebalancing in prod
- Update runbooks and operational documentation
- Train ops team on OSS tooling (AKHQ, Kafka UI)
- Decommission Cloudera cluster and license revocation
- Archive Atlas metadata and export to OpenMetadata
- Complete security audit of new ACL policies
Component Mapping
| Cloudera Component | OSS Replacement | Migration Notes | Effort |
|---|---|---|---|
| ZooKeeper | KRaft (built-in) | Deploy fresh in KRaft mode. ZK migration path available via kafka-storage tool for existing clusters. |
Low |
| Cloudera Manager | Terraform + Helm + AKHQ | Replace GUI-based management with IaC. AKHQ/Kafka UI for topic & consumer group UI. Conduct ops training. | Medium |
| Cloudera Schema Registry | Confluent SR or Apicurio | Export all schemas via SR REST API. Import into target SR. Validate subject naming strategy and compatibility settings. | Medium |
| Kafka Connect (CM) | Kafka Connect OSS | Export connector JSON configs. Re-deploy on OSS workers. Validate custom SMTs and converters are available on classpath. | Medium |
| KSQL (CM) | ksqlDB OSS | Export KSQL DDL statements. Re-run on ksqlDB OSS. Validate persistent queries and UDFs. API is wire-compatible. | Medium |
| Ranger / Sentry | Kafka ACLs + OPA | Script Ranger policy export to native Kafka ACLs via kafka-acls.sh. Consider OPA for fine-grained RBAC. |
Medium |
| Atlas (Metadata) | OpenMetadata / DataHub | Export Atlas entities via REST. Ingest via OpenMetadata Kafka connector. Map lineage graphs manually for complex flows. | High |
| Cloudera Replication | MirrorMaker 2 | Deploy MM2 as standalone or as Connect cluster. Configure active-passive replication per topic. Monitor with JMX metrics. | Low |
| CM Metrics / Alerts | Prometheus + Grafana | Deploy JMX Exporter sidecar per broker. Import community Kafka Grafana dashboards. Recreate all CM alerts in Alertmanager. | Low |
Risk Register
Translated offsets from MM2 checkpoints may lag, causing message duplication or skipped records during cutover.
__consumer_offsets sync. Validate lag on both clusters before consumer migration. Run in shadow mode for ≥72 hrs.Schema Registry subject naming strategies may differ between Cloudera SR and Confluent/Apicurio SR.
Ranger RBAC policies don't map 1:1 to native Kafka ACLs; granularity differences may cause auth failures.
Proprietary Cloudera Connect plugins or custom transformations may not exist in OSS ecosystem.
OSS Kafka tuning defaults differ from Cloudera-optimized configs, potentially degrading throughput temporarily.
num.io.threads, socket.send.buffer.bytes, batch sizes before go-live.Ops team may be unfamiliar with KRaft mode controller management and metadata quorum operations.
kafka-metadata-quorum.sh tooling. Document all operational runbooks before go-live.