Ce guide présente nos recommandations générales concernant le matériel, les ressources de calcul, la mémoire et les configurations de disque pour les utilisateurs de la version open source. Si vous souhaitez simplifier votre déploiement, nous vous recommandons d’utiliser ClickHouse Cloud, car il s’adapte automatiquement à la charge et à vos charges de travail tout en réduisant les coûts liés à la gestion de l’infrastructure.
La configuration de votre cluster ClickHouse dépend fortement du cas d’usage de votre application et de ses profils de charge de travail. Lors de la planification de votre architecture, vous devez tenir compte des facteurs suivants :
- Concurrence (requêtes par seconde)
- Débit (lignes traitées par seconde)
- Volume de données
- Politique de rétention des données
- Coûts matériels
- Coûts de maintenance
Disque
Les types de disques à utiliser avec ClickHouse dépendent du volume de données ainsi que des exigences en matière de latence ou de débit.
Optimiser les performances
Pour maximiser les performances, nous recommandons d’attacher directement des volumes SSD AWS à IOPS provisionnées, ou l’offre équivalente de votre fournisseur cloud, afin d’optimiser les IO.
Optimisation des coûts de stockage
Pour réduire les coûts, vous pouvez utiliser des volumes EBS SSD à usage général.
Vous pouvez également mettre en place un stockage hiérarchisé reposant sur des SSD et des HDD dans une architecture hot/warm/cold. Autre possibilité : utiliser AWS S3 pour le stockage afin de séparer les ressources de calcul et le stockage. Consultez notre guide sur l’utilisation de ClickHouse open source avec séparation des ressources de calcul et du stockage ici. La séparation des ressources de calcul et du stockage est disponible par défaut dans ClickHouse Cloud.
CPU
Quel CPU dois-je utiliser ?
Le type de CPU à utiliser dépend de votre profil d’utilisation. De manière générale, toutefois, les applications qui exécutent de nombreuses requêtes concurrentes fréquentes, qui traitent plus de données ou qui utilisent des UDF gourmandes en calcul nécessiteront davantage de cœurs CPU.
Applications à faible latence ou orientées client
Pour des exigences de latence de l’ordre de quelques dizaines de millisecondes, comme pour des charges de travail orientées client, nous recommandons la gamme i3 ou la gamme i4i d’AWS, ou une offre équivalente de votre fournisseur cloud, optimisées pour les IO.
Applications à forte concurrence
Pour les charges de travail qui doivent être optimisés pour la concurrence (plus de 100 requêtes par seconde), nous recommandons la série C optimisée pour le calcul d’AWS, ou une offre équivalente de votre fournisseur cloud.
Cas d’usage de data warehousing
Pour les charges de travail de data warehousing et les requêtes analytiques ad hoc, nous recommandons la série de type R d’AWS, ou une offre équivalente de votre fournisseur cloud, car elle est optimisée pour la mémoire.
Quel taux d’utilisation du CPU viser ?
Il n’existe pas d’objectif standard en matière d’utilisation du CPU pour ClickHouse. Utilisez un outil tel que iostat pour mesurer l’utilisation moyenne du CPU, puis ajustez en conséquence la taille de vos serveurs afin d’absorber les pics de trafic imprévus. En revanche, pour les cas d’usage analytiques ou de data warehousing avec des requêtes ad hoc, visez un taux d’utilisation du CPU de 10 à 20 %.
Combien de cœurs CPU dois-je utiliser ?
Le nombre de CPU à utiliser dépend de votre charge de travail. Cependant, nous recommandons généralement les ratios mémoire/cœur CPU suivants selon votre type de CPU :
- M-type (cas d’usage généraux) : ratio mémoire/cœur CPU de 4 Go:1
- R-type (cas d’usage de data warehousing) : ratio mémoire/cœur CPU de 8 Go:1
- C-type (cas d’usage optimisés pour le calcul) : ratio mémoire/cœur CPU de 2 Go:1
Par exemple, avec des CPU de type M, nous recommandons d’allouer 100 Go de mémoire pour 25 cœurs CPU. Pour déterminer la quantité de mémoire adaptée à votre application, il est nécessaire de profiler votre utilisation de la mémoire. Vous pouvez consulter ce guide sur le débogage des problèmes de mémoire ou utiliser le tableau de bord d’observabilité intégré pour surveiller ClickHouse.
Mémoire
Comme pour le choix du CPU, le choix du ratio mémoire/stockage et du ratio mémoire/CPU dépend de votre cas d’utilisation.
Le volume de RAM requis dépend généralement de :
- La complexité des requêtes.
- La quantité de données traitées par les requêtes.
De manière générale, toutefois, plus vous disposez de mémoire, plus vos requêtes s’exécuteront rapidement.
Si votre cas d’utilisation est sensible au prix, des quantités de mémoire plus faibles peuvent convenir, car il est possible d’activer des paramètres (max_bytes_before_external_group_by et max_bytes_before_external_sort) pour autoriser l’écriture des données sur disque, mais notez que cela peut affecter significativement les performances des requêtes.
Quel devrait être le ratio mémoire/stockage ?
Pour de faibles volumes de données, un ratio mémoire/stockage de 1:1 est acceptable, mais la mémoire totale ne doit pas être inférieure à 8 Go.
Pour les cas d’utilisation impliquant une longue période de rétention des données ou des volumes de données élevés, nous recommandons un ratio mémoire/stockage de 1:100 à 1:130. Par exemple, 100 Go de RAM par réplique si vous stockez 10 To de données.
Pour les cas d’utilisation avec des accès fréquents, comme les charges de travail orientées client, nous recommandons d’utiliser davantage de mémoire, avec un ratio mémoire/stockage de 1:30 à 1:50.
Répliques
Nous recommandons d’avoir au moins trois répliques par segment (ou deux répliques avec Amazon EBS). De plus, nous vous conseillons d’augmenter verticalement les ressources de toutes les répliques avant d’ajouter des répliques supplémentaires (mise à l’échelle horizontale).
ClickHouse n’effectue pas le sharding automatiquement, et repartitionner votre jeu de données nécessitera une puissance de calcul importante. Par conséquent, nous recommandons généralement d’utiliser le plus grand serveur disponible afin d’éviter d’avoir à repartitionner vos données à l’avenir.
Envisagez d’utiliser ClickHouse Cloud, qui se met à l’échelle automatiquement et vous permet de contrôler facilement le nombre de répliques selon votre cas d’utilisation.
Exemples de configurations pour de fortes charges de travail
Les configurations de ClickHouse dépendent fortement des exigences propres à votre application. Veuillez contacter l’équipe commerciale si vous souhaitez que nous vous aidions à optimiser votre architecture en termes de coût et de performances.
À titre indicatif uniquement, et non comme recommandation, voici quelques exemples de configurations d’utilisateurs de ClickHouse en production :
SaaS B2B du classement Fortune 500
| Stockage | |
| Volume mensuel de nouvelles données | 30TB |
| Stockage total (compressé) | 540TB |
| Rétention des données | 18 mois |
| Disque par nœud | 25TB |
| CPU | |
| Concurrence | 200+ requêtes simultanées |
| # de répliques (y compris la paire HA) | 44 |
| vCPU par nœud | 62 |
| Total des vCPU | 2700 |
| Mémoire | |
| RAM totale | 11TB |
| RAM par réplique | 256GB |
| Ratio RAM/vCPU | 4 GB:1 |
| Ratio RAM/disque | 1:50 |
Opérateur télécom du Fortune 500 pour un cas d’usage de logs
| Stockage | |
| Volume mensuel de données de logs | 4860TB |
| Stockage total (compressé) | 608TB |
| Rétention des données | 30 jours |
| Disque par nœud | 13TB |
| CPU | |
| # de répliques (y compris la paire HA) | 38 |
| vCPU par nœud | 42 |
| Total vCPU | 1600 |
| Mémoire | |
| RAM totale | 10TB |
| RAM par réplique | 256GB |
| Ratio RAM/vCPU | 6 GB:1 |
| Ratio RAM/disque | 1:60 |
Pour en savoir plus
Voici des articles de blog publiés sur les architectures d’entreprises qui utilisent ClickHouse open source :