Fonctions de table S3
s3 vous permet de lire et d’écrire des fichiers depuis et vers un stockage compatible S3. La syntaxe générale est la suivante :
- path — URL du bucket avec le chemin vers le fichier. Prend en charge les caractères génériques suivants en mode lecture seule :
*,?,{abc,def}et{N..M}, oùNetMsont des nombres, et'abc','def'des chaînes. Pour plus d’informations, consultez la documentation sur l’utilisation des caractères génériques dans le chemin. - format — Le format du fichier.
- structure — Structure de la table. Format
'column1_name column1_type, column2_name column2_type, ...'. - compression — Le paramètre est facultatif. Valeurs prises en charge :
none,gzip/gz,brotli/br,xz/LZMA,zstd/zst. Par défaut, la compression est détectée automatiquement à partir de l’extension du fichier.
Préparation
DESCRIBE :
DESCRIBE TABLE devrait vous montrer comment ClickHouse infère automatiquement ces données telles qu’elles apparaissent dans le bucket S3. Remarquez qu’il reconnaît et décompresse aussi automatiquement le format de compression gzip :
MergeTree standard comme destination. L’instruction ci-dessous crée une table nommée trips dans la base de données default. Notez que nous avons choisi de modifier certains de ces types de données déduits ci-dessus, notamment afin de ne pas utiliser le modificateur de type de données Nullable(), qui pourrait entraîner le stockage inutile de données supplémentaires ainsi qu’un surcoût de performance :
pickup_date. En général, une clé de partitionnement sert à gérer les données, mais par la suite, nous utiliserons cette clé pour paralléliser les écritures dans S3.
Chaque entrée de notre jeu de données sur les taxis correspond à une course en taxi. Ces données anonymisées se composent de 20 M d’enregistrements compressés, stockés dans le bucket S3 https://datasets-documentation.s3.eu-west-3.amazonaws.com/ dans le dossier nyc-taxi. Les données sont au format TSV, avec environ 1 M de lignes par fichier.
Lecture de données depuis S3
TabSeparatedWithNames encode les noms de colonnes dans la première ligne. D’autres formats, comme CSV ou TSV, retourneront des colonnes générées automatiquement pour cette requête, par exemple c1, c2, c3, etc.
Les requêtes prennent également en charge les colonnes virtuelles, comme _path et _file, qui fournissent respectivement des informations sur le chemin du bucket et le nom du fichier. Par exemple :
MergeTree dans ClickHouse.
Utilisation de clickhouse-local
clickhouse-local vous permet d’effectuer rapidement des traitements sur des fichiers locaux sans déployer ni configurer le serveur ClickHouse. Toutes les requêtes utilisant la fonction de table s3 peuvent être exécutées avec cet utilitaire. Par exemple :
Insertion de données depuis S3
s3 avec une simple instruction INSERT. Notez qu’il n’est pas nécessaire de lister les colonnes, car notre table cible fournit la structure requise. Cela suppose que les colonnes apparaissent dans l’ordre spécifié dans l’instruction DDL de la table : les colonnes sont mises en correspondance selon leur position dans la clause SELECT. L’insertion des 10 millions de lignes peut prendre quelques minutes selon l’instance ClickHouse. Ci-dessous, nous insérons 1 million de lignes afin de garantir une réponse rapide. Ajustez la clause LIMIT ou la sélection de colonnes pour importer des sous-ensembles selon vos besoins :
Insertion à distance avec ClickHouse Local
clickhouse-local. Dans l’exemple ci-dessous, nous lisons depuis un bucket S3 et insérons les données dans ClickHouse à l’aide de la fonction remote :
Pour exécuter cette opération via une connexion SSL sécurisée, utilisez la fonction
remoteSecure.Exporter des données
fonction de table s3. Cela nécessite les autorisations appropriées. Nous transmettons les identifiants nécessaires dans la requête, mais consultez la page Gestion des identifiants pour voir d’autres options.
Dans l’exemple simple ci-dessous, nous utilisons la fonction de table comme destination plutôt que comme source. Ici, nous envoyons 10 000 lignes de la table trips vers un bucket, en spécifiant la compression lz4 et le format de sortie CSV :
s3 : elles peuvent être déduites du SELECT.
Fractionnement des fichiers volumineux
INSERT plusieurs fois, en ciblant un sous-ensemble des données. ClickHouse offre un moyen de fractionner automatiquement les fichiers à l’aide d’une clé PARTITION.
Dans l’exemple ci-dessous, nous créons dix fichiers à l’aide d’un modulo de la fonction rand(). Remarquez comment l’identifiant de partition résultant apparaît dans le nom du fichier. Cela produit dix fichiers avec un suffixe numérique, par exemple trips_0.csv.lz4, trips_1.csv.lz4, etc. :
payment_type constitue une clé de partitionnement naturelle, avec une cardinalité de 5.
Utilisation des clusters
INSERT INTO SELECT, un seul nœud reste chargé de lire, d’analyser et de traiter les données. Pour relever ce défi et permettre une mise à l’échelle horizontale des lectures, nous disposons de la fonction s3Cluster.
Le nœud qui reçoit la requête, appelé l’initiateur, crée une connexion avec chaque nœud du cluster. Le glob pattern qui détermine quels fichiers doivent être lus est résolu en un ensemble de fichiers. L’initiateur distribue les fichiers aux nœuds du cluster, qui agissent comme des workers. Ces workers demandent ensuite des fichiers à traiter au fur et à mesure qu’ils terminent leurs lectures. Ce processus garantit une mise à l’échelle horizontale des lectures.
La fonction s3Cluster utilise le même format que les variantes sur nœud unique, à ceci près qu’un cluster cible est requis pour désigner les nœuds workers :
cluster_name— Nom d’un cluster utilisé pour construire un ensemble d’adresses et de paramètres de connexion pour les serveurs distants et locaux.source— URL vers un fichier ou un ensemble de fichiers. Prend en charge les caractères génériques suivants en mode lecture seule :*,?,{'abc','def'}et{N..M}, où N et M sont des nombres, et abc et def des chaînes. Pour plus d’informations, consultez Wildcards In Path.access_key_idetsecret_access_key— Clés indiquant les identifiants à utiliser avec l’endpoint donné. Facultatifs.format— Le format du fichier.structure— Structure de la table. Format ‘column1_name column1_type, column2_name column2_type, …’.
s3, les identifiants sont facultatifs si le bucket n’est pas sécurisé ou si vous définissez la sécurité via l’environnement, par exemple avec des rôles IAM. Contrairement à la fonction s3, toutefois, la structure doit être spécifiée dans la requête depuis la version 22.3.1, c’est-à-dire que le schéma n’est pas inféré.
Cette fonction sera utilisée dans le cadre d’un INSERT INTO SELECT dans la plupart des cas. Dans ce cas, vous insérerez souvent dans une table distribuée. Nous illustrons ci-dessous un exemple simple dans lequel trips_all est une table distribuée. Bien que cette table utilise le cluster events, il n’est pas nécessaire que les nœuds utilisés en lecture et en écriture soient les mêmes :
s3cluster.
Moteurs de table S3
s3 permettent d’exécuter des requêtes ad hoc sur des données stockées dans S3, leur syntaxe est verbeuse. Le moteur de table S3 évite d’avoir à préciser l’URL du bucket et les informations d’identification à répétition. Pour y remédier, ClickHouse fournit le moteur de table S3.
path— URL du bucket avec le chemin vers le fichier. Prend en charge les caractères génériques suivants en mode lecture seule :*,?,{abc,def}et{N..M}, où N et M sont des nombres, et ‘abc’ et ‘def’ des chaînes. Pour plus d’informations, voir ici.format— Le format du fichier.aws_access_key_id,aws_secret_access_key- Identifiants à long terme de l’utilisateur du compte AWS. Vous pouvez les utiliser pour authentifier vos requêtes. Le paramètre est facultatif. Si les identifiants ne sont pas spécifiés, les valeurs du fichier de configuration sont utilisées. Pour plus d’informations, voir Gestion des identifiants.compression— Type de compression. Valeurs prises en charge : none, gzip/gz, brotli/br, xz/LZMA, zstd/zst. Le paramètre est facultatif. Par défaut, la compression est détectée automatiquement à partir de l’extension du fichier.
Lecture des données
trips_raw à partir des dix premiers fichiers TSV situés dans le bucket https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/. Chacun contient 1 million de lignes :
{0..9} pour limiter la sélection aux dix premiers fichiers. Une fois créée, nous pouvons interroger cette table comme n’importe quelle autre table :
Insertion de données
S3 prend en charge les lectures parallèles. Les écritures ne sont prises en charge que si la définition de la table ne contient pas de patterns glob. La table ci-dessus bloquerait donc les écritures.
Pour illustrer les écritures, créez une table qui pointe vers un bucket S3 accessible en écriture :
- Spécifier le paramètre
s3_create_new_file_on_insert=1. Cela entraînera la création d’un nouveau fichier à chaque insertion. Un suffixe numérique sera ajouté à la fin de chaque fichier et augmentera de manière monotone à chaque opération d’insertion. Dans l’exemple ci-dessus, une insertion ultérieure entraînerait la création d’un fichier trips_1.bin. - Spécifier le paramètre
s3_truncate_on_insert=1. Cela entraînera la troncature du fichier, c.-à-d. qu’une fois l’opération terminée, il ne contiendra que les lignes nouvellement insérées.
s3_truncate_on_insert sera prioritaire si les deux sont définis.
Quelques remarques sur le moteur de table S3 :
- Contrairement à une table traditionnelle de la famille
MergeTree, la suppression d’une tableS3ne supprime pas les données sous-jacentes. - Les paramètres complets pour ce type de table sont disponibles ici.
- Gardez à l’esprit les limitations suivantes lors de l’utilisation de ce moteur :
- Les requêtes ALTER ne sont pas prises en charge
- Les opérations SAMPLE ne sont pas prises en charge
- Il n’y a pas d’index, ni primaires ni de saut.
Gestion des identifiants
s3 ou la définition de table S3. Bien que cela puisse convenir pour un usage occasionnel, en production, les utilisateurs ont besoin de mécanismes d’authentification moins explicites. Pour y répondre, ClickHouse propose plusieurs options :
-
Spécifiez les détails de connexion dans config.xml ou dans un fichier de configuration équivalent sous conf.d. Le contenu d’un fichier d’exemple est présenté ci-dessous, en supposant une installation à l’aide du paquet Debian.
Ces identifiants seront utilisés pour toutes les requêtes dont l’URL demandée a exactement pour préfixe l’endpoint ci-dessus. Notez également qu’il est possible, dans cet exemple, de déclarer un en-tête
Authorizationcomme alternative aux clés d’accès et aux clés secrètes. Une liste complète des paramètres pris en charge est disponible ici. -
L’exemple ci-dessus met en évidence la disponibilité du paramètre de configuration
use_environment_credentials. Ce paramètre peut également être défini globalement au niveau des3:Ce paramètre active la tentative de récupération des identifiants S3 depuis l’environnement, permettant ainsi l’accès via des rôles IAM. Plus précisément, l’ordre de récupération suivant est appliqué :- Recherche des variables d’environnement
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYetAWS_SESSION_TOKEN - Vérification dans $HOME/.aws
- Récupération d’identifiants temporaires via AWS Security Token Service, c’est-à-dire via l’API
AssumeRole - Vérification des identifiants dans les variables d’environnement ECS
AWS_CONTAINER_CREDENTIALS_RELATIVE_URIouAWS_CONTAINER_CREDENTIALS_FULL_URIetAWS_ECS_CONTAINER_AUTHORIZATION_TOKEN. - Récupération des identifiants via les métadonnées d’instance Amazon EC2, à condition que AWS_EC2_METADATA_DISABLED ne soit pas défini sur true.
- Ces mêmes paramètres peuvent également être définis pour un endpoint spécifique, en utilisant la même règle de correspondance par préfixe.
- Recherche des variables d’environnement
Optimiser les performances
Optimisation du stockage S3
Wide and Compact. Bien que l’implémentation actuelle repose sur le comportement par défaut de ClickHouse (contrôlé par les paramètres min_bytes_for_wide_part et min_rows_for_wide_part), nous nous attendons à ce que ce comportement évolue pour S3 dans les prochaines versions, par exemple avec une valeur par défaut plus élevée pour min_bytes_for_wide_part, favorisant un format plus Compact et donc un plus petit nombre de fichiers. Vous souhaiterez peut-être désormais ajuster ces paramètres lorsque vous utilisez exclusivement le stockage S3.
MergeTree adossé à S3
s3 et le moteur de table associé permettent d’interroger des données dans S3 avec une syntaxe ClickHouse familière. Cependant, leurs fonctionnalités de gestion des données et leurs performances restent limitées. Il n’y a pas de prise en charge des index primaires, pas de prise en charge du no-cache, et les insertions de fichiers doivent être gérées par l’utilisateur.
ClickHouse reconnaît que S3 constitue une solution de stockage attrayante, en particulier lorsque les performances des requêtes sur des données plus « froides » sont moins critiques et que les utilisateurs cherchent à dissocier stockage et calcul. Pour y parvenir, la prise en charge de l’utilisation de S3 comme stockage pour un moteur MergeTree est proposée. Cela vous permettra de tirer parti des avantages de S3 en matière de scalabilité et de coût, ainsi que des performances d’insertion et de requête du moteur MergeTree.
Niveaux de stockage
Création d’un disque
Création d’une politique de stockage
Création d’une table
Modification d’une table
<path>. Notez que les noms de nos volumes et de nos disques ne changent pas. Les nouvelles insertions dans notre table seront stockées sur le disque par défaut jusqu’à ce qu’il atteigne move_factor * disk_size, moment auquel les données seront déplacées vers S3.
Gestion de la réplication
ReplicatedMergeTree. Consultez le guide Réplication d’un shard unique sur deux régions AWS à l’aide du stockage objet S3 pour plus de détails.
Lectures et écritures
- Par défaut, le nombre maximal de threads de traitement des requêtes utilisés par une étape quelconque du pipeline de traitement des requêtes est égal au nombre de cœurs. Certaines étapes se parallélisent mieux que d’autres, cette valeur constitue donc une limite supérieure. Plusieurs étapes d’une requête peuvent s’exécuter en même temps, puisque les données sont lues en flux depuis le disque. Le nombre exact de threads utilisés pour une requête peut donc dépasser cette valeur. Modifiez ce paramètre via le réglage max_threads.
- Les lectures sur S3 sont asynchrones par défaut. Ce comportement est déterminé par le réglage
remote_filesystem_read_method, défini par défaut sur la valeurthreadpool. Lors du traitement d’une requête, ClickHouse lit les granules par bandes. Chacune de ces bandes peut contenir de nombreuses colonnes. Un thread lit les colonnes de ses granules une par une. Au lieu de procéder ainsi de manière synchrone, une prélecture est lancée pour toutes les colonnes avant d’attendre les données. Cela offre des gains de performances importants par rapport à une attente synchrone sur chaque colonne. Dans la plupart des cas, vous n’aurez pas besoin de modifier ce réglage ; voir Optimisation des performances. - Les écritures sont effectuées en parallèle, avec un maximum de 100 threads concurrents d’écriture de fichiers.
max_insert_delayed_streams_for_parallel_write, dont la valeur par défaut est 1000, contrôle le nombre de blobs S3 écrits en parallèle. Comme un tampon est nécessaire pour chaque fichier en cours d’écriture (~1MB), cela limite effectivement la consommation mémoire d’un INSERT. Il peut être pertinent de réduire cette valeur lorsque la mémoire du serveur est limitée.
Utiliser le stockage objet S3 comme disque ClickHouse
Configurer ClickHouse pour utiliser le bucket S3 comme disque
- Créez un nouveau fichier dans le répertoire
config.dde ClickHouse pour y stocker la configuration du stockage.
- Ajoutez les éléments suivants pour la configuration du stockage ; remplacez le chemin du bucket, la clé d’accès et les clés secrètes par ceux des étapes précédentes
Les tags
s3_disk et s3_cache dans la balise <disks> sont des libellés arbitraires. Vous pouvez les remplacer par d’autres valeurs, mais le même libellé doit être utilisé dans la balise <disk> sous la balise <policies> pour référencer le disque.
La balise <S3_main> est elle aussi arbitraire et correspond au nom de la politique qui sera utilisée comme identifiant de la cible de stockage lors de la création de ressources dans ClickHouse.La configuration ci-dessus s’applique à ClickHouse version 22.8 ou ultérieure. Si vous utilisez une version plus ancienne, veuillez consulter la documentation sur le stockage des données.Pour plus d’informations sur l’utilisation de S3 :
Guide des intégrations : MergeTree adossé à S3- Modifiez le propriétaire du fichier pour l’utilisateur et le groupe
clickhouse
- Redémarrez l’instance ClickHouse pour appliquer les modifications.
Test
- Connectez-vous à l’aide du client ClickHouse, par exemple comme suit
- Créez une table en spécifiant la nouvelle politique de stockage S3
- Vérifiez que la table a été créée avec la politique appropriée
- Insérez des lignes de test dans la table
- Afficher les lignes
- Dans la console AWS, accédez aux buckets, puis sélectionnez le nouveau bucket ainsi que le dossier. Vous devriez voir quelque chose comme ceci :
Répliquer un seul shard sur deux régions AWS à l’aide du stockage objet S3
Planifier le déploiement
Installer les logiciels
Nœuds du serveur ClickHouse
Déployer ClickHouse
chnode1 et chnode2.
Placez chnode1 dans une région AWS et chnode2 dans une autre.
Déployer ClickHouse Keeper
keepernode1, keepernode2 et keepernode3. keepernode1 peut être déployé dans la même région que chnode1, keepernode2 dans la même région que chnode2, et keepernode3 dans l’une ou l’autre région, mais dans une zone de disponibilité différente de celle du nœud ClickHouse de cette région.
Reportez-vous aux instructions d’installation pour effectuer les étapes de déploiement sur les nœuds ClickHouse Keeper.
Créer des buckets S3
chnode1 et chnode2.
Si vous avez besoin d’instructions détaillées pour créer des buckets et un rôle IAM, développez Créer des buckets S3 et un rôle IAM et suivez les étapes :
Créez des buckets S3 et un utilisateur IAM
Créez des buckets S3 et un utilisateur IAM
Cet article présente les bases de la configuration d’un AWS IAM user, de la création d’un S3 bucket et de la configuration de ClickHouse pour utiliser ce bucket comme S3 disk.
Nous vous recommandons de travailler avec votre équipe de sécurité pour déterminer les permissions à appliquer, et de considérer ces éléments comme point de départ.
















Créer un utilisateur AWS IAM
Dans les étapes suivantes, vous allez créer un utilisateur de compte de service (et non un utilisateur avec compte de connexion).- Connectez-vous à l’AWS IAM Management Console.
-
Dans le menu
Users, sélectionnezCreate user

- Saisissez le nom d’utilisateur et définissez le type d’identifiant sur
Access key - Programmatic access, puis sélectionnezNext: Permissions

- N’ajoutez l’utilisateur à aucun groupe ; cliquez sur
Next: Tags

- À moins que vous n’ayez besoin d’ajouter des tags, sélectionnez
Next: Review

- Sélectionnez
Create User
Le message d’avertissement indiquant que l’utilisateur n’a aucune autorisation peut être ignoré ; les autorisations sur le bucket seront accordées à l’utilisateur dans la section suivante

- L’utilisateur a maintenant été créé ; cliquez sur
showet copiez les clés d’accès et les clés secrètes.
Conservez les clés ailleurs ; c’est la seule fois où la clé d’accès secrète sera disponible.

- Cliquez sur Fermer, puis recherchez l’utilisateur dans l’écran Utilisateurs.

- Copiez l’ARN (Amazon Resource Name) et enregistrez-le pour l’utiliser lors de la configuration de la politique d’accès au bucket.

Créer un bucket S3
- Dans la section « bucket S3 », sélectionnez
Create bucket

- Saisissez un nom de bucket, laissez les autres options par défaut
Le nom du bucket doit être unique dans tout AWS, et pas seulement au sein de l’organisation, sinon une erreur sera générée.
- Laissez
Block all Public Accessactivé ; l’accès public n’est pas nécessaire.

- Sélectionnez
Create Bucketen bas de la page

- Sélectionnez le lien, copiez l’ARN et enregistrez-le pour l’utiliser lors de la configuration de la politique d’accès au bucket.
- Une fois le bucket créé, repérez le nouveau bucket S3 dans la liste des buckets S3 et sélectionnez le lien

- Sélectionnez
Create folder

- Saisissez un nom de dossier qui servira de destination pour le disk S3 de ClickHouse, puis sélectionnez
Create folder

- Le dossier devrait désormais être visible dans la liste des buckets

- Cochez la case du nouveau dossier et cliquez sur
Copy URLEnregistrez l’URL copiée afin de l’utiliser dans la configuration de stockage de ClickHouse, dans la section suivante.

- Sélectionnez l’onglet
Permissions, puis cliquez sur le boutonEditdans la sectionBucket Policy

- Ajoutez une stratégie de compartiment, comme dans l’exemple ci-dessous :
Vous devriez travailler avec votre équipe de sécurité pour déterminer les autorisations à utiliser ; considérez celles-ci comme un point de départ.
Pour plus d’informations sur les politiques et les paramètres, consultez la documentation AWS :
https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html
- Enregistrez la configuration de la règle d’accès.
/etc/clickhouse-server/config.d/. Voici un exemple de fichier de configuration pour un bucket ; l’autre est similaire, seules les trois lignes en surbrillance diffèrent :
/etc/clickhouse-server/config.d/storage_config.xml
De nombreuses étapes de ce guide vous demanderont de placer un fichier de configuration dans
/etc/clickhouse-server/config.d/. Il s’agit de l’emplacement par défaut sur les systèmes Linux pour les fichiers de remplacement de configuration. Lorsque vous placez ces fichiers dans ce répertoire, ClickHouse utilise leur contenu pour remplacer la configuration par défaut. En plaçant ces fichiers dans le répertoire de remplacement, vous éviterez de perdre votre configuration lors d’une mise à niveau.Configurer ClickHouse Keeper
/etc/clickhouse-keeper/keeper_config.xml. Les trois serveurs Keeper utilisent la même configuration, à l’exception d’un seul paramètre : <server_id>.
server_id indique l’identifiant à attribuer à l’hôte sur lequel le fichier de configuration est utilisé. Dans l’exemple ci-dessous, le server_id est 3 et, si vous regardez plus bas dans le fichier, dans la section <raft_configuration>, vous verrez que le serveur 3 a pour hostname keepernode3. C’est ainsi que le processus ClickHouse Keeper sait à quels autres serveurs se connecter pour élire un leader et effectuer toutes les autres opérations.
/etc/clickhouse-keeper/keeper_config.xml
<server_id>) :
Configurer le serveur ClickHouse
Définir un cluster
<remote_servers> de la configuration. Dans cet exemple, un cluster, cluster_1S_2R, est défini ; il se compose d’un seul shard avec deux répliques. Les répliques se trouvent sur les hôtes chnode1 et chnode2.
/etc/clickhouse-server/config.d/remote-servers.xml
shard et de replica. Cet exemple vous permet de spécifier l’utilisation d’un moteur de table répliqué sans fournir les détails shard et replica. Lorsque vous créez une table, vous pouvez voir comment les macros shard et replica sont utilisées en interrogeant system.tables.
/etc/clickhouse-server/config.d/macros.xml
Les macros ci-dessus sont pour
chnode1 ; sur chnode2, définissez replica sur replica_2.Désactiver la réplication zero-copy
allow_remote_fs_zero_copy_replication est défini sur true par défaut pour les disques S3 et HDFS. Pour ce scénario de reprise après sinistre, ce paramètre doit être défini sur false. À partir de la version 22.8, il est défini sur false par défaut.
Ce paramètre doit être défini sur false pour deux raisons : 1) cette fonctionnalité n’est pas prête pour un usage en production ; 2) dans un scénario de reprise après sinistre, les données et les métadonnées doivent être stockées dans plusieurs régions. Définissez allow_remote_fs_zero_copy_replication sur false.
/etc/clickhouse-server/config.d/remote-servers.xml
/etc/clickhouse-server/config.d/use_keeper.xml
Configurer le réseau
/etc/clickhouse-server/config.d/. Voici un exemple qui configure ClickHouse et ClickHouse Keeper pour écouter sur toutes les interfaces IPv4. Consultez la documentation ou le fichier de configuration par défaut /etc/clickhouse/config.xml pour plus d’informations.
/etc/clickhouse-server/config.d/networking.xml
Démarrez les serveurs
Démarrer ClickHouse Keeper
Vérifier l’état de ClickHouse Keeper
netcat. Par exemple, mntr renvoie l’état du cluster ClickHouse Keeper. Si vous exécutez la commande sur chacun des nœuds Keeper, vous verrez que l’un est le leader et que les deux autres sont des followers :
Démarrer le serveur ClickHouse
Vérifier le serveur ClickHouse
-
Vérifiez que le cluster existe :
-
Créez une table dans le cluster à l’aide du moteur de table
ReplicatedMergeTree: -
Comprendre l’utilisation des macros définies précédemment
Les macros
shardetreplicaont été définies précédemment, et la ligne mise en évidence ci-dessous montre où les valeurs sont substituées sur chaque nœud ClickHouse. En outre, la valeuruuidest utilisée ;uuidn’est pas définie dans les macros, car elle est générée par le système.
Vous pouvez personnaliser le chemin ZooKeeper
'clickhouse/tables/{uuid}/{shard} affiché ci-dessus en définissant default_replica_path et default_replica_name. La documentation est disponible ici.test
-
Ajoutez des données à partir du jeu de données des taxis de New York :
-
Vérifiez que les données sont stockées dans S3.
Cette requête affiche la taille des données sur le disque, ainsi que la politique utilisée pour déterminer quel disque est utilisé.
Vérifiez la taille des données sur le disque local. D’après ce qui précède, la taille sur disque des millions de lignes stockées est de 36.42 MiB. Ces données devraient se trouver sur S3, et non sur le disque local. La requête ci-dessus indique également où les données et les métadonnées sont stockées sur le disque local. Vérifiez les données locales :Vérifiez les données S3 dans chaque bucket S3 (les totaux ne sont pas affichés, mais les deux buckets contiennent environ 36 MiB après les insertions) :
S3Express
S3Express stocke les données dans une seule AZ. Cela signifie que les données ne seront plus disponibles en cas d’indisponibilité de l’AZ.
Disque S3
- Créez un bucket de type
Directory - Appliquez une bucket policy appropriée pour accorder toutes les autorisations requises à votre utilisateur S3 (par ex.
"Action": "s3express:*"pour autoriser simplement un accès sans restriction) - Lors de la configuration de la politique de stockage, fournissez le paramètre
region
Stockage S3
Object URL. Exemple :