View a markdown version of this page

Utilisation de la classification des soumissionnaires de tâches - Amazon EMR

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.

Utilisation de la classification des soumissionnaires de tâches

Présentation de

La demande StartJobRun d'Amazon EMR on EKS crée un pod soumissionnaire de tâche (également connu sous le nom de pod exécuteur de tâche) pour lancer le pilote Spark. Vous pouvez utiliser la emr-job-submitter classification pour configurer les sélecteurs de nœuds, ajouter des tolérances, personnaliser la journalisation et apporter d'autres modifications au module d'envoi des tâches.

Les paramètres suivants sont disponibles dans la emr-job-submitter classification :

jobsubmitter.node.selector.[selectorKey]

S'ajoute au sélecteur de nœuds du module d'envoi de tâches, avec la clé selectorKey et la valeur comme valeur de configuration. Par exemple, vous pouvez jobsubmitter.node.selector.identifier définir sur myIdentifier et le module de soumission des tâches comportera un sélecteur de nœuds avec une clé identifier et une valeur. myIdentifier Cela peut être utilisé pour spécifier sur quels nœuds le pod de soumission de tâches peut être placé. Pour ajouter plusieurs clés de sélection de nœuds, définissez plusieurs configurations avec ce préfixe.

jobsubmitter.label.[labelKey]

S'ajoute aux étiquettes du module d'envoi de tâches, avec la clé labelKey et la valeur comme valeur de configuration. Pour ajouter plusieurs étiquettes, définissez plusieurs configurations avec ce préfixe.

jobsubmitter.annotation.[annotationKey]

S'ajoute aux annotations du module d'envoi des tâches, avec la clé annotationKey et la valeur comme valeur de configuration. Pour ajouter plusieurs annotations, définissez plusieurs configurations avec ce préfixe.

jobsubmitter.node.toleration.[tolerationKey]

Ajoute des tolérances au module d'envoi des tâches. Par défaut, aucune tolérance n'est ajoutée au module. La clé de la tolérance sera tolerationKey et la valeur de la tolérance sera la valeur de configuration. Si la valeur de configuration est définie sur une chaîne non vide, l'opérateur le seraEquals. Si la valeur de configuration est définie sur"", l'opérateur le seraExists.

jobsubmitter.node.toleration.[tolerationKey].[effect]

Ajoute un effet de tolérance au préfixetolerationKey. Ce champ est obligatoire lors de l'ajout de tolérances. Les valeurs autorisées pour le champ d'effet sont NoExecuteNoSchedule, etPreferNoSchedule.

jobsubmitter.node.toleration.[tolerationKey].[tolerationSeconds]

Ajoute TolerationSeconds au préfixe. tolerationKey Champ facultatif. Applicable uniquement lorsque l'effet est présentNoExecute.

jobsubmitter.scheduler.name

Définit un SchedulerName personnalisé pour le module d'envoi des tâches.

jobsubmitter.logging

Active ou désactive la journalisation sur le module d'envoi des tâches. Lorsque ce paramètre est défini sur, DISABLED le conteneur de journalisation est supprimé du module d'envoi des tâches, ce qui désactive toute journalisation pour ce module spécifiée dans lemonitoringConfiguration, tel que s3MonitoringConfiguration ou. cloudWatchMonitoringConfiguration Lorsque ce paramètre n'est pas défini ou qu'il est défini sur une autre valeur, la connexion au module d'envoi des tâches est activée.

jobsubmitter.logging.image

Définit une image personnalisée à utiliser pour le conteneur de journalisation dans le module d'envoi des tâches.

jobsubmitter.logging.request.cores

Définit une valeur personnalisée pour le nombre CPUs, en unités de processeur, du conteneur de journalisation sur le module d'envoi des tâches. Par défaut, ce paramètre est réglé sur 100 m.

jobsubmitter.logging.request.memory

Définit une valeur personnalisée pour la quantité de mémoire, en octets, pour le conteneur de journalisation sur le module d'envoi des tâches. Par défaut, ce paramètre est réglé sur 200 Mi. Un mébioctet est une unité de mesure similaire à un mégaoctet.

jobsubmitter.container.image

Définit une image personnalisée pour le conteneur du module d'envoi de job-runner tâches.

jobsubmitter.container.image.pullPolicy

Définit imagePullPolicyles conteneurs du module de soumission des tâches.

Nous vous recommandons de placer les modules d'envoi de tâches sur des instances à la demande. Le fait de placer des modules d'envoi de tâches sur des instances Spot peut entraîner l'échec d'une tâche si l'instance sur laquelle s'exécute le module d'envoi de tâches est sujette à une interruption d'instance Spot. Vous pouvez également placer le module d'envoi des tâches dans une seule zone de disponibilité ou utiliser les étiquettes Kubernetes appliquées aux nœuds.

Exemples de classification des soumissionnaires de tâches

Demande StartJobRun avec placement de nœuds à la demande pour le pod soumissionnaire de tâches

cat >spark-python-in-s3-nodeselector-job-submitter.json << EOF { "name": "spark-python-in-s3-nodeselector", "virtualClusterId": "virtual-cluster-id", "executionRoleArn": "execution-role-arn", "releaseLabel": "emr-6.11.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "s3://S3-prefix/trip-count.py", "sparkSubmitParameters": "--conf spark.driver.cores=5 --conf spark.executor.memory=20G --conf spark.driver.memory=15G --conf spark.executor.cores=6" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "spark-defaults", "properties": { "spark.dynamicAllocation.enabled":"false" } }, { "classification": "emr-job-submitter", "properties": { "jobsubmitter.node.selector.eks.amazonaws.com/capacityType": "ON_DEMAND" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } } } EOF aws emr-containers start-job-run --cli-input-json file:///spark-python-in-s3-nodeselector-job-submitter.json

StartJobRundemande avec placement d'un nœud mono-AZ et placement du type d'instance Amazon EC2 pour le module d'envoi des tâches

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.node.selector.topology.kubernetes.io/zone": "Availability Zone", "jobsubmitter.node.selector.node.kubernetes.io/instance-type":"m5.4xlarge" } } ] }

StartJobRundemande avec des étiquettes, des annotations et un planificateur personnalisé pour le module d'envoi des tâches

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.label.label1": "value1", "jobsubmitter.label.label2": "value2", "jobsubmitter.annotation.ann1": "value1", "jobsubmitter.annotation.ann2": "value2", "jobsubmitter.scheduler.name": "custom-scheduler" } } ] }

StartJobRundemande avec une tolérance appliquée au module d'envoi de la tâche avec clédedicated, valeur graviton_machinesNoExecute, effet et un tolerationSeconds délai de 60 secondes

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.node.toleration.dedicated":"graviton_machines", "jobsubmitter.node.toleration.dedicated.effect":"NoExecute", "jobsubmitter.node.toleration.dedicated.tolerationSeconds":"60" } } ] }

StartJobRundemande avec journalisation désactivée pour le module d'envoi de tâches

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.logging": "DISABLED" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } }

StartJobRundemande avec image du conteneur de journalisation personnalisé, processeur et mémoire pour le module d'envoi des tâches

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.logging.image": "YOUR_ECR_IMAGE_URL", "jobsubmitter.logging.request.memory": "200Mi", "jobsubmitter.logging.request.cores": "0.5" } } ], "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "/emr-containers/jobs", "logStreamNamePrefix": "demo" }, "s3MonitoringConfiguration": { "logUri": "s3://joblogs" } } }

StartJobRundemande avec une image de conteneur d'envoi de tâches personnalisée et une politique d'extraction

"configurationOverrides": { "applicationConfiguration": [ { "classification": "emr-job-submitter", "properties": { "jobsubmitter.container.image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/emr6.11_custom_repo", "jobsubmitter.container.image.pullPolicy": "kubernetes pull policy" } } ] }