A comprehensive, Docker-based practice environment for learning and mastering Data Engineering tools. Manage Kafka, Spark, Hadoop, Airflow, and Flink with a single unified CLI.
- Docker (Docker Desktop for Windows or Docker in GitHub Codespaces)
- Python 3.8+
- 10+ GB free disk space
# Clone or navigate to the DE directory
cd C:\Users\amrmu\Downloads\DE # or your path
# Install Python dependencies
python -m pip install -r requirements.txt
# Check system requirements
python manager.py check-system# List available tools
python manager.py list
# Setup a tool (creates directories and configurations)
python manager.py setup kafka
# Start the tool
python manager.py start kafka
# Check status
python manager.py status kafka
# Stop the tool
python manager.py stop kafka
# Clean up (remove containers and volumes)
python manager.py cleanup kafka| Tool | Description | Ports |
|---|---|---|
| kafka | Apache Kafka (KRaft mode) | 9092 (Broker), 8080 (UI) |
| kafka_zookeeper | Kafka with ZooKeeper | 9093 (Broker), 2181 (ZK), 8081 (UI) |
| spark | Apache Spark cluster | 8082 (Master), 8888 (Jupyter) |
| hadoop | Hadoop HDFS + YARN | 9870 (NameNode), 8088 (YARN) |
| airflow | Workflow orchestration | 8085 (Webserver), 5555 (Flower) |
| flink | Stream processing | 8086 (JobManager) |
See LEARNING_ROADMAP.md for a comprehensive learning guide.
- Start with Kafka - Learn message streaming basics
- Move to Spark - Process data with distributed computing
- Try Airflow - Orchestrate data pipelines
- Hadoop - Understand HDFS and MapReduce
- Flink - Real-time stream processing
- Integration Projects - Combine multiple tools
Each tool has its own directory with:
README.md- Tool-specific documentation and exercisesdocker-compose.yml- Service configurationexercises/- Practice scripts and examplesdata/- Sample datasetslogs/- Application logs
# Setup and start Kafka
python manager.py setup kafka
python manager.py start kafka
# Access Kafka UI at http://localhost:8080
# Follow exercises in kafka/README.md# Interactive cleanup (removes all containers and volumes)
python manager.py clean-all
# Or use the cleanup script directly
python _manage/_clean_all.py
# Dry run (see what would be cleaned)
python _manage/_clean_all.py --dry-run
# Remove data directories too
python _manage/_clean_all.py --remove-datapython manager.py check-systemThis checks:
- Docker daemon status
- Docker Compose installation
- Python version
- Disk space
- Required Python packages
If you encounter port conflicts, you can modify ports in the tool handler files:
- Edit
_manage/_<tool>.py - Update the
portsdictionary in__init__ - Update the Docker Compose configuration in
_tool_specific_setup()
# Windows: Start Docker Desktop
# Codespaces: Docker should be pre-installed
# Verify Docker is running
docker info# Check what's using the port
netstat -ano | findstr :8080 # Windows
lsof -i :8080 # Linux/Mac
# Stop the conflicting service or use cleanup
python manager.py cleanup <tool># View logs
cd <tool-directory>
docker-compose logs
# Clean and retry
python manager.py cleanup <tool>
python manager.py setup <tool>
python manager.py start <tool># Reinstall dependencies
python -m pip install -r requirements.txt --force-reinstall
# Use virtual environment (recommended)
python -m venv venv
.\venv\Scripts\activate # Windows
source venv/bin/activate # Linux/Mac
pip install -r requirements.txtDE/
βββ manager.py # Main CLI entry point
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ LEARNING_ROADMAP.md # Learning guide
β
βββ _manage/ # Management modules (don't edit unless necessary)
β βββ README.md # Internal documentation
β βββ _base.py # Base handler class
β βββ _docker_utils.py # Docker utilities
β βββ _system_check.py # System checks
β βββ _clean_all.py # Cleanup script
β βββ _kafka.py # Kafka handler
β βββ _kafka_zookeeper.py
β βββ _spark.py
β βββ _hadoop.py
β βββ _airflow.py
β βββ _flink.py
β
βββ kafka/ # Kafka (KRaft) environment
β βββ README.md
β βββ docker-compose.yml
β βββ exercises/
β βββ data/
β βββ logs/
β
βββ kafka_zookeeper/ # Kafka with ZooKeeper
βββ spark/ # Spark environment
βββ hadoop/ # Hadoop environment
βββ airflow/ # Airflow environment
βββ flink/ # Flink environment
Each tool directory contains practice exercises:
- kafka/exercises/ - Producer/Consumer patterns, topic management
- spark/exercises/ - RDD operations, DataFrame API, Spark SQL
- hadoop/exercises/ - HDFS operations, MapReduce jobs
- airflow/dags/ - DAG examples, operators, scheduling
- flink/exercises/ - Stream processing, windowing, state management
- Use Virtual Environments - Isolate Python dependencies
- Start One Tool at a Time - Avoid resource conflicts
- Check System Requirements - Run
check-systembefore starting - Clean Up Regularly - Use
cleanupto free resources - Read Tool READMEs - Each tool has specific usage patterns
- Monitor Resources - Use
docker statsto check resource usage
# View all running containers
docker ps
# View resource usage
docker stats
# View logs for a specific service
docker-compose -f kafka/docker-compose.yml logs -f
# Execute commands in a container
docker exec -it kafka-kraft bash
# Remove all stopped containers
docker container prune- Apache Kafka Documentation
- Apache Spark Documentation
- Apache Hadoop Documentation
- Apache Airflow Documentation
- Apache Flink Documentation
This is a personal practice environment. Feel free to:
- Add new tools by creating handlers in
_manage/ - Enhance exercises in tool directories
- Improve documentation
This project is for educational purposes.
Happy Learning! π
For detailed learning paths and project ideas, see LEARNING_ROADMAP.md