Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Débit alloué DynamoDB
Lorsque vous émettez des instructions HiveQL sur la table DynamoDB externe, la DynamoDBStorageHandler
classe émet les requêtes DynamoDB de bas niveau appropriées, qui consomment le débit provisionné. API Si la capacité de lecture ou d'écriture sur la table DynamoDB est insuffisante, la demande est limitée, ce qui ralentit les performances de HiveQL. Pour cette raison, vous devez vous assurer que la table dispose d'une capacité de débit suffisante.
Par exemple, supposons que vous ayez approvisionné 100 unités de capacité de lecture pour votre table DynamoDB. Cela vous permet de lire 409 600 octets par seconde (taille d'unité de capacité de lecture de 100 × 4 Ko). Supposons maintenant que la table contient 20 Go de données (21 474 836 480 octets) et que vous souhaitez utiliser l'instruction SELECT
pour sélectionner toutes les données à l'aide de HiveQL. Vous pouvez estimer le temps nécessaire à l'exécution de la requête comme suit :
21 474 836 480 / 409 600 = 52 429 secondes = 14,56 heures
Dans ce scénario, la table DynamoDB est un goulot d'étranglement. Cela n'aidera pas à ajouter d'autres EMR nœuds Amazon, car le débit de Hive est limité à 409 600 octets par seconde. La seule façon de réduire le temps requis pour l'instruction SELECT
consiste à augmenter la capacité de lecture allouée à la table DynamoDB.
Vous pouvez effectuer un calcul similaire pour estimer le temps nécessaire pour charger en bloc des données dans une table externe Hive mappée à une table DynamoDB. Déterminez le nombre total d'unités de capacité d'écriture nécessaires par élément (moins de 1 Ko = 1, 1 à 2 Ko = 2, etc.) et multipliez-le par le nombre d'éléments à charger. Vous obtiendrez le nombre d'unités de capacité d'écriture requises. Divisez ce nombre par le nombre d'unités de capacité d'écriture allouées par seconde. Cela donne le nombre de secondes nécessaires charger la table.
Vous devez surveiller régulièrement les CloudWatch indicateurs de votre tableau. Pour obtenir une vue d'ensemble rapide de la console DynamoDB, choisissez votre table, puis l'onglet Métriques. À partir de là, vous pouvez afficher les unités de capacité de lecture et d'écriture consommées, ainsi que les demandes de lecture et d'écriture qui ont été limitées.
Capacité de lecture
Amazon EMR gère la charge des demandes par rapport à votre table DynamoDB, conformément aux paramètres de débit provisionnés de la table. Cependant, si vous observez un nombre important de messages ProvisionedThroughputExceeded
dans la sortie de la tâche, vous pouvez ajuster la vitesse de lecture par défaut. Pour ce faire, vous pouvez modifier la variable de configuration dynamodb.throughput.read.percent
. Vous pouvez utiliser la commande SET
pour définir cette variable à l'invite de commande Hive :
SET dynamodb.throughput.read.percent=1.0;
Cette variable est conservée uniquement pour la session Hive en cours. Si vous quittez Hive et y revenez ultérieurement, dynamodb.throughput.read.percent
revient à sa valeur par défaut.
La valeur de dynamodb.throughput.read.percent
peut être de 0.1
à 1.5
. 0.5
représentant la vitesse de lecture par défaut, Hive tente de consommer la moitié de la capacité de lecture de la table. Si vous augmentez la valeur au-delà de 0.5
, Hive augmente le débit de demandes. Si vous réduisez la valeur sous 0.5
, le débit de demandes de lecture baisse. La vitesse de lecture réelle dépend de facteurs tels que l'existence d'une distribution uniforme des clés dans la clé DynamoDB.
Si vous remarquez que Hive épuise fréquemment la capacité de lecture approvisionnée de la table, ou si vos demandes de lecture sont trop limitées, essayez de réduire la valeur dynamodb.throughput.read.percent
sous 0.5
. Si vous disposez d'une capacité de lecture suffisante dans la table et souhaitez des opérations HiveQL plus réactives, vous pouvez définir la valeur au-dessus de 0.5
.
Capacité d'écriture
Amazon EMR gère la charge des demandes par rapport à votre table DynamoDB, conformément aux paramètres de débit provisionnés de la table. Cependant, si vous observez un nombre important de messages ProvisionedThroughputExceeded
dans la sortie de la tâche, vous pouvez ajuster la vitesse d'écriture par défaut. Pour ce faire, vous pouvez modifier la variable de configuration dynamodb.throughput.write.percent
. Vous pouvez utiliser la commande SET
pour définir cette variable à l'invite de commande Hive :
SET dynamodb.throughput.write.percent=1.0;
Cette variable est conservée uniquement pour la session Hive en cours. Si vous quittez Hive et y revenez ultérieurement, dynamodb.throughput.write.percent
revient à sa valeur par défaut.
La valeur de dynamodb.throughput.write.percent
peut être de 0.1
à 1.5
. 0.5
représentant la vitesse d'écriture par défaut, Hive tente de consommer la moitié de la capacité d'écriture de la table. Si vous augmentez la valeur au-delà de 0.5
, Hive augmente le débit de demandes. Si vous réduisez la valeur sous 0.5
, le débit de demandes d'écriture baisse. La vitesse d'écriture réelle dépend de facteurs tels que l'existence d'une distribution uniforme des clés dans la clé DynamoDB.
Si vous remarquez que Hive épuise fréquemment la capacité d'écriture approvisionnée de la table, ou si vos demandes d'écriture sont trop limitées, essayez de réduire la valeur dynamodb.throughput.write.percent
sous 0.5
. Si vous disposez d'une capacité d'écriture suffisante dans la table et souhaitez des opérations HiveQL plus réactives, vous pouvez définir la valeur au-dessus de 0.5
.
Lorsque vous écrivez des données sur DynamoDB à l'aide de Hive, assurez-vous que le nombre d'unités de capacité d'écriture est supérieur au nombre de mappeurs dans le cluster. Prenons l'exemple d'un EMR cluster Amazon composé de 10 nœuds m1.xlarge. Le type de nœud m1.xlarge fournissant 8 tâches de mappage, le cluster compterait un total de 80 mappeurs (10 x 8). Si votre table DynamoDB possède moins de 80 unités de capacité d'écriture, une opération d'écriture Hive peut consommer tout le débit d'écriture de cette table.
Pour déterminer le nombre de mappeurs pour les types de EMR nœuds Amazon, consultez la section Configuration des tâches dans le manuel Amazon EMR Developer Guide.
Pour plus d'informations sur les mappeurs, consultez Ajustement des mappeurs.