{"id":30,"date":"2024-10-20T05:42:46","date_gmt":"2024-10-20T05:42:46","guid":{"rendered":"https:\/\/solucionesimples.com\/blog\/?p=30"},"modified":"2024-10-20T05:55:32","modified_gmt":"2024-10-20T05:55:32","slug":"uso-y-despliegue-de-airflow","status":"publish","type":"post","link":"https:\/\/solucionesimples.com\/blog\/uso-y-despliegue-de-airflow\/","title":{"rendered":"Uso y despliegue de Airflow"},"content":{"rendered":"\n<p>Apache Airflow es una plataforma de orquestaci\u00f3n de flujos de trabajo (workflows) que permite crear, programar y monitorear flujos de trabajo complejos, usualmente en el contexto de <strong>ETL (Extract, Transform, Load)<\/strong>, procesamiento de datos, pipelines de machine learning y tareas de automatizaci\u00f3n en general. Airflow maneja la ejecuci\u00f3n de tareas de forma secuencial o paralela a trav\u00e9s de <strong>DAGs (Directed Acyclic Graphs)<\/strong>, que definen c\u00f3mo se conectan y dependen las tareas entre s\u00ed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Funciones principales de Airflow:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Planificaci\u00f3n y ejecuci\u00f3n de tareas<\/strong>: Programas cu\u00e1ndo y c\u00f3mo deben ejecutarse las tareas.<\/li>\n\n\n\n<li><strong>Monitorizaci\u00f3n<\/strong>: Ofrece una interfaz web para visualizar el estado de las ejecuciones y logs.<\/li>\n\n\n\n<li><strong>Escalabilidad<\/strong>: Airflow es capaz de manejar flujos de trabajo en entornos distribuidos.<\/li>\n\n\n\n<li><strong>Gesti\u00f3n de dependencias<\/strong>: Controla c\u00f3mo se relacionan y dependen las tareas entre ellas.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Componentes clave de Airflow:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>DAGs (Directed Acyclic Graphs)<\/strong>: Representan los flujos de trabajo.<\/li>\n\n\n\n<li><strong>Tareas (Tasks)<\/strong>: Unidades individuales de trabajo dentro de un DAG.<\/li>\n\n\n\n<li><strong>Scheduler<\/strong>: Programa las tareas para que se ejecuten en el momento adecuado.<\/li>\n\n\n\n<li><strong>Workers<\/strong>: Ejecutan las tareas (puede ser local o distribuido).<\/li>\n\n\n\n<li><strong>Executor<\/strong>: Define c\u00f3mo se ejecutan las tareas (e.g., <code>CeleryExecutor<\/code>, <code>LocalExecutor<\/code>).<\/li>\n<\/ul>\n\n\n\n<p><strong>Ejemplo b\u00e1sico de un DAG:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code has-cyan-bluish-gray-color has-black-background-color has-text-color has-background has-link-color wp-elements-2b0be063480ed712494e0cdfeaa5a44b\"><code>from airflow import DAG\nfrom airflow.operators.bash import BashOperator\nfrom datetime import datetime\n\ndefault_args = {\n    'owner': 'guty',\n    'start_date': datetime(2023, 1, 1),\n    'retries': 1\n}\n\ndag = DAG(\n    'ejemplo_dag',\n    default_args=default_args,\n    description='Un simple DAG de ejemplo',\n    schedule_interval='@daily',\n)\n\ntarea1 = BashOperator(\n    task_id='tarea_1',\n    bash_command='echo \"Hola Mundo\"',\n    dag=dag,\n)\n\ntarea2 = BashOperator(\n    task_id='tarea_2',\n    bash_command='echo \"Otra tarea\"',\n    dag=dag,\n)\n\ntarea1 >> tarea2  # Definir dependencias\n<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apache Airflow es una plataforma de orquestaci\u00f3n de flujos de trabajo (workflows) que permite crear, programar y monitorear flujos de trabajo complejos, usualmente en el contexto de ETL (Extract, Transform, Load), procesamiento de datos, pipelines&hellip;<\/p>\n","protected":false},"author":1,"featured_media":32,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-30","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tecnologia"],"_links":{"self":[{"href":"https:\/\/solucionesimples.com\/blog\/wp-json\/wp\/v2\/posts\/30","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solucionesimples.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solucionesimples.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solucionesimples.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solucionesimples.com\/blog\/wp-json\/wp\/v2\/comments?post=30"}],"version-history":[{"count":1,"href":"https:\/\/solucionesimples.com\/blog\/wp-json\/wp\/v2\/posts\/30\/revisions"}],"predecessor-version":[{"id":33,"href":"https:\/\/solucionesimples.com\/blog\/wp-json\/wp\/v2\/posts\/30\/revisions\/33"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/solucionesimples.com\/blog\/wp-json\/wp\/v2\/media\/32"}],"wp:attachment":[{"href":"https:\/\/solucionesimples.com\/blog\/wp-json\/wp\/v2\/media?parent=30"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solucionesimples.com\/blog\/wp-json\/wp\/v2\/categories?post=30"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solucionesimples.com\/blog\/wp-json\/wp\/v2\/tags?post=30"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}