2.6 KiB
2.6 KiB
Session Resume — 2026-06-01 (final)
Objectif
Session continue : fixes Kafka, Trino, JupyterHub. Résolution du problème de spawn.
Actions réalisées
1. Kafka restart loop — CORRIGÉ ✅
- Cause:
KAFKA_CFG_*env vars (Bitnami) au lieu deKAFKA_*(apache/kafka).CLUSTER_IDmanquant. - Fix: Rewrote env vars in
/home/eric/lakehouse/docker-compose/docker-compose.yml - Action: Volumes corrompus supprimés, cluster recréé
- Résultat: kafka-1 + kafka-2 UP, KRaft controller élu
2. Trino restart loop — CORRIGÉ ✅
- Cause:
config/trino/directory manquante,node.id=_internal_invalide,plugin.bundlesincompatible - Fix:
node.propertiescréé proprement,plugin.bundlesretiré - Résultat: Trino UP sur port 8084
3. JupyterHub spawn — CORRIGÉ ✅
- Causes multiples:
SimpleLocalProcessSpawnerne passait pasJUPYTERHUB_SERVICE_URL(bug JH 5.3.0)- Hash du mot de passe eric en PBKDF2 au lieu de bcrypt
- User
ericn'existait pas comme OS user dans le container - DB path malformé (3 slashes au lieu de 4)
- Docker cache servait l'ancien COPY layer du config
- Fixes:
- Switch à
LocalProcessSpawner(gère correctement les env vars) - Hash bcrypt pour eric et admin
- Dockerfile:
useradd eric+ sudo NOPASSWD jupyterhub_config.py: 4 slashes pour le path SQLitedocker cpdu config dans le volume (contournement cache Docker)ARG BUILD_DATEpour forcer cache invalidation
- Switch à
- Résultat: JupyterHub 5.3.0 healthy, spawn fonctionnel pour eric, admin, erol
4. Credentials JupyterHub
| Utilisateur | Mot de passe | Rôle |
|---|---|---|
| admin | Digitribe972 | Admin |
| eric | Digitribe972 | Admin |
| erol | erol | Admin |
5. Commits/Push
- smart-city-digital-twin-martinique: pushé sur Gitea (commits:
cb45b89,85199fc,cca9e4a) - lakehouse: pushé sur Gitea (commit: 650a632)
Infrastructure finale
- Kafka-1, Kafka-2 = UP ✅
- Trino = UP ✅
- JupyterHub = UP ✅ (healthy, spawn fonctionnel)
- Tous les autres services principaux = UP ✅
Leçons apprises
- apache/kafka:3.9.0 utilise
KAFKA_*(pasKAFKA_CFG_*qui est Bitnami) - JupyterHub 5.3.0
SimpleLocalProcessSpawnera un bug avecJUPYTERHUB_SERVICE_URL→ utiliserLocalProcessSpawner - NativeAuthenticator nécessite des hash bcrypt dans
users_info.password - Docker volume overlay peut cacher les fichiers COPY du Dockerfile → copier manuellement dans le volume
- LocalProcessSpawner nécessite que l'OS user existe dans le container (
useradd)