Tous les produits
Search
Centre de documentation

E-MapReduce:FAQ

Dernière mise à jour :Sep 09, 2026

Cette rubrique répond aux questions fréquemment posées sur l'utilisation de StarRocks.

Exigences matérielles

  • Configuration globale des machines

    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 possède généralement 16 cœurs CPU, 32 Go ou 64 Go de mémoire, ainsi qu'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 comprise entre 70 % et 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 avx2 pour vérifier cette prise en charge.

    • Le moteur d'exécution vectorisé offre les meilleures performances 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.

  • Généralement, sélectionnez les clés de partition en fonction de la manière dont votre entreprise gère les données. Par exemple, utilisez des colonnes temporelles ou géographiques comme clés de partition.

  • Si vous devez créer des partitions automatiquement, utilisez le partitionnement dynamique.

Utilisation du bucketing

  • Sélectionnez une colonne à haute cardinalité comme clé de bucketing pour éviter le déséquilibre des 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, utilisez 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.

  • Pour maximiser l'utilisation des ressources sur un petit nombre de machines, calculez le nombre de buckets à l'aide de la formule : Number of BEs * CPU cores / 2.

Diagnostic des tables avec trop peu de buckets

Si les performances de requête ou d'importation d'une table sont médiocres, vérifiez si elle dispose de trop peu de buckets. Interrogez la table information_schema.partitions_meta pour afficher le nombre de buckets de chaque partition :

SELECT buckets, count(*) FROM information_schema.partitions_meta WHERE buckets < 4 GROUP BY buckets;

Cette requête renvoie les partitions dont le nombre de buckets est inférieur à 4, regroupées par nombre de buckets, afin que vous puissiez identifier les tables avec trop peu de buckets.

Ajustement du nombre de buckets d'une table existante

StarRocks ne permet pas de modifier directement le nombre de buckets d'une table existante. Pour ajuster le nombre de buckets, créez une nouvelle table avec le nombre de buckets souhaité, puis migrez les données de l'ancienne table vers la nouvelle :

CREATE TABLE ... DISTRIBUTED BY HASH(...) BUCKETS 8;
INSERT INTO <new_table> SELECT * FROM <old_table>;

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 à forte concurrence telle que select sum(revenue) from lineorder where user_id='aaa100';, nous vous recommandons vivement de faire de user_id la première colonne de la clé de tri.

  • Si vos requêtes sont principalement 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éfinir region comme première colonne et nation comme 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.

    Important

    Le 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 dans lesquelles une tâche est divisée.

    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_bytes dans 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 petit.

    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 : concurrent_num = Min( Min( partition_num, Min(desired_concurrent_num, alive_be_num ) ),Config.max_routine_load_task_concurrent_num ).

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 10 * max_batch_rows.

max_error_number

properties

0

Nombre maximal de lignes erronées 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 erronée.

Important

Les lignes filtrées par une clause WHERE ne sont pas comptées comme des lignes erronées.

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

modèle à clé dupliquée

  • Les données ne sont pas mises à jour fréquemment.

  • Les modèles de requête sont flexibles et n'impliquent pas de pré-agrégation.

  • Les données brutes doivent être conservées.

modèle à clé d'agrégation

  • Les données sont uniquement ajoutées, sans mise à jour.

  • Les requêtes métier incluent des fonctions d'agrégation, telles que MIN, MAX ou SUM.

  • Il n'est pas nécessaire d'interroger les données détaillées brutes.

modèle à clé unique

Idéal pour l'analyse en temps réel de données fréquemment mises à jour.

modèle à clé primaire

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 à clé dupliquée, le modèle à clé unique, le modèle à clé d'agrégation et le modèle à clé primaire. Le comportement de la fonction COUNT diffère considérablement selon ces modèles.

  • Modèle à clé dupliquée : ce modèle ne nécessite pas d'opération de fusion, ce qui rend les opérations COUNT rapides.

  • Modèles à clé unique et à clé d'agrégation : 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.

  • Modèle à clé primaire : 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 à clé unique et à clé d'agrégation.

    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 conservation 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 :

    1. Exécutez les commandes show proc "/cluster_balance"; et show proc "/statistic";.

    2. 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=true puis essayez à nouveau de créer la vue matérialisée.

Dépannage des requêtes lentes

Nous recommandons les méthodes de dépannage suivantes :

  • Activez la génération de profils et consultez les informations de profil dans l'interface utilisateur StarRocks.

    Exécutez la commande SET is_report_success = true; pour activer la génération de profils.

  • Suivez ces étapes de dépannage de base :

    1. 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;
    2. Vérifiez la distribution des tablettes.

      show data xxx;
      Remarque

      La taille recommandée pour une tablette est comprise entre 1 Go et 10 Go.

    3. Vérifiez la définition de la table.

      1. Vérifiez la valeur iotime dans le profil. Si elle est élevée, supprimez les index inutiles, tels qu'un nombre excessif d'index bitmap.

      2. Vérifiez le modèle de données de la table et sélectionnez-en un approprié. Par exemple, dans un modèle à clé unique, le pushdown de prédicat ne peut pas être appliqué tant que la compaction n'est pas terminée, ce qui provoque souvent des requêtes lentes.

Configuration du paramètre query_timeout

Le paramètre query_timeout contrôle le délai d'expiration des requêtes en secondes. La valeur par défaut est de 300 secondes.

  • Pour un paramétrage au niveau de la session, exécutez l'instruction suivante. Le paramètre s'applique uniquement à la connexion actuelle et est perdu lors de la déconnexion. Exécutez l'instruction et la requête dans la même session.

    SET query_timeout = 1800;
  • Pour un paramétrage global, exécutez l'instruction suivante. Cette instruction nécessite des privilèges ADMIN. Les nouvelles sessions héritent du paramètre, mais les sessions existantes doivent se reconnecter pour que le paramètre prenne effet.

    SET GLOBAL query_timeout = 600;

Dépannage d'un paramètre qui ne prend pas effet

  1. Vérifiez que vous exécutez l'instruction SET et la requête sur la même connexion. Un paramétrage au niveau de la session s'applique uniquement à la connexion actuelle et doit être configuré à nouveau après reconnexion.

  2. Après avoir modifié le paramètre global, créez une nouvelle session ou reconnectez-vous. Les sessions existantes n'héritent pas automatiquement du nouveau paramètre.

  3. Vérifiez que vous disposez des privilèges ADMIN pour le paramètre global et contrôlez si l'instruction SET GLOBAL a échoué en raison de privilèges insuffisants.

É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.

Remarque

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

Important

Les opérations suivantes effacent toutes les données du cluster. Procédez avec prudence.

  1. Arrêtez les services du cluster (FE et BE).

  2. Effacez le répertoire de métadonnées FE.

    1. Consultez le fichier fe.conf dans le répertoire /opt/apps/STARROCKS/starrocks-current/fe/conf/ pour trouver le répertoire configuré pour meta_dir.

    2. Supprimez le dossier bdb du répertoire configuré.

    3. Videz le dossier image du répertoire configuré.

  3. Effacez les données et les métadonnées BE.

    1. Consultez le fichier be.conf dans le répertoire /opt/apps/STARROCKS/starrocks-current/be/conf/ pour trouver le répertoire configuré pour storage_root_path.

    2. Supprimez tous les dossiers et fichiers du répertoire configuré, à l'exception des dossiers data et meta.

    3. Videz les dossiers data et meta du répertoire configuré.

    Remarque

    La configuration peut spécifier plusieurs chemins. Vous devez effectuer ces opérations pour chaque chemin.

  4. 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/

Nœuds de tâche ajoutés lors du scale-out non 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 assigné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 sur des tables externes. Par conséquent, si l'application implique 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;

Affichage 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 ?