2026 : Mac Mini loué en 7×24 — matrice décisionnelle pour imports massifs nocturnes ClickHouse et DuckDB (threads, mémoire, seuils disque)
« Lorsque vous louez un Mac Mini pour des charges analytiques non surveillées, la nuit devient le créneau naturel des fichiers CSV ou Parquet volumineux vers ClickHouse ou DuckDB — pourvu que le parallélisme, le plafond mémoire et la marge disque APFS restent sous contrôle opératoire. »
Public : équipes ingestion marathon sur Apple Silicon loué. Apport : matrice volumétrie et paramètres clickhouse-client / DuckDB, puis 7×24 : caffeinate, pmset, retries, journaux. Liens : APFS et exclusions, pmset et caffeinate, syslog et inode.
Pourquoi les imports nocturnes échouent encore sur un hôte colocalisé
- Threads. Parallélisme agressif plus arrière-plans macOS : latence erratique, mémoire « aléatoire ».
- Disque. L’import continue jusqu’à fusions, temp et inodes qui accélèrent la chute.
- Exploitation. Sans checkpoints ni rotation, on ne sait plus si la faute est réseau, entrepôt ou hôte.
Scénario et seuils de volumétrie
Ancres internes, pas SLA fabricant : mesurez à froid sur vos fichiers, votre débit réseau et la charge concurrente SSH. Documentez aussi le créneau de maintenance hébergeur pour garder VNC fluide et prévisible pendant tout le batch nocturne.
- < 50 Go. DuckDB NVMe :
threads,memory_limit,temp_directoryrapide. - 50–500 Go. COPY ou INSERT SELECT par salves ; jaune ≈ 15 % libre, rouge ≈ 10 %.
- > ~0,5 To ou isolation serveur. clickhouse-client vers cluster ; Mini en edge seulement.
Tableau comparatif : client ClickHouse et DuckDB
Le client protège le Mini loué ; le serveur garde ses propres plafonds.
| Thème | Client ClickHouse | DuckDB |
|---|---|---|
| Concurrence | --max_threads, --max_insert_threads |
SET threads=n; |
| Plafond mémoire | --max_memory_usage |
SET memory_limit='8GB'; |
| Blocs d’insertion | max_insert_block_size dans les réglages |
Découper avec LIMIT ou fichiers externes par salve |
| Spill et IO temporaire | Politique serveur tmp_path |
SET temp_directory='/chemin/tmp'; |
| Action si disque tendu | Pause client si espace libre sous politique | Baisser threads, puis stop fusions locales |
Fenêtre nocturne, caffeinate et stratégie d’alimentation
- Fenêtre fixe UTC ou locale, notée dans la file.
caffeinate -dimsuoucaffeinate -w pidcontre veille disque.- pmset aligné sur l’hébergeur si modification permise.
- Couper mode économie sur la voie débit si thermique OK.
- Décaler VNC si latence interactive monte pendant l’IO lourd.
Échecs, retries idempotents et rotation des journaux
Manifeste par segment : checksum, offset, code retour. À la reprise, rejouez uniquement les segments marqués échec afin de conserver l’idempotence côté entrepôt et éviter les doublons analytiques.
- Retries : backoff exponentiel borné + gigue.
- Logs : JSON datés ; newsyslog / logrotate (voir guide syslog lié).
- Rouge : purge tmp et instantanés avant reprise.
Cinq gestes opérationnels avant d’élargir le run complet
df+ APFS ; pas de run si déjà jaune interdit.- Threads et RAM selon ~demi cœurs utiles ; noter dans le runbook.
- 1 % ou courte salve : schéma, encodage, réseau.
- Nuit sous caffeinate, log dédié, horloge NTP.
- Fin : manifeste archivé, log rotatif, alerte si volume ou checksum divergent.
Exemples de paramètres exécutables
Adaptez hôtes et chemins ; salve test d’abord.
- Flux clickhouse-client plafonné :
clickhouse-client --host ch.interne --max_threads 6 --max_memory_usage 7000000000 --query "INSERT INTO db.events FORMAT CSV" < nuit.csv - Session DuckDB sur CSV large :
duckdb -c "SET threads=6; SET memory_limit='7GB'; SET temp_directory='/Volumes/rapide/tmpduck'; COPY events FROM 'nuit.csv' (HEADER true);" - Garde disque avant lancement :
df -h / && diskutil apfs listVolumeGroupspuis abandon si le pourcentage libre franchit votre porte rouge.
FAQ
- DuckDB ou client ClickHouse pour un fichier quasi téraoctet sur un Mini unique ?
- Pipeline segmenté ou ClickHouse distant ; sinon reprise lourde.
- Que faire si max_memory_usage déclenche à mi-parcours ?
- Moins de max_insert_block_size et threads ; segmentez avec manifeste.
- Faut-il un compte pour louer après lecture ?
- Non si achat sans compte : forfaits, page achat, puis aide SSH/VNC.
Repères citables
- 15 % libre : jaune, moins de parallélisme.
- 10 % : rouge, stop chargements lourds.
- 1 % fichier en test avant pleine fenêtre.
Synthèse. 7×24 = budgets threads/RAM, seuils disque, nuit sous contrôle énergie. Accueil, forfaits, achat, aide — sans compte si le parcours le permet.
Choisissez votre nœud Mac pour entrepôts de données nocturnes
Mini hébergé pour ClickHouse et DuckDB longue durée. Accueil, forfaits, achat sans compte, aide, blog.