🔧 Setup Environnement
Guide d’installation progressif pour le bootcamp Data Engineering
Installez uniquement les outils du niveau que vous commencez. Vous ajouterez les autres au fur et à mesure de votre progression.
📋 Prérequis Système
| Composant | Minimum | Recommandé |
|---|---|---|
| OS | macOS 12+, Ubuntu 20.04+, Windows 10+ (WSL2) | macOS 13+, Ubuntu 22.04+ |
| RAM | 8 Go | 16 Go |
| CPU | 4 cœurs | 8 cœurs |
| Disque | 50 Go libres | 100 Go SSD |
Utilisez WSL2 (Windows Subsystem for Linux) pour une meilleure compatibilité. Guide d’installation WSL2
🟦 Niveau 1 : Débutant
Outils requis : Git, Python, Jupyter, VS Code, PostgreSQL, MongoDB
1.1 Git
brew install gitsudo apt update
sudo apt install gitsudo apt update
sudo apt install gitConfiguration initiale
git config --global user.name "Votre Nom"
git config --global user.email "votre.email@example.com"
git config --global init.defaultBranch main
# Vérifier
git --version # ✓ 2.30+1.2 Python
brew install python@3.11sudo apt update
sudo apt install python3.11 python3.11-venv python3-pipsudo apt update
sudo apt install python3.11 python3.11-venv python3-pipEnvironnement virtuel
# Créer le venv
python3 -m venv ~/bootcamp-env
# Activer (Linux/macOS)
source ~/bootcamp-env/bin/activate
# Activer (Windows PowerShell)
.\bootcamp-env\Scripts\Activate.ps1
# Mettre à jour pip
pip install --upgrade pip
# Packages Niveau Débutant
pip install pandas numpy matplotlib seaborn requests# Vérifier
python3 --version # ✓ 3.10+1.3 Jupyter Notebook
# Activer votre venv
source ~/bootcamp-env/bin/activate
# Installer Jupyter
pip install jupyter jupyterlab notebook ipykernel
# Enregistrer le kernel
python -m ipykernel install --user --name=bootcamp --display-name="Python (Bootcamp)"Lancer Jupyter
# JupyterLab (recommandé)
jupyter lab
# Ou Notebook classique
jupyter notebookJupyterLab s’ouvre sur http://localhost:8888. Utilisez --port=8889 si le port est occupé.
1.4 VS Code
Installation
brew install --cask visual-studio-codesudo snap install code --classicTélécharger depuis code.visualstudio.com
Extensions Niveau Débutant
| Extension | ID | Description |
|---|---|---|
| Python | ms-python.python |
Support Python |
| Jupyter | ms-toolsai.jupyter |
Notebooks dans VS Code |
| Pylance | ms-python.vscode-pylance |
IntelliSense |
| GitLens | eamodio.gitlens |
Git avancé |
| SQL Tools | mtxr.sqltools |
Client SQL |
# Installation en ligne de commande
code --install-extension ms-python.python
code --install-extension ms-toolsai.jupyter
code --install-extension ms-python.vscode-pylance
code --install-extension eamodio.gitlens
code --install-extension mtxr.sqltoolsConfiguration VS Code
Ajoutez dans Settings JSON (Ctrl+, → Open Settings JSON) :
{
"python.defaultInterpreterPath": "~/bootcamp-env/bin/python",
"editor.formatOnSave": true,
"editor.fontSize": 14,
"files.autoSave": "afterDelay"
}1.5 PostgreSQL
# Option 1 : Installation locale
# macOS
brew install postgresql@15
brew services start postgresql@15
# Ubuntu
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql# Option 2 : Avec Docker (si vous l'avez déjà)
docker run -d \
--name postgres \
-e POSTGRES_USER=bootcamp \
-e POSTGRES_PASSWORD=bootcamp \
-e POSTGRES_DB=bootcamp \
-p 5432:5432 \
postgres:151.6 MongoDB
# Option 1 : MongoDB Atlas (recommandé - gratuit, cloud)
# Créer un compte sur https://www.mongodb.com/atlas
# Créer un cluster gratuit M0# Option 2 : Docker
docker run -d \
--name mongodb \
-p 27017:27017 \
mongo:7# Client Python
pip install pymongo✅ Checklist Niveau Débutant
echo "=== 🟦 Vérification Niveau Débutant ==="
git --version
python3 --version
jupyter --version | head -1
code --version | head -1
echo "=== ✅ Done ==="🟩 Niveau 2 : Intermédiaire
Nouveaux outils : Docker, Kubernetes, Spark, Kafka, MinIO, dbt, Polars
Avoir installé tous les outils du Niveau Débutant.
2.1 Docker
brew install --cask docker
# Lancer Docker Desktop depuis Applications# Installer Docker Engine
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Permissions (éviter sudo)
sudo usermod -aG docker $USER
newgrp docker
# Docker Compose
sudo apt install docker-compose-pluginInstaller Docker Desktop avec WSL2 backend.
Vérification
docker --version # ✓ 24+
docker compose version # ✓ 2.20+
docker run hello-world2.2 Kubernetes (kubectl + minikube)
kubectl
brew install kubectlcurl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
rm kubectlminikube
brew install minikube
minikube start --memory=4096 --cpus=2 --driver=dockercurl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
rm minikube-linux-amd64
minikube start --memory=4096 --cpus=2 --driver=dockerVérification
kubectl version --client # ✓ 1.28+
minikube status
kubectl get nodes2.3 Java (requis pour Spark)
brew install openjdk@11
# Ajouter à ~/.zshrc
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
export PATH="$JAVA_HOME/bin:$PATH"
source ~/.zshrcsudo apt install openjdk-11-jdk
# Ajouter à ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH="$JAVA_HOME/bin:$PATH"
source ~/.bashrcjava -version # ✓ 11+2.4 Apache Spark
# Activer votre venv
source ~/bootcamp-env/bin/activate
# Installer PySpark
pip install pyspark==3.5.0
# Vérifier
pyspark --version # ✓ 3.5+Test rapide
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("test").getOrCreate()
df = spark.createDataFrame([(1, "ok")], ["id", "status"])
df.show()
spark.stop()2.5 Apache Kafka
Créez docker-compose-kafka.yml :
version: '3.8'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.5.0
container_name: zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ports:
- "2181:2181"
kafka:
image: confluentinc/cp-kafka:7.5.0
container_name: kafka
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
kafka-ui:
image: provectuslabs/kafka-ui:latest
container_name: kafka-ui
depends_on:
- kafka
ports:
- "8090:8080"
environment:
KAFKA_CLUSTERS_0_NAME: local
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092docker compose -f docker-compose-kafka.yml up -d
# UI disponible sur http://localhost:8090# Client Python
pip install kafka-python confluent-kafka2.6 MinIO (S3 local)
docker run -d \
--name minio \
-p 9000:9000 \
-p 9001:9001 \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin \
-v minio_data:/data \
minio/minio server /data --console-address ":9001"
# Console sur http://localhost:90012.7 Polars & Delta Lake
source ~/bootcamp-env/bin/activate
pip install polars pyarrow delta-spark deltalake2.8 dbt
pip install dbt-core dbt-postgres dbt-duckdb
dbt --version # ✓ 1.7+2.9 Extensions VS Code Niveau Intermédiaire
code --install-extension ms-azuretools.vscode-docker
code --install-extension ms-kubernetes-tools.vscode-kubernetes-tools
code --install-extension redhat.vscode-yaml✅ Checklist Niveau Intermédiaire
echo "=== 🟩 Vérification Niveau Intermédiaire ==="
docker --version
docker compose version
kubectl version --client | head -1
java -version 2>&1 | head -1
python3 -c "import pyspark; print('PySpark:', pyspark.__version__)"
python3 -c "import polars; print('Polars:', polars.__version__)"
dbt --version | head -1
echo "=== ✅ Done ==="🟥 Niveau 3 : Avancé
Nouveaux outils : Helm, k9s, Airflow, Scala, outils monitoring
Avoir installé tous les outils des Niveaux Débutant et Intermédiaire.
3.1 Helm
brew install helmcurl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bashhelm version # ✓ 3.13+3.2 k9s (Terminal UI pour Kubernetes)
brew install k9scurl -sS https://webinstall.dev/k9s | bash# Lancer k9s
k9s3.3 Apache Airflow
# Avec pip (développement local)
pip install apache-airflow==2.8.0
# Initialiser la DB
airflow db init
# Créer un user admin
airflow users create \
--username admin \
--password admin \
--firstname Admin \
--lastname User \
--role Admin \
--email admin@example.com
# Lancer
airflow webserver --port 8080 &
airflow scheduler &
# UI sur http://localhost:8080Avec Docker (recommandé pour production-like)
# Télécharger le docker-compose officiel
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.8.0/docker-compose.yaml'
# Initialiser
mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=$(id -u)" > .env
docker compose up airflow-init
docker compose up -d3.4 Scala (pour Spark Scala)
brew install scala@2.12 sbt# Scala
sudo apt install scala
# sbt (build tool)
echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x99E82A75642AC823" | sudo apt-key add
sudo apt update
sudo apt install sbtscala -version # ✓ 2.12.x (compatible Spark 3.5)3.5 Outils Monitoring
Prometheus & Grafana (via Docker)
# docker-compose-monitoring.yml
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admindocker compose -f docker-compose-monitoring.yml up -d
# Prometheus: http://localhost:9090
# Grafana: http://localhost:3000 (admin/admin)3.6 ClickHouse (OLAP)
docker run -d \
--name clickhouse \
-p 8123:8123 \
-p 9000:9000 \
clickhouse/clickhouse-server# Client Python
pip install clickhouse-connect3.7 MLflow
pip install mlflow
# Lancer le serveur
mlflow server --host 0.0.0.0 --port 5000
# UI sur http://localhost:50003.8 Extensions VS Code Niveau Avancé
code --install-extension scala-lang.scala
code --install-extension scalameta.metals
code --install-extension ms-vscode-remote.remote-ssh
code --install-extension rangav.vscode-thunder-client✅ Checklist Niveau Avancé
echo "=== 🟥 Vérification Niveau Avancé ==="
helm version | head -1
k9s version 2>/dev/null | head -1 || echo "k9s: lancer 'k9s' pour vérifier"
airflow version 2>/dev/null || echo "Airflow: vérifier avec 'airflow version'"
scala -version 2>&1 | head -1
echo "=== ✅ Done ==="📁 Structure de Projet Recommandée
~/data-engineering-bootcamp/
├── .venv/ # Environnement virtuel
├── data/
│ ├── raw/ # Données brutes
│ ├── processed/ # Données transformées
│ └── output/ # Résultats
├── notebooks/ # Jupyter notebooks
├── spark_jobs/ # Scripts PySpark/Scala
├── dbt_project/ # Projet dbt
├── docker/ # Docker Compose files
├── k8s/ # Manifests Kubernetes
├── airflow/
│ └── dags/ # DAGs Airflow
├── tests/ # Tests unitaires
├── .gitignore
└── README.md
# Créer la structure
mkdir -p ~/data-engineering-bootcamp/{data/{raw,processed,output},notebooks,spark_jobs,dbt_project,docker,k8s,airflow/dags,tests}
cd ~/data-engineering-bootcamp
git init
# .gitignore
cat << 'EOF' > .gitignore
.venv/
__pycache__/
.ipynb_checkpoints/
*.pyc
.DS_Store
*.log
EOF🆘 Problèmes Courants
Docker : permission denied
sudo usermod -aG docker $USER
newgrp dockerSpark : Java not found
echo $JAVA_HOME # Doit afficher un chemin
# Sinon, configurer JAVA_HOME (voir section 2.3)Jupyter : kernel not found
python -m ipykernel install --user --name=bootcamp --display-name="Python (Bootcamp)"minikube : not enough memory
minikube delete
minikube start --memory=4096 --cpus=2 --driver=dockerVS Code : Python interpreter not found
Ctrl+Shift+P → “Python: Select Interpreter” → Choisir ~/bootcamp-env/bin/python