Cette rubrique répond aux questions fréquemment posées sur l'utilisation de StarRocks.
-
Planification et évaluation du système
-
Modèles de données et définitions de table
Comment ajuster les paramètres de Routine Load en cas de problèmes de performances ?
-
Achat
-
Questions d'utilisation courantes
Comment la fonction COUNT fonctionne-t-elle dans les différents modèles de données StarRocks ?
Comment réduire l'utilisation du disque du répertoire /mnt/disk1/starrocks/storage/trash/ ?
Que faire en cas d'erreur lors de la création d'une vue matérialisée ?
Pourquoi ne puis-je pas accéder au cluster sur les ports 8030 ou 8040 ?
Quelle est la relation entre les disques de données BE et la distribution des données ?
Comment réinitialiser le cluster pour récupérer après des anomalies de données ?
Pourquoi les nœuds de tâche ajoutés ne sont-ils pas utilisés pour le calcul ?
Exigences matérielles
-
Configuration globale de la machine
Nous recommandons que les nœuds BE disposent d'au moins 16 cœurs CPU et de 64 Go de mémoire, et que les nœuds FE disposent d'au moins 8 cœurs CPU et de 16 Go de mémoire.
Dans un environnement de production, un nœud FE dispose généralement de 16 cœurs CPU, de 32 Go ou 64 Go de mémoire, ainsi que d'un disque SSD NVMe de 200 à 500 Go.
-
Disque
Vous pouvez utiliser des disques durs (HDD) ou des disques SSD.
Estimez la capacité de disque requise en utilisant un taux de compression de 3:1 et une utilisation maximale du disque de 70 % à 75 %.
-
Si vous importez des données Hive au format Parquet ou ORC dans StarRocks, utilisez un taux de compression de 1:1 pour l'estimation.
Par exemple, si les données source Hive occupent 3 To, la taille des données dans StarRocks sera également de 3 To après l'importation.
-
CPU
Le CPU doit prendre en charge le jeu d'instructions Advanced Vector Extensions 2 (AVX2). Exécutez la commande
cat /proc/cpuinfo |grep avx2pour vérifier cette prise en charge.Le moteur d'exécution vectorisé fonctionne de manière optimale avec un jeu d'instructions CPU compatible. Si le CPU de votre machine ne prend pas en charge le jeu d'instructions requis, nous vous recommandons de mettre à niveau votre matériel.
-
Réseau
Nous recommandons l'utilisation de cartes réseau (NIC) et de commutateurs Ethernet 10 Gigabit.
Exigences de configuration logicielle
Pour plus d'informations sur les configurations logicielles, consultez la section Configuration des paramètres.
Configuration des réplicas
Dans un environnement de production typique, deux ou trois réplicas suffisent. Nous recommandons de définir le nombre de réplicas à trois.
Partitionnement d'une table
Un partitionnement approprié permet de réduire efficacement la quantité de données analysées.
En règle générale, sélectionnez les clés de partition en fonction de la gestion des données par votre entreprise. Par exemple, vous pouvez utiliser des colonnes temporelles ou régionales comme clés de partition.
Si vous devez créer des partitions automatiquement, utilisez le partitionnement dynamique.
Utilisation du bucketing
-
Sélectionnez une colonne à cardinalité élevée comme clé de bucketing afin d'éviter tout déséquilibre de données entre les buckets.
Si un ID unique existe, nous recommandons de l'utiliser pour le bucketing.
En cas de déséquilibre important des données, vous pouvez utiliser plusieurs colonnes comme clé de bucketing. Évitez toutefois d'utiliser trop de colonnes.
-
Estimez la taille optimale des tablettes et le nombre total de buckets en fonction de votre volume total de données et des directives suivantes.
Pour les données brutes non compressées, telles que les données au format CSV, la taille recommandée pour chaque tablette est comprise entre 1 Go et 10 Go.
Pour les données au format Parquet, nous recommandons une taille de tablette d'environ 1 Go.
Afin de maximiser l'utilisation des ressources sur un petit nombre de machines, calculez le nombre de buckets à l'aide de la formule suivante :
Number of BEs * CPU cores / 2.
Conception d'une clé de tri
Concevez la clé de tri en fonction de vos modèles de requête :
Pour accélérer les requêtes, utilisez comme clé de tri les colonnes fréquemment employées dans les conditions de filtre et les clauses GROUP BY.
-
Si votre charge de travail implique un grand nombre de recherches ponctuelles, placez la colonne ID utilisée pour les recherches en première position de la clé de tri.
Par exemple, si vous exécutez fréquemment une requête à haute concurrence telle que
select sum(revenue) from lineorder where user_id='aaa100';, nous vous recommandons vivement de faire deuser_idla première colonne de la clé de tri. -
Si vos requêtes consistent principalement en des agrégations et des analyses, placez les colonnes à faible cardinalité en premier dans la clé de tri.
Par exemple, pour une requête telle que
select region, nation, count(*) from lineorder_flat group by region, nation, il est préférable de définirregioncomme première colonne etnationcomme deuxième colonne.
Choix des types de données
Utilisez les types de données les plus précis possibles. Par exemple, privilégiez un type entier plutôt qu'un type chaîne si cela est applicable, et préférez INT à BIGINT lorsque la plage de données le permet. L'utilisation de types de données précis améliore les performances de la base de données.
Ajustement des paramètres de Routine Load
Stratégie d'ajustement des paramètres
Si vous rencontrez des problèmes de performances avec Routine Load, envisagez d'ajuster les paramètres suivants :
-
Cycle de planification des tâches
Pour accélérer la consommation des données, réduisez le cycle de planification des tâches en modifiant le paramètre max_batch_interval.
ImportantLe cycle de planification minimal des tâches est de 5 secondes.
-
Parallélisme des tâches
Lorsque vous disposez d'un grand nombre de partitions et de nœuds BE, augmentez les valeurs des paramètres suivants pour accélérer l'exécution des tâches. Toutefois, l'augmentation du parallélisme peut entraîner une consommation CPU plus élevée.
max_routine_load_task_concurrent_num
desired_concurrent_number
StarRocks divise une seule tâche Routine Load en plusieurs sous-tâches en fonction du nombre de partitions de topic Kafka et des nœuds BE disponibles. Ces sous-tâches sont ensuite distribuées aux nœuds BE pour exécution. Le parallélisme des tâches correspond au nombre de sous-tâches issues de la division d'une tâche.
Le parallélisme réel des tâches est calculé à l'aide de la formule suivante.
concurrent_num = Min( Min( partition_num, Min( desired_concurrent_num, alive_be_num ) ),Config.max_routine_load_task_concurrent_num ) -
Taille du lot de tâches
routine_load_task_consume_second : Accélérez la consommation des données en augmentant la durée d'une lecture unique.
max_routine_load_batch_size : Accélérez la consommation des données en augmentant la quantité de données lues en un seul lot.
Consultez le journal suivant pour déterminer si le paramètre de taille de lot actuel est défini trop bas. Normalement, une valeur supérieure ou égale à 0 pour le champ
left_bytesdans ce journal indique que la quantité de données lues en un seul lot n'a pas dépassé la limite max_routine_load_batch_size. Une valeur négative indique que max_routine_load_batch_size est trop faible.I0325 20:27:50.410579 15259 data_consumer_group.cpp:131] consumer group done: 41448fb1a0ca59ad-30e34dabfa7e47a0. consume time(ms)=3261, received rows=179190, received bytes=9855450, eos: 1, left_time: -261, left_bytes: 514432550, blocking get time(us): 3065086, blocking put time(us): 24855 1
Paramètres de Routine Load
|
Paramètre |
Type |
Valeur par défaut |
Description |
|
max_routine_load_job_num |
fe.conf |
100 |
Nombre maximal de tâches Routine Load dans l'état NEED_SCHEDULE, RUNNING ou PAUSED. |
|
max_routine_load_task_concurrent_num |
fe.conf |
5 |
Parallélisme maximal d'une seule tâche Routine Load. |
|
max_routine_load_task_num_per_be |
fe.conf |
5 |
Nombre maximal de tâches Routine Load pouvant être planifiées sur un seul nœud BE. |
|
max_routine_load_batch_size |
fe.conf |
500 Mo |
Quantité maximale de données à lire depuis Kafka en un seul lot. |
|
routine_load_task_consume_second |
fe.conf |
3 |
Durée maximale de lecture des données depuis Kafka en un seul lot. |
|
routine_load_task_timeout_second |
fe.conf |
15 |
Délai d'expiration pour une seule tâche Routine Load. |
|
max_consumer_num_per_group |
be.conf |
3 |
Nombre maximal de consommateurs par groupe de consommateurs. |
|
desired_concurrent_number |
properties |
3 |
Parallélisme souhaité pour la tâche Routine Load. Le parallélisme réel est calculé selon la formule suivante : |
|
max_batch_interval |
properties |
10 s |
Intervalle de planification pour une tâche Routine Load. |
|
max_batch_rows |
properties |
200000 |
Ce paramètre définit la taille de la fenêtre de détection d'erreurs. La taille de la fenêtre est de |
|
max_error_number |
properties |
0 |
Nombre maximal de lignes d'erreur autorisées dans une fenêtre d'échantillonnage. La valeur doit être supérieure ou égale à 0. La valeur par défaut, 0, n'autorise aucune ligne d'erreur. Important
Les lignes filtrées par une clause WHERE ne sont pas comptabilisées comme des lignes d'erreur. |
|
strict_mode |
properties |
true |
Indique si le mode strict est activé. La valeur par défaut est true. En mode strict, les lignes sont filtrées si une colonne source non nullable est transformée en NULL. |
Sélection d'un modèle de données
StarRocks propose quatre modèles de données. Sélectionnez celui qui correspond le mieux à votre cas d'utilisation :
|
Modèle de données |
Scénario |
|
duplicate key model |
|
|
aggregate key model |
|
|
unique key model |
Idéal pour l'analyse en temps réel de données fréquemment mises à jour. |
|
primary key model |
Idéal pour l'analyse en temps réel de données fréquemment mises à jour. Si vous effectuez des mises à jour partielles de colonnes, nous vous recommandons de maintenir le nombre de colonnes inférieur à 200. |
Fonction COUNT dans les modèles de données
StarRocks propose quatre modèles de données : le modèle duplicate key, le modèle unique key, le modèle aggregate key et le modèle primary key. Le comportement de la fonction COUNT diffère considérablement selon ces modèles.
duplicate key model : Ce modèle ne nécessite aucune opération de fusion, ce qui rend les opérations COUNT rapides.
-
unique key et aggregate key models : L'implémentation de COUNT implique des opérations de fusion multi-versions, ce qui les rend relativement plus lentes.
Si la clé est de type chaîne, l'opération COUNT est théoriquement encore plus lente.
-
primary key model : Lors de la lecture des données, ce modèle utilise un index en mémoire et un vecteur de suppression, ce qui élimine le besoin d'opérations de fusion. Par conséquent, les opérations COUNT sont plus rapides que dans les modèles unique key et aggregate key.
Utilisez ce modèle pour les charges de travail impliquant des opérations de mise à jour.
Réduction de l'utilisation du disque du répertoire trash
Le répertoire /mnt/disk1/starrocks/storage/trash/ stocke les données supprimées. Pour réduire l'utilisation du disque de ce répertoire, diminuez la valeur du paramètre trash_file_expire_time_sec dans le fichier be.conf afin de raccourcir la période de rétention du répertoire trash. La valeur par défaut est de 259 200 secondes (72 heures).
Erreur lors de la création d'une vue matérialisée
-
Symptôme : Lorsque vous tentez de créer une vue matérialisée, l'erreur suivante se produit.
mysql> CREATE MATERIALIZED VIEW test_bl1_mvte AS select timed, event, count(userId) as PV from test_bl1 group by timed, event; ERROR 1064 (HY000): table [test_bl1] is not stable. Some tablets of this table may not be healthy or are being scheduled. You need to repair the table first or stop cluster balance. See 'help admin;'. mysql> -
Solution :
Exécutez les commandes
show proc "/cluster_balance";etshow proc "/statistic";.-
Vérifiez si une tablette est en cours de rééquilibrage :
Si une tablette est en cours de rééquilibrage, attendez la fin du processus.
Sinon, exécutez la commande
set disable_balance=truepuis essayez à nouveau de créer la vue matérialisée.
Dépannage des requêtes lentes
Nous vous recommandons les méthodes de dépannage suivantes :
-
Activez le reporting de profil et consultez les informations de profil dans l'interface utilisateur StarRocks.
Exécutez la commande
SET is_report_success = true;pour activer le reporting de profil. -
Suivez ces étapes de dépannage de base :
-
Ajustez le parallélisme.
-
Pipeline
SET pipeline_dop = 8; SET enable_pipeline_engine = true; -
Moteur sans pipeline
SET enable_pipeline_engine=false; SET parallel_fragment_exec_instance_num=8;
-
-
Vérifiez la distribution des tablettes.
show data xxx;RemarqueLa taille recommandée pour une tablette est comprise entre 1 Go et 10 Go.
-
Vérifiez la définition de la table.
Consultez le paramètre
iotimedans le profil. S'il est élevé, vous pouvez supprimer les index inutiles, tels qu'un nombre excessif d'index bitmap.Vérifiez le modèle de données de la table et sélectionnez-en un approprié. Par exemple, dans un modèle unique key, le pushdown de prédicat ne peut pas être appliqué tant que la compaction n'est pas terminée, ce qui entraîne souvent des requêtes lentes.
-
Échec d'accès sur le port 8030 ou 8040
Les ports par défaut pour load_url et webserver_port dépendent de votre version EMR. Pour EMR V5.8.0/V3.42.0 et versions antérieures, utilisez respectivement les ports 8030 et 8040. Pour EMR V5.9.0/V3.43.0 et versions ultérieures, utilisez les ports 18030 et 18040.
Exécutez la commande show frontends pour afficher les ports réellement utilisés.
Disponibilité régionale d'EMR StarRocks
EMR StarRocks est disponible dans toutes les régions.
Disques de données BE et distribution des données
Par défaut, quatre disques cloud ESSD PL1 améliorés sont montés. StarRocks équilibre automatiquement les données sur tous les nœuds en fonction de la charge, du bucketing et d'autres facteurs. Chaque réplica de tablette est stocké entièrement sur un seul disque.
Réinitialisation du cluster pour la récupération des données
Les opérations suivantes effacent toutes les données du cluster. Procédez avec prudence.
Arrêtez les services du cluster (FE et BE).
-
Effacez le répertoire de métadonnées FE.
Consultez le fichier fe.conf situé dans le répertoire
/opt/apps/STARROCKS/starrocks-current/fe/conf/pour trouver le répertoire configuré pourmeta_dir.Supprimez le dossier bdb du répertoire configuré.
Videz le dossier image du répertoire configuré.
-
Effacez les données et les métadonnées BE.
Consultez le fichier be.conf situé dans le répertoire
/opt/apps/STARROCKS/starrocks-current/be/conf/pour trouver le répertoire configuré pourstorage_root_path.Supprimez tous les dossiers et fichiers du répertoire configuré, à l'exception des dossiers data et meta.
Videz les dossiers data et meta du répertoire configuré.
RemarqueLa configuration peut spécifier plusieurs chemins. Vous devez effectuer ces opérations pour chaque chemin.
Redémarrez les services du cluster (FE et BE).
Consultation des journaux
Les répertoires de journaux se trouvent généralement dans les chemins suivants :
-
FE
/opt/apps/STARROCKS/starrocks-current/fe/log/
/mnt/disk1/log/starrocks/
-
BE
/opt/apps/STARROCKS/starrocks-current/be/log/
/mnt/disk1/log/starrocks/
Les nœuds de tâche ajoutés ne sont pas utilisés pour le calcul
Symptôme
Après avoir étendu un cluster StarRocks en ajoutant trois nœuds de tâche, les nouveaux nœuds sont attribués en tant que nœuds de calcul (CN), mais n'exécutent pas automatiquement les tâches de calcul. Bien que les nœuds BE existants soient fortement sollicités, les nœuds de tâche nouvellement ajoutés restent sous-utilisés, les données de surveillance affichant une charge constamment faible.
Cause
Dans une architecture d'intégration calcul-stockage, les CN d'un cluster StarRocks ne peuvent être utilisés que pour les requêtes portant sur des tables externes. Par conséquent, si l'application concerne principalement l'interrogation de tables internes, les nœuds BE gèrent ces tâches, laissant les nouveaux CN sous-utilisés.
Solution
Avant d'exécuter les tâches de requête, exécutez la commande SQL suivante pour prioriser les CN pour l'exécution des tâches.
SET GLOBAL prefer_compute_node=true;
Consultation du mot de passe du cluster StarRocks
Le mot de passe d'un cluster StarRocks est celui que vous avez défini pour l'utilisateur root lors de la création du cluster. Si vous avez oublié le mot de passe, vous pouvez le réinitialiser. Pour plus d'informations, consultez la section Comment réinitialiser le mot de passe de connexion au cluster ?