Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Chez Skyeng, nous utilisons Amazon Redshift, y compris la mise à l'échelle parallèle, nous avons donc trouvé cet article de Stefan Gromoll, fondateur de dotgo.com, pour intermix.io intéressant. Après la traduction, un peu de notre expérience de l'ingénieur de données Daniyar Belkhodzhaev.

Architecture Amazon Redshift permet la mise à l'échelle en ajoutant de nouveaux nœuds au cluster. La nécessité de faire face à un nombre maximal de requêtes peut conduire à un surprovisionnement des nœuds. La mise à l'échelle de la concurrence, contrairement à l'ajout de nouveaux nœuds, augmente la puissance de calcul selon les besoins.

La mise à l'échelle parallèle d'Amazon Redshift donne aux clusters Redshift une capacité supplémentaire pour gérer les volumes de demandes de pointe. Il fonctionne en déplaçant les requêtes vers de nouveaux clusters « parallèles » en arrière-plan. Les demandes sont acheminées en fonction de la configuration et des règles WLM.

La tarification à évolution parallèle est basée sur un modèle de crédit avec un niveau gratuit. Au-dessus des crédits gratuits, le paiement est basé sur le temps pendant lequel Parallel Scaling Cluster traite les demandes.

L'auteur a testé la mise à l'échelle parallèle sur l'un des clusters internes. Dans cet article, il parlera des résultats des tests et donnera des conseils sur la façon de commencer.

Exigences du cluster

Pour utiliser la mise à l'échelle parallèle, votre cluster Amazon Redshift doit répondre aux exigences suivantes :

- plate-forme: EC2-VPC ;
— type de nœud : dc2.8xlarge, ds2.8xlarge, dc2.large ou ds2.xlarge ;
— nombre de nœuds : de 2 à 32 (les clusters à nœud unique ne sont pas pris en charge).

Types de demandes acceptables

La mise à l'échelle parallèle ne convient pas à tous les types de requêtes. Dans la première version, il traite uniquement les requêtes de lecture qui satisfont trois conditions :

— Les requêtes SELECT sont en lecture seule (bien que d'autres types soient prévus) ;
— la requête ne référence pas une table avec le style de tri INTERLEAVED ;
- La requête n'utilise pas Amazon Redshift Spectrum pour référencer des tables externes.

Pour être acheminée vers le cluster Parallel Scaling, la demande doit être mise en file d’attente. De plus, les requêtes éligibles à la file d'attente SQA (Accélération des requêtes courtes), ne fonctionnera pas sur des clusters à échelle parallèle.

Les files d'attente et SQA nécessitent une configuration appropriée Gestion de la charge de travail Redshift (WLM). Nous vous recommandons d’optimiser d’abord votre WLM – cela réduira le besoin de mise à l’échelle parallèle. Et c’est important car la mise à l’échelle parallèle n’est gratuite que pendant un certain nombre d’heures. AWS affirme que la mise à l'échelle parallèle sera gratuite pour 97 % des clients, ce qui nous amène à la question de la tarification.

Coût de la mise à l'échelle parallèle

AWS propose un modèle de crédit pour une mise à l'échelle parallèle. Chaque cluster actif Redshift d'Amazon Accumule des crédits toutes les heures, jusqu'à une heure de crédits de mise à l'échelle parallèle gratuits par jour.

Vous ne payez que lorsque votre utilisation de Parallel Scaling Clusters dépasse le montant des crédits que vous avez reçus.

Le coût est calculé selon un tarif à la demande par seconde pour un cluster parallèle utilisé au-dessus du tarif gratuit. Vous n'êtes facturé que pour la durée de vos requêtes, avec une facturation minimale d'une minute à chaque fois qu'un Parallel Scaling Cluster est activé. Le tarif par seconde à la demande est calculé sur la base des principes généraux de tarification Redshift d'Amazon, c'est-à-dire que cela dépend du type de nœud et du nombre de nœuds dans votre cluster.

Lancement de la mise à l'échelle parallèle

La mise à l'échelle parallèle est déclenchée pour chaque file d'attente WLM. Accédez à la console AWS Redshift et sélectionnez Workload Management dans le menu de navigation de gauche. Sélectionnez le groupe de paramètres WLM de votre cluster dans le menu déroulant suivant.

Vous verrez une nouvelle colonne appelée « Mode de mise à l'échelle de la concurrence » à côté de chaque file d'attente. La valeur par défaut est « Désactivé ». Cliquez sur "Modifier" et vous pourrez modifier les paramètres de chaque file d'attente.

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Configuration

La mise à l'échelle parallèle fonctionne en transmettant les requêtes appropriées vers de nouveaux clusters dédiés. Les nouveaux clusters ont la même taille (type et nombre de nœuds) que le cluster principal.

Le nombre par défaut de clusters utilisés pour la mise à l'échelle parallèle est de un (1), avec la possibilité de configurer jusqu'à un total de dix (10) clusters.
Le nombre total de clusters pour la mise à l'échelle parallèle peut être défini par le paramètre max_concurrency_scaling_clusters. L'augmentation de la valeur de ce paramètre fournit des clusters redondants supplémentaires.

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Surveillance

Plusieurs graphiques supplémentaires sont disponibles dans la console AWS Redshift. Le graphique Nombre maximal de clusters de mise à l'échelle de concurrence configurés affiche la valeur de max_concurrency_scaling_clusters au fil du temps.

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Le nombre de clusters de mise à l'échelle actifs est affiché dans l'interface utilisateur dans la section « Activité de mise à l'échelle simultanée » :

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Dans l'onglet Requêtes, il y a une colonne indiquant si la requête a été exécutée dans le cluster principal ou dans le cluster de mise à l'échelle parallèle :

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Qu'une requête particulière ait été exécutée dans le cluster principal ou via un cluster de mise à l'échelle parallèle, elle est stockée dans stl_query.concurrency_scaling_status.

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Une valeur de 1 indique que la requête a été exécutée dans le cluster à échelle parallèle, tandis que d'autres valeurs indiquent qu'elle a été exécutée dans le cluster principal.

Exemple:

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Les informations de mise à l'échelle de la concurrence sont également stockées dans d'autres tables et vues, telles que SVCS_CONCURRENCY_SCALING_USAGE. De plus, il existe un certain nombre de tables de catalogue qui stockent des informations sur la mise à l'échelle parallèle.

résultats

Les auteurs ont commencé la mise à l'échelle parallèle pour une file d'attente dans le cluster interne vers 18 h 30 min 00 s GMT le 29.03.2019 mars 3. Ils ont modifié le paramètre max_concurrency_scaling_clusters sur 20 vers 30 h 00 min 29.03.2019 s le XNUMX mars XNUMX.

Pour simuler une file d'attente de requêtes, nous avons réduit le nombre d'emplacements pour cette file d'attente de 15 à 5.

Vous trouverez ci-dessous un tableau de bord intermix.io montrant le nombre de requêtes en cours d'exécution et en file d'attente après réduction du nombre d'emplacements.

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

On constate que le temps d'attente des demandes dans la file d'attente a augmenté, le temps maximum étant supérieur à 5 minutes.

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Voici les informations pertinentes de la console AWS sur ce qui s'est passé pendant cette période :

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Redshift a lancé trois (3) clusters de mise à l'échelle parallèle comme configuré. Il semble que ces clusters aient été sous-utilisés, même si de nombreuses requêtes de notre cluster étaient mises en file d'attente.

Le graphique d'utilisation est en corrélation avec le graphique d'activité de mise à l'échelle :

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

Après quelques heures, les auteurs ont vérifié la file d'attente et il semblait que 6 requêtes étaient exécutées en parallèle. Nous avons également testé de manière aléatoire deux requêtes via l'interface utilisateur. Nous n'avons pas vérifié comment utiliser ces valeurs lorsque plusieurs clusters parallèles sont actifs en même temps.

Guide de mise à l'échelle parallèle Amazon Redshift et résultats des tests

résultats

La mise à l'échelle parallèle peut réduire le temps passé par les requêtes dans la file d'attente lors des pics de charge.

Sur la base des résultats du test de base, il s'est avéré que la situation des demandes de chargement s'est partiellement améliorée. Cependant, la mise à l’échelle parallèle n’a pas résolu à elle seule tous les problèmes de concurrence.

Cela est dû aux restrictions sur les types de requêtes pouvant utiliser la mise à l’échelle parallèle. Par exemple, les auteurs ont de nombreuses tables avec des clés de tri entrelacées, et la majeure partie de notre charge de travail consiste à écrire.

Bien que la mise à l'échelle parallèle ne soit pas une solution universelle pour configurer WLM, l'utilisation de cette fonctionnalité est simple et directe.

Par conséquent, l'auteur recommande de l'utiliser pour vos files d'attente WLM. Commencez avec un cluster parallèle et surveillez la charge de pointe via la console pour déterminer si les nouveaux clusters sont pleinement utilisés.

À mesure qu'AWS ajoute la prise en charge de types de requêtes et de tables supplémentaires, la mise à l'échelle parallèle devrait progressivement devenir de plus en plus efficace.

Commentaire de Daniyar Belkhodzhaev, ingénieur de données Skyeng

Chez Skyeng, nous avons également immédiatement remarqué la possibilité émergente d'une mise à l'échelle parallèle.
La fonctionnalité est très attrayante, d'autant plus qu'AWS estime que la plupart des utilisateurs n'auront même pas à payer de supplément pour cela.

Il se trouve qu'à la mi-avril, nous avons eu une vague inhabituelle de demandes adressées au cluster Redshift. Pendant cette période, nous avons souvent eu recours au Concurrency Scaling ; parfois un cluster supplémentaire fonctionnait 24 heures sur XNUMX sans s'arrêter.

Cela a permis, sinon de résoudre complètement le problème des files d'attente, du moins de rendre la situation acceptable.

Nos observations coïncident en grande partie avec les impressions des gars d'intermix.io.

Nous avons également remarqué que même s'il y avait des requêtes en attente dans la file d'attente, toutes les requêtes n'étaient pas immédiatement transmises au cluster parallèle. Apparemment, cela se produit parce que le cluster parallèle met encore du temps à démarrer. En conséquence, lors des pics de charge à court terme, nous avons encore de petites files d'attente et les alarmes correspondantes ont le temps de se déclencher.

Après nous être débarrassés des charges anormales en avril, nous sommes, comme AWS l'espérait, entrés dans le mode d'utilisation occasionnelle - dans le cadre de la norme gratuite.
Vous pouvez suivre vos coûts de mise à l'échelle parallèle dans AWS Cost Explorer. Vous devez sélectionner Service - Redshift, Type d'utilisation - CS, par exemple USW2-CS:dc2.large.

Vous pouvez en savoir plus sur les prix en russe ici.

Source: habr.com

Ajouter un commentaire