Les nœuds Shell EMR dans DataWorks exécutent des scripts Shell personnalisés pour des opérations avancées, telles que le traitement des données, l'appel de composants Hadoop et la gestion des fichiers.
Prérequis
-
Avant de développer le nœud, si vous avez besoin d'un environnement de composants personnalisé, créez une image personnalisée basée sur l'image officielle
dataworks_emr_base_task_pod, puis utilisez-la dans Data Studio. Pour plus d'informations, consultez les rubriques Créer une image personnalisée et Utiliser des images dans le développement de données.Par exemple, lors de la création d'une image personnalisée, vous pouvez remplacer les packages JAR Spark ou ajouter des dépendances vers des
libraries, desfilesou desJAR packagesspécifiques. Créez un cluster Alibaba Cloud EMR et enregistrez-le dans DataWorks. Pour plus d'informations, consultez la rubrique New Data Studio : Attacher une ressource de calcul EMR.
-
(Facultatif, pour les utilisateurs RAM) L'utilisateur Resource Access Management (RAM) chargé du développement des tâches doit être ajouté à l'espace de travail et se voir attribuer le rôle Development ou Workspace Administrator (ce rôle inclut des autorisations étendues et doit être accordé avec prudence). Pour plus d'informations, consultez la rubrique Ajouter des membres à l'espace de travail.
Si vous utilisez un compte root, ignorez cette étape.
Limites
Les nœuds EMR Shell s'exécutent uniquement sur un groupe de ressources serverless (recommandé) ou sur un groupe de ressources exclusif pour la planification. L'utilisation d'une image personnalisée pour le développement de données nécessite un groupe de ressources serverless.
-
Pour gérer les métadonnées d'un cluster DataLake ou d'un cluster personnalisé dans DataWorks, configurez d'abord EMR-HOOK sur le cluster. Pour plus d'informations, consultez la rubrique Configurer EMR-HOOK pour Hive.
RemarqueSi EMR-HOOK n'est pas configuré sur le cluster, vous ne pourrez 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 dans DataWorks.
Pour les tâches soumises avec
spark-submit, définissez le paramètredeploy-modesurcluster. Le modeclientn'est pas recommandé.Les nœuds EMR Shell s'exécutent sur les groupes de ressources de planification de DataWorks, et non sur les clusters EMR. Vous pouvez utiliser certaines commandes de composants EMR, mais vous ne pouvez pas lire directement l'état des ressources depuis le cluster EMR. Par conséquent, téléchargez d'abord toutes les ressources requises dans DataWorks. Pour plus d'informations, consultez la rubrique Gestion des ressources.
Les nœuds EMR Shell ne prennent pas en charge l'exécution de fichiers Python. Utilisez un nœud Shell pour les exécuter.
Procédure
-
Dans l'éditeur de nœuds EMR Shell, effectuez les opérations suivantes.
Développer le code Shell
Choisissez une option en fonction de vos besoins :
Option 1 : Télécharger et référencer un JAR EMR
Téléchargez les ressources depuis votre machine locale vers Data Studio et référencez-les. Pour un cluster DataLake, suivez ces étapes pour référencer une ressource JAR EMR. Si une ressource est trop volumineuse pour être téléchargée via l'interface utilisateur de DataWorks, stockez-la dans HDFS et référencez-la dans votre code.
-
Créez une ressource JAR EMR.
Pour plus d'informations, consultez la rubrique Gestion des ressources. Stockez le package JAR généré dans Préparer les données initiales et un package JAR dans le répertoire de ressources JAR
emr/jars. Cliquez sur Click Upload.Sélectionnez un Storage Path, une Data Sources et un Resource Group.
Cliquez sur Save.
Pour Storage Path, sélectionnez HDFS.
-
Référencez la ressource JAR EMR.
Ouvrez le nœud EMR Shell créé et accédez à la page de l'éditeur de code.
Dans le volet de navigation de gauche, repérez la ressource que vous souhaitez référencer sous Gestion des ressources (par exemple,
onaliyun_mr_wordcount-1.0-SNAPSHOT.jar). Cliquez avec le bouton droit sur la ressource et sélectionnez Insert Resource Path.Une fois la référence sélectionnée, un message de succès s'affiche sur la page d'édition du code du nœud EMR Shell, indiquant que la ressource a été correctement référencée. Exécutez la commande suivante, en remplaçant le package de ressources, le nom du bucket et le chemin par vos valeurs 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/outputsRemarqueLes commentaires ne sont pas pris en charge lors de l'édition du code dans un nœud EMR Shell.
Option 2 : Référencer directement une ressource OSS
Référencez directement les ressources OSS en utilisant OSS REF. Lorsque le nœud EMR s'exécute, DataWorks charge automatiquement les ressources OSS sur la machine locale.
ossref://{endpoint}/{bucket}/{object}Endpoint : Le point d'accès public pour OSS. Si vous laissez ce paramètre vide, le bucket OSS doit se trouver dans la même région que le cluster EMR.
bucket : Le nom du bucket, qui est un conteneur stockant des objets dans OSS. Chaque bucket possède un nom unique. Vous pouvez vous connecter à la console OSS pour afficher tous les buckets associés au compte actuel.
object : L'objet spécifique, tel qu'un nom de fichier ou un chemin, stocké dans le bucket.
Exemple
Configurer les paramètres de planification du Shell EMR
Définissez des variables dans l'éditeur Shell en utilisant le format ${variable_name}, puis assignez des valeurs dans la section Scheduling Parameters située sous Scheduling Settings sur le côté droit de l'éditeur de nœud. Cela permet de transmettre des paramètres dynamiquement lors des exécutions planifiées. Pour plus d'informations, consultez la rubrique Sources et expressions des paramètres de planification. Exemple :
DD=`date`; echo "hello world, $DD" ## Can be used with scheduling parameters echo ${var};RemarqueSi vous utilisez un cluster DataLake, les outils en ligne de commande suivants sont également pris en charge.
Commandes Shell : Commandes Shell situées dans
/usr/binet/bin, telles que ls et echo.Composants YARN :
hadoop,hdfsetyarn.Composants Spark :
spark-submit.Composants Sqoop :
sqoop-export,sqoop-import,sqoop-import-all-tableset autres.
Si vous utilisez ces composants pour accéder à une instance RDS, ajoutez l'adresse IP du groupe de ressources à la liste d'autorisation de l'instance RDS.
Exécuter la tâche Shell
-
Dans la section Run Configuration, configurez la Compute Resource et le Resource Group.
RemarqueVous pouvez également ajuster les CUs for Scheduling en fonction des ressources requises pour l'exécution de la tâche. La valeur CU par défaut est
0.25.Vous pouvez sélectionner une Image en fonction des exigences de votre tâche.
Pour accéder à une source de données sur un réseau public ou dans un environnement VPC, utilisez un groupe de ressources de planification capable de se connecter à la source de données. Pour plus d'informations, consultez la rubrique Solutions de connectivité réseau.
Dans la barre d'outils, cliquez sur Run pour exécuter la tâche Shell.
-
-
Pour exécuter le nœud périodiquement, configurez ses propriétés de planification. Pour plus d'informations, consultez la rubrique Configurer les propriétés de planification d'un nœud.
RemarqueSi vous devez personnaliser l'environnement des composants, créez une image personnalisée basée sur l'image officielle
dataworks_emr_base_task_podet utilisez l'image dans le développement de données.Par exemple, lors de la création d'une image personnalisée, vous pouvez remplacer les packages JAR Spark ou ajouter des dépendances vers des
libraries, desfilesou desJAR packagesspécifiques. Déployez le nœud. Pour plus d'informations, consultez la rubrique Déployer des nœuds et des workflows.
Consultez l'état d'exécution dans Operation Center. Pour plus d'informations, consultez la rubrique Prise en main d'Operation Center.
FAQ
Q : Un mappage hosts a été configuré sur l'ancien groupe de ressources de planification, mais le nœud EMR Shell signale toujours une erreur de résolution. Comment résoudre ce problème ?
R : Réinitialisez le cluster EMR en utilisant le groupe de ressources configuré afin que le script Shell EMR reconnaisse le nouveau mappage hosts. Accédez à la page de liste des ressources de calcul, cliquez sur Initialize Resources, puis cliquez sur Re-initialize dans la boîte de dialogue.
Documentation connexe
Pour exécuter des scripts Python dans un nœud EMR Shell en utilisant Python 2 ou Python 3, consultez la rubrique Exécuter des scripts Python sur des nœuds de type Shell.
Pour utiliser ossutil dans un nœud EMR Shell, consultez la rubrique Utiliser ossutil sur des nœuds de type Shell.