Les nœuds EMR Shell de DataWorks exécutent des scripts Shell personnalisés pour le traitement des données, l'appel aux composants Hadoop et la gestion des fichiers. Suivez cette procédure pour configurer, développer et exécuter des tâches Shell dans les nœuds EMR Shell.
Prérequis
-
Pour personnaliser l'environnement des composants avant le développement du nœud, créez une image personnalisée basée sur l'image officielle
dataworks_emr_base_task_podet utilisez l'image dans DataStudio.Par exemple, vous pouvez remplacer un package JAR Spark ou dépendre de
libraries,filesouJAR packagesspécifiques lors de la création d'une image personnalisée. Un cluster EMR est enregistré dans DataWorks. Pour plus d'informations, consultez la rubrique DataStudio (ancienne version) : Lier une ressource de calcul EMR.
(Facultatif, pour les utilisateurs RAM) L'utilisateur RAM chargé du développement des tâches doit être membre de l'espace de travail et disposer du rôle Development ou Workspace Administrator. Le rôle Workspace Administrator dispose d'autorisations étendues. Attribuez-le avec prudence. Pour plus d'informations, consultez la rubrique Ajouter des membres à un espace de travail et leur attribuer des rôles.
Un groupe de ressources serverless est acheté et configuré, notamment la liaison du groupe de ressources à un espace de travail et la configuration du réseau. Pour plus d'informations, consultez la rubrique Utiliser un groupe de ressources serverless.
-
Un flux de travail est créé dans DataStudio.
Dans DataStudio, tout le développement de nœuds est organisé en flux de travail. Vous devez créer un flux de travail avant de créer un nœud. Pour plus d'informations, consultez la rubrique Créer un flux de travail.
-
Si vous exécutez un script Python sur un groupe de ressources DataWorks et que votre code nécessite des packages tiers, préparez l'environnement des packages sur le groupe de ressources. La méthode varie selon le type de groupe de ressources :
Groupe de ressources serverless (recommandé) : installez les packages tiers à l'aide de la gestion des images. Pour plus d'informations, consultez la rubrique Images personnalisées.
Groupe de ressources exclusif pour la planification : installez les packages tiers à l'aide d'O&M Assistant. Pour plus d'informations, consultez la rubrique O&M Assistant.
Limites
Vous pouvez exécuter ce type de tâche uniquement sur un groupe de ressources serverless (recommandé) ou un groupe de ressources exclusif pour la planification. Si vous devez utiliser une image dans le développement de données, vous devez utiliser un groupe de ressources serverless.
Pour gérer les métadonnées d'un cluster DataLake ou personnalisé dans DataWorks, vous devez configurer EMR-HOOK sur le cluster. Sans EMR-HOOK, DataWorks ne peut pas afficher les métadonnées en temps réel, générer des journaux d'audit, afficher la lignée des données ni effectuer des tâches de gouvernance liées à EMR. Pour savoir comment configurer EMR-HOOK, consultez la rubrique Configurer EMR-HOOK pour Hive.
Pour les tâches soumises à l'aide de spark-submit, nous recommandons d'utiliser
cluster modepour le paramètre deploy-mode au lieu declient mode.Les nœuds EMR Shell s'exécutent sur les groupes de ressources de planification DataWorks, et non sur les clusters EMR. Vous pouvez utiliser certaines commandes de composants EMR, mais vous ne pouvez pas lire directement les informations de ressources depuis EMR. Pour référencer une ressource, vous devez d'abord la télécharger dans DataWorks. Pour plus d'informations, consultez la rubrique Télécharger des ressources EMR.
Les nœuds EMR Shell ne prennent pas en charge l'exécution de fichiers Python. Utilisez plutôt un nœud Shell.
Étape 1 : Créer un nœud EMR Shell
-
Connectez-vous à la console DataWorks. Dans la région cible, cliquez sur dans le volet de navigation de gauche. Sélectionnez un espace de travail dans la liste déroulante et cliquez sur Go to Data Development.
-
Créez un nœud EMR Shell.
-
Cliquez avec le bouton droit de la souris sur le flux de travail cible et choisissez .
RemarqueVous pouvez également pointer la souris sur Create et choisir .
-
Dans la boîte de dialogue Create Node, saisissez un Name et sélectionnez une Engine Instance, un Node Type et un Path. Cliquez sur OK pour accéder à l'éditeur de nœuds EMR Shell.
RemarqueLe nom du nœud peut contenir des lettres majuscules, des lettres minuscules, des caractères chinois, des chiffres, des traits de soulignement (_) et des points (.).
-
Étape 2 : Développer une tâche EMR Shell
Sur la page de l'éditeur de nœuds EMR Shell, double-cliquez sur le nœud que vous avez créé et choisissez l'une des options suivantes en fonction de votre scénario :
(Recommandé) Téléchargez des ressources depuis votre ordinateur local vers DataStudio, puis référencez-les dans votre code. Pour plus d'informations, consultez la rubrique Option 1 : Télécharger une ressource, puis référencer la ressource JAR EMR.
Référencez des ressources OSS à l'aide de la fonctionnalité OSS REF. Pour plus d'informations, consultez la rubrique Option 2 : Référencer directement une ressource OSS.
Option 1 : Télécharger et référencer des ressources JAR EMR
Téléchargez une ressource depuis votre ordinateur local vers DataStudio et référencez-la. Si vous utilisez un cluster DataLake, suivez ces étapes pour référencer une ressource JAR EMR. Si un nœud EMR Shell dépend d'une ressource volumineuse qui ne peut pas être téléchargée sur la page DataWorks, stockez la ressource dans HDFS et référencez-la dans votre code.
-
Créez une ressource JAR EMR.
Pour plus d'informations, consultez la rubrique Créer et utiliser des ressources EMR. Dans cet exemple, le package JAR généré dans Prepare initial data and a JAR package est stocké dans le répertoire emr/jars. La première fois que vous utilisez cette fonctionnalité, vous devez cliquer sur Authorize, puis sur Click Upload pour télécharger la ressource JAR.
-
Référencez la ressource JAR EMR.
Ouvrez le nœud EMR Shell créé et accédez à l'éditeur de code.
Sous le nœud EMR > > > Resources, recherchez le Insert Resource Path cible (par exemple,
onaliyun_mr_wordcount-1.0-SNAPSHOT.jar), puis cliquez avec le bouton droit de la souris pour sélectionner Insert Resource Path.-
Le référencement de la ressource ajoute une instruction au format
##@resource_reference{""}dans l'éditeur de code du nœud EMR Shell, indiquant que la ressource est référencée. Exécutez ensuite les commandes suivantes. Le package de ressources, le nom du bucket et le chemin d'accès dans les commandes suivantes sont donnés à titre d'exemple. Remplacez-les par vos informations réelles.##@resource_reference{"onaliyun_mr_wordcount-1.0-SNAPSHOT.jar"} onaliyun_mr_wordcount-1.0-SNAPSHOT.jar cn.apache.hadoop.onaliyun.examples.EmrWordCount oss://onaliyun-bucket-2/emr/datas/wordcount02/inputs oss://onaliyun-bucket-2/emr/datas/wordcount02/outputsRemarqueVous ne pouvez pas ajouter de commentaires au code d'un nœud EMR Shell.
Option 2 : Référencer des ressources OSS
Configurer les paramètres de planification
Définissez des variables dans votre code en utilisant le format ${variable_name}. Attribuez des valeurs à ces variables dans la section Scheduling > Scheduling Parameter du volet de droite afin de transmettre des paramètres dynamiques lors de l'exécution. Pour plus d'informations, consultez la rubrique Formats pris en charge pour les paramètres de planification. Le code suivant fournit un exemple :
DD=`date`;
echo "hello world, $DD"
## You can use this with scheduling parameters.
echo ${var};
Si vous utilisez un cluster DataLake, les outils de ligne de commande suivants sont également pris en charge.
Commandes Shell : commandes Shell dans les répertoires
/usr/binet/bin, telles que ls et echo.Composants Yarn : hadoop, hdfs et yarn.
Composant Spark : spark-submit.
Composants Sqoop : sqoop-export, sqoop-import et sqoop-import-all-tables.
Pour utiliser les composants Sqoop avec ApsaraDB RDS, vous devez ajouter l'adresse IP du groupe de ressources à la liste d'autorisation d'ApsaraDB RDS.
Exécuter une tâche EMR Shell
-
Dans la barre d'outils, cliquez sur l'icône
. Dans la boîte de dialogue Parameter, sélectionnez le groupe de ressources de planification créé et cliquez sur Running.RemarquePour accéder aux ressources de calcul via Internet ou un VPC, vous devez utiliser un groupe de ressources de planification qui a réussi le test de connectivité pour la ressource de calcul. Pour plus d'informations, consultez la rubrique Solutions de connectivité réseau.
Si vous devez modifier le groupe de ressources pour les exécutions de tâches ultérieures, vous pouvez cliquer sur l'icône Run with Parameters
et sélectionner un autre groupe de ressources de planification.
Cliquez sur l'icône
pour enregistrer le script Shell.-
(Facultatif) Effectuez des tests de fumée.
Si vous souhaitez effectuer des tests de fumée dans l'environnement de développement, vous pouvez les exécuter avant ou après avoir soumis le nœud. Pour plus d'informations, consultez la rubrique Effectuer des tests de fumée.
Étape 3 : Configurer les propriétés de planification
Si vous souhaitez que le système exécute périodiquement une tâche sur le nœud, vous pouvez cliquer sur Properties dans le volet de navigation de droite de l'onglet de configuration du nœud afin de configurer les propriétés de planification des tâches selon vos besoins métier. Pour plus d'informations, consultez la rubrique Présentation.
Vous devez configurer les propriétés Rerun attribute et Parent Nodes pour le nœud avant de pouvoir le soumettre.
-
Si vous devez personnaliser l'environnement des composants, vous pouvez créer une image personnalisée basée sur l'image officielle
dataworks_emr_base_task_podet l'utiliser dans DataStudio.Par exemple, vous pouvez remplacer des packages JAR Spark ou inclure des
libraries,filesouJAR packagesspécifiques lors de la création d'une image personnalisée.
Étape 4 : Déployer la tâche
Une fois qu'une tâche sur un nœud est configurée, vous devez la valider et la déployer. Après la validation et le déploiement de la tâche, le système l'exécute régulièrement en fonction des configurations de planification.
Cliquez sur l'icône
dans la barre d'outils supérieure pour enregistrer la tâche.-
Cliquez sur l'icône
dans la barre d'outils supérieure pour valider la tâche.Dans la boîte de dialogue Submit, configurez le paramètre Change description. Ensuite, décidez si vous souhaitez examiner le code de la tâche après sa validation, en fonction de vos besoins métier.
RemarqueVous devez configurer les paramètres Rerun et Parent Nodes dans l'onglet Properties avant de valider la tâche.
Vous pouvez utiliser la fonctionnalité de révision de code pour garantir la qualité du code des tâches et éviter les erreurs d'exécution causées par un code de tâche invalide. Si vous activez la fonctionnalité de révision de code, le code de tâche validé ne peut être déployé qu'après avoir passé la révision de code. Pour plus d'informations, consultez la rubrique Révision de code.
Si vous utilisez un espace de travail en mode standard, vous devez déployer la tâche dans l'environnement de production après l'avoir validée. Pour déployer une tâche sur un nœud, cliquez sur Deploy dans le coin supérieur droit de l'onglet de configuration du nœud. Pour plus d'informations, consultez la rubrique Déployer un nœud.
Opérations supplémentaires
Après la validation et le déploiement de la tâche, celle-ci est exécutée périodiquement en fonction des configurations de planification. Vous pouvez cliquer sur Operation Center dans le coin supérieur droit de l'onglet de configuration du nœud correspondant pour accéder à Operation Center et afficher l'état de planification de la tâche. Pour plus d'informations, consultez la rubrique Gérer les tâches planifiées.
Rubriques connexes
Pour savoir comment utiliser les commandes Python 2 ou Python 3 pour exécuter un script Python dans un nœud EMR Shell, consultez la rubrique Exécuter un script Python dans un nœud de type Shell.
Pour savoir comment utiliser l'outil OSSUtils dans un nœud EMR Shell, consultez la rubrique Utiliser ossutil pour accéder à OSS dans un nœud de type Shell.