Création d'un plugin personnalisé avec Apache Hive et Hadoop - Amazon Managed Workflows for Apache Airflow

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.

Création d'un plugin personnalisé avec Apache Hive et Hadoop

Amazon MWAA extrait le contenu d'un plugins.zip à/usr/local/airflow/plugins. Cela peut être utilisé pour ajouter des fichiers binaires à vos conteneurs. En outre, Apache Airflow exécute le contenu des fichiers Python contenus dans le plugins dossier au démarrage, ce qui vous permet de définir et de modifier des variables d'environnement. L'exemple suivant explique les étapes de création d'un plugin personnalisé à l'aide d'Apache Hive et Hadoop dans un environnement Amazon Managed Workflows for Apache Airflow et peut être combiné avec d'autres plugins et binaires personnalisés.

Version

Vous pouvez utiliser l'exemple de code présenté sur cette page avec Apache Airflow v2 en Python 3.10 et Apache Airflow v3 en Python 3.11.

Prérequis

Pour utiliser l'exemple de code présenté sur cette page, vous aurez besoin des éléments suivants :

Autorisations

Aucune autorisation supplémentaire n'est requise pour utiliser l'exemple de code présenté sur cette page.

Prérequis

Pour utiliser l'exemple de code de cette page, ajoutez les dépendances suivantes à votrerequirements.txt. Pour en savoir plus, reportez-vous àInstallation des dépendances Python.

-c https://raw.githubusercontent.com/apache/airflow/constraints-2.0.2/constraints-3.7.txt apache-airflow-providers-amazon[apache.hive]

Dépendances de téléchargement

Amazon MWAA extraira le contenu du fichier plugins.zip dans /usr/local/airflow/plugins chaque planificateur et conteneur de travail Amazon MWAA. Ceci est utilisé pour ajouter des fichiers binaires à votre environnement. Les étapes suivantes décrivent comment assembler les fichiers nécessaires au plugin personnalisé.

  1. Dans votre invite de commande, accédez au répertoire dans lequel vous souhaitez créer votre plugin. Exemples :

    cd plugins
  2. Téléchargez Hadoop depuis un miroir, par exemple :

    wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
  3. Téléchargez Hive depuis un miroir, par exemple :

    wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
  4. Créez un répertoire. Exemples :

    mkdir hive_plugin
  5. Extrayez Hadoop.

    tar -xvzf hadoop-3.3.0.tar.gz -C hive_plugin
  6. Extrayez Hive.

    tar -xvzf apache-hive-3.1.2-bin.tar.gz -C hive_plugin

Plug-in personnalisé

Apache Airflow exécutera le contenu des fichiers Python dans le dossier des plugins au démarrage. Ceci est utilisé pour définir et modifier les variables d'environnement. Les étapes suivantes décrivent l'exemple de code du plugin personnalisé.

  1. Dans votre invite de commande, accédez au hive_plugin répertoire. Exemples :

    cd hive_plugin
  2. Copiez le contenu de l'exemple de code suivant et enregistrez-le localement hive_plugin.py dans le hive_plugin répertoire.

    from airflow.plugins_manager import AirflowPlugin import os os.environ["JAVA_HOME"]="/usr/lib/jvm/jre" os.environ["HADOOP_HOME"]='/usr/local/airflow/plugins/hadoop-3.3.0' os.environ["HADOOP_CONF_DIR"]='/usr/local/airflow/plugins/hadoop-3.3.0/etc/hadoop' os.environ["HIVE_HOME"]='/usr/local/airflow/plugins/apache-hive-3.1.2-bin' os.environ["PATH"] = os.getenv("PATH") + ":/usr/local/airflow/plugins/hadoop-3.3.0:/usr/local/airflow/plugins/apache-hive-3.1.2-bin/bin:/usr/local/airflow/plugins/apache-hive-3.1.2-bin/lib" os.environ["CLASSPATH"] = os.getenv("CLASSPATH") + ":/usr/local/airflow/plugins/apache-hive-3.1.2-bin/lib" class EnvVarPlugin(AirflowPlugin): name = 'hive_plugin'
  3. Copiez le contenu du texte suivant et enregistrez-le localement .airflowignore dans le hive_plugin répertoire.

    hadoop-3.3.0 apache-hive-3.1.2-bin

Plugins.zip

Les étapes suivantes expliquent comment créerplugins.zip. Le contenu de cet exemple peut être combiné avec d'autres plugins et binaires dans un seul plugins.zip fichier.

  1. Dans votre invite de commande, accédez au hive_plugin répertoire de l'étape précédente. Exemples :

    cd hive_plugin
  2. Compressez le contenu de votre plugins dossier.

    zip -r ../hive_plugin.zip ./

Exemple de code

Les étapes suivantes décrivent comment créer le code DAG qui testera le plugin personnalisé.

  1. Dans votre invite de commande, accédez au répertoire dans lequel votre code DAG est stocké. Exemples :

    cd dags
  2. Copiez le contenu de l'exemple de code suivant et enregistrez-le localement soushive.py.

    from airflow import DAG from airflow.operators.bash_operator import BashOperator from airflow.utils.dates import days_ago with DAG(dag_id="hive_test_dag", schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag: hive_test = BashOperator( task_id="hive_test", bash_command='hive --help' )

Options de configuration d'Airflow

Si vous utilisez Apache Airflow v2, ajoutez-le en core.lazy_load_plugins : False tant qu'option de configuration d'Apache Airflow. Pour en savoir plus, reportez-vous à la section Utilisation des options de configuration pour charger des plug-ins en 2.

Quelle est la prochaine étape ?