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 pour Apache Airflow et peut être combiné avec d'autres plugins et binaires personnalisés.

Version

  • L'exemple de code de cette page peut être utilisé avec Apache Airflow v1 en Python 3.7.

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

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, consultez Installation des dépendances Python.

Apache Airflow v2
-c https://raw.githubusercontent.com/apache/airflow/constraints-2.0.2/constraints-3.7.txt apache-airflow-providers-amazon[apache.hive]
Apache Airflow v1
apache-airflow[hive]==1.10.12

Dépendances de téléchargement

Amazon MWAA extraira le contenu du fichier plugins.zip dans /usr/local/airflow/plugins chaque MWAA planificateur et conteneur de travail Amazon. 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. Par exemple :

    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. Par exemple :

    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

Plugin 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. Par exemple :

    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 indiquent 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. Par exemple :

    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 DAG code qui testera le plugin personnalisé.

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

    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 du flux d'air

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, consultez la section Utilisation des options de configuration pour charger des plugins en 2.

Quelle est la prochaine étape ?