精华内容
下载资源
问答
  • Airflow2.0.0 + Celery 集群搭建

    千次阅读 2021-01-10 03:39:51
    依赖python环境、基于pip安装apache-airflow 安装过程可能会缺少系统依赖报错如gcc、mysql-devel 之类, 缺什么就 yum install 什么即可 2、airflow + celery架构 3、集群规划 服务器hadoop100 服务器hadoop...

    1、说明

    • 依赖python环境、基于pip安装apache-airflow
    • 安装过程可能会缺少系统依赖报错如gcc、mysql-devel 之类, 缺什么就 yum install 什么即可

    2、airflow + celery架构

    在这里插入图片描述

    3、集群规划

    服务器hadoop100服务器hadoop101服务器hadoop102
    web serverV
    schedulerV
    workerVVV

    注意

    • 编写DAG文件需要保证在集群每个节点都要同步,因为每个worker都是从本地进行读取执行的, 不像oozie那样上传到HDFS. scheduler仅仅是发送一条要执行哪个DAG下的哪个Task的命令到Queue Broker下, 然后worker再根据命令去指定指定的那个Task.
    • 集群里面的airflow.cfg配置文件也需要保持同步

    4、安装

    4.1、下载apache-airflow、celery、mysql、redis包

    1、在3台机器上都要下载一次

    以下是在hadoop101上执行, 在hadoop100,hadoop102一样的下载

    [hadoop@hadoop101 ~]$ pip3 install apache-airflow==2.0.0 
    [hadoop@hadoop101 ~]$ pip3 install apache-airflow[celery]
    [hadoop@hadoop101 ~]$ pip3 install apache-airflow[mysql]
    [hadoop@hadoop101 ~]$ pip3 install apache-airflow[reids] -i 
    http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
    

    2、配置Airflow工作目录的环境变量

    • 在3台机器上都要配置一次、最好使用xsync脚本同步
    [hadoop@hadoop101 ~]$ vim /etc/profile
    添加如下
    export AIRFLOW_HOME=~/app/airflow
    

    3 配置airflow命令

    • 下载apache-airflow包后,在python环境的bin目录下会生成airflow命令, 需要自己配置到全局调用, 我是用软连接挂在到/usr/local/bin

    [hadoop@hadoop101 bin]$ pwd
    /usr/local/python3/bin
    [hadoop@hadoop101 bin]$ ll | grep airflow
    -rwxr-xr-x. 1 hadoop hadoop      231 1月   6 19:58 airflow
    
    # 创建软连接
    [hadoop@hadoop101 bin]$ ln -s /usr/local/python3/bin/airflow /usr/local/bin/airflow
    [hadoop@hadoop101 bin]$ cd /usr/local/bin/
    [hadoop@hadoop101 bin]$ ll
    lrwxrwxrwx. 1 root   root    30 1月   7 10:26 airflow -> /usr/local/python3/bin/airflow
    
    

    使用命令airflow --help看是否执行成功, 执行airflow的任何命令都会初始化airflow的工作目录的生成(在${AIRFLOW_HOME}目录下)

    [hadoop@hadoop101 airflow]$ pwd
    /home/hadoop/app/airflow
    [hadoop@hadoop101 airflow]$ ll
    总用量 24488
    -rw-rw-r--. 1 hadoop hadoop    38857 1月   7 20:09 airflow.cfg
    drwxrwxr-x. 9 hadoop hadoop      179 1月   7 20:05 logs
    -rw-rw-r--. 1 hadoop hadoop     2619 1月   7 10:26 unittests.cfg
    -rw-rw-r--. 1 hadoop hadoop     4279 1月   7 10:26 webserver_config.py
    
    

    4.2、配置元数据库

    • 修改 ${AIRFLOW_HOME}/airflow.cfg配置文件, 配置远程连接数据库的地址, 需要先创建一个叫airflow的数据库. 因为默认使用的是sqlite作为元数据库不支持DAG任务的并发执行、绝不能用于生产环境
    • 需要设置mysql的my.cnf 文件下的 `[mysqld] 的 explicit_defaults_for_timestamp=1 才能正常连接成功
    [core]
    # 时区设置
    default_timezone = Asia/Shanghai
    # 数据库连接设置
    sql_alchemy_conn = mysql+mysqldb://airflow:123456@www.burukeyou.com:3306/airflow?charset=utf8
    # 数据库编码
    sql_engine_encoding = utf-8
    

    4.3、配置celery

    • 修改 ${AIRFLOW_HOME}/airflow.cfg配置文件, 配置celery和executor相关配置
    # 设置执行策略、可选SequentialEXecutor(默认)、LocalExecutor(适合单机)、Celery Executor
    executor = CeleryExecutor
    # 配置celery的broker_url			(存储要执行的命令然后celery的worker去消费)
    broker_url = redis://127.0.0.1:6379/0
    # 配置celery的result_backend  (存储任务执行状态)、 也可以用redis存储
    result_backend = db+mysql://airflow:123456@www.burukeyou.com:3306/airflow?charset=utf8
    #result_backend = redis://127.0.0.1:6379/1
    

    4、其他airflow.cfg 配置(可选)

    # web ui 界面使用的时区
    default_ui_timezone=Asia/Shanghai
    # 是否加载案例demo
    load_examples = False
    # 是否使用catchup功能
    # catchup叫追赶, 即是否执行自上次execute_date以来所有未执行的DAG Run, 另外定义每个DAG对象可传递catchup参数进行覆盖
    catchup_by_default = False
    

    5、启动

    5.1 初始化元数据库表生成

    • 执行如下命令成功后, 查看数据库airflow下是否生成各个表
    [hadoop@hadoop101 ~]$ airflow db init
    

    在这里插入图片描述

    5.2 启动web server、scheduler、worker

    • 在hadoop101上启动web server、scheduler、worker
    • 在hadoop100和102上启动worker
    [hadoop@hadoop101 ~]$  airflow webserver --port 9988  # -D 参数以守护进程启动(以下均适用)
    [hadoop@hadoop101 ~]$  airflow scheduler -D
    [hadoop@hadoop101 ~]$  airflow celery worker -D # -q 可指定worker监听消费的队列,默认是default队列
    [hadoop@hadoop100 ~]$  airflow celery worker -D 
    [hadoop@hadoop102 ~]$  airflow celery worker -D
    

    访问 hadoop101:9988的web server 的UI界面

    在这里插入图片描述

    发现需要账号密码、创建一个即可.

    [hadoop@hadoop101 ~]$airflow users create \
        --username hadoop \
        --firstname hadoop \
        --lastname hadoop \
        --role Admin \
        --email xx@xx.com
    

    在这里插入图片描述
    之后在${AIRFLOW_HOME}/dags 编写自己的DAG任务即可, DAG文件名以包含dag或者airflow就会被scheduler去调度执行. 会根据 DAG对象的start_dateschedule_interval两个参数去生成每个DAG RUN的时间点, 时间到了就会触发执行.

    tip:

    打赏

    如果觉得文章有用,你可鼓励下作者(支付宝)

    在这里插入图片描述

    展开全文
  • Airflow 集群安装

    2020-01-14 18:11:52
    2.master1 修改airflow配置 并完成相应的airflow初始化 参考 Airflow 调度框架 安装经验分享 单节点 >> 注意这里的mysql和redis链接地址需要改为相应服务器ip的地址 # 执行步骤1-8, # 9,10先不要执行 3....

    1.主机规划

    内网ip & 主机名 &角色软件 & 运行进程
    192.168.18.124 (master1)webserver, scheduler
    192.168.18.125 (master2)webserver
    192.168.18.126worker
    192.168.18.127worker
    192.168.18.128worker

    2.master1 修改airflow配置 并完成相应的airflow初始化

    参考<<Airflow 调度框架 安装经验分享 单节点>>

    注意这里的mysql和redis链接地址需要改为相应服务器ip的地址
    # 执行步骤1-8, 
    # 9,10先不要执行
    

    3.在master1 安装master的高可用组件

    pip3 install git+git://github.com/teamclairvoyant/airflow-scheduler-failover-controller.git@v1.0.5
    # 初始化
    scheduler_failover_controller init
    
    # 修改配置文件 airflow.cfg
    # 需要修改
    # scheduler_nodes_in_cluster = localhost
    scheduler_nodes_in_cluster = 192.168.18.124,192.168.18.125
    
    

    4.验证

    scheduler_failover_controller test_connection
    

    5.将配置ariflow文件发送到相应服务器并启动各组件

    cd /usr/local
    scp -r airflow 192.168.18.125:`pwd`
    scp -r airflow 192.168.18.126:`pwd`
    scp -r airflow 192.168.18.127:`pwd`
    scp -r airflow 192.168.18.128:`pwd`
    
    # master1
    airflow webserver -D
    airflow scheduler -D
    # master2
    airflow webserver -D
    
    # worker1
    airflow worker -D
    # worker2
    airflow worker -D
    # worker3
    airflow worker -D
    

    6.启动高可用组件

    nohup scheduler_failover_controller start > /dev/null &
    

    参考 https://www.lmlphp.com/user/7265/article/item/354892/

    展开全文
  • 大数据集群搭建:安装部署mysql、sqlserver、Zookeeper、Hadoop、Spark、Flink、Kafka、kettle、airflow集群 文章分类 链接 大数据集群环境搭建 大数据集群环境搭建:Hadoop、Spark、Flink分布式集群环境 ...

    大数据集群搭建:安装部署MySQL、SQL Server、Zookeeper、Hadoop、Spark、Flink、Kafka、Kettle、Airflow、Flume集群

    文章分类链接
    大数据集群服务器环境搭建大数据集群环境搭建:Hadoop、Spark、Flink分布式集群环境
    MySQL5.7MySQL 5.7.32 CentOS7离线安装教程
    MySQL8MySQL 8.0.19 CentOS7离线安装教程
    MySQL5.7mysql5.7数据库主从同步、双机热备、读写分离高可用集群的实现
    SQL Server 2019SQL Server 2019 Linux安装教程
    SQL Server 2019SQL Server 2019 Windows安装教程
    ZooKeeperCentOS7服务器安装ZooKeeper3.6.2集群
    Hadoop3Hadoop3高可用(HA)分布式集群搭建
    Hadoop3Hadoop3 重新格式化namenode
    Spark3Spark3 Standalone模式分布式集群搭建
    Spark3Spark3 Standalone模式高可用分布式集群搭建(HA模式)
    Spark3Spark3 on Yarn分布式集群安装部署(YARN模式
    Hadoop3、Spark3Hadoop3和Spark3配置日志聚合,客户端电脑实现YARN页面跳转查看Hadoop和Spark历史任务日志
    Hadoop3、Spark3通过给Hadoop、Spark集群的CentOS 7服务器安装Google浏览器,解决客户端环境YARN页面无法查看Hadoop、Spark日志的问题
    Python3、Scala、Spark、pySparkjupyter notebook集成Python3、Scala、Spark、pySpark内核
    pysparkCentOS7上安装Jupyter notebook使用pyspark连接spark集群
    FlinkFlink local模式、Standalone模式、Standalone 高可用(HA)模式的安装部署
    FlinkFlink on Yarn高可用集群的安装部署
    HiveHive-3.1.2安装部署
    KafkaCentOS7搭建Kafka2.7分布式集群
    kafkakafka-eagle-2.0.3安装部署
    kafkaCentOS7安装kafka-manager
    Airflow基于Python3虚拟环境安装Apache Airflow
    KettleKettle分布式集群安装部署
    FlumeFlume原理和Flume配置文件参数详解
    Flumeansible自动化部署flume集群消费kafka数据到HDFS
    Zeppelin安装zeppelin-0.9.0
    展开全文
  • Airflow详细搭建过程(亲测 + 总结)

    千次阅读 2020-07-11 16:58:23
    Airflow详细搭建过程(亲测+总结) 官网:Apache airflow Airflow是社区创建的一个平台,用于以编程方式编写,安排和监视工作流。 半个月前搭了一次,现在做一个记录,不逼逼,开始搭建了,全程多图: 环境准备 系统:...

    Airflow详细搭建过程(亲测+总结)

    官网:Apache airflow
    Airflow是社区创建的一个平台,用于以编程方式编写,安排和监视工作流。
    半个月前搭了一次,现在做一个记录,不逼逼,开始搭建了,全程多图:

    环境准备

    系统: cent os 7
    conda版本: 4.8.2
    airflow版本 1.10.11

    开始搭建

    我这边会用一个conda创建一个apache airflow的环境:

    conda create -n airflow_env python=3.7
    

    切换到当前的这个环境:

    conda activate airflow_env
    

    搭建airflow

    搭建airflow的话,官网有一套详细的文档Airflow 搭建
    接下来就按照这个方式来

    # airflow needs a home, ~/airflow is the default,
    # but you can lay foundation somewhere else if you prefer
    # (optional)
    export AIRFLOW_HOME=~/airflow
    
    # install from pypi using pip
    pip install apache-airflow
    
    # initialize the database
    airflow initdb
    
    # start the web server, default port is 8080
    # airflow webserver -p 8080    这里做个修改,后面加上-D参数让它后台运行
    airflow webserver -p 8080 -D	
    
    # start the scheduler
    airflow scheduler
    
    # visit localhost:8080 in the browser and enable the example dag in the home page
    

    经过上述的步骤的话,可以在浏览器中打开这个页面:
    在这里插入图片描述
    搭建到这里,可以看到一个基础的样子,但是从目前而言,我能发现的有以下几个问题:

    • airflow的元数据存储信息默认是使用sqlite进行存储。
    • 页面的右上角的时间是比正常的时间晚了8个小时的
    • airflow默认是用单线程调度任务的,如下图(之后就知道了)
      在这里插入图片描述
      现在问题已经暴露了,那么就开始处理吧。

    airflow的元数据存储默认用sqlite,现在切换为mysql

    sqlite不支持多线程,所以我打算切换成mysql,mysql的安装可以参考:Linux centos安装mysql
    airflow中可选很多其它的选项,那么在airflow里面我们可以选择一些所需的组件,例如现在需要利用mysql存储airflow的相关信息,可选的功能列表在此处airlfow的其它选项
    就需要pip install 'apache-airflow[mysql]'
    这里,我就不挑了,直接来全套插件,这样就会遇到更多的坑:

    yum install mysql-devel gcc gcc-devel python-devel krb5-devel.x86_64 cyrus-sasl-devel  -y
    pip install 'apache-airflow[all]' -i https://pypi.tuna.tsinghua.edu.cn/simple/
    

    这个时候可能会遇到很多的错误,例如下面的:
    在这里插入图片描述
    这里面的错误要有点耐心去处理一下,在这里面一般都是版本上的错误,将红字里面出现的版本卸载掉,重新指定版本号安装就好了。

    配置airflow

    • 配置mysql作为airflow的元数据信息的存储:
      • vim /etc/my.cnf[mysqld]下面添加explicit_defaults_for_timestamp=1
      • systemctl restart mysqld重启mysql
      • mysql中创建一个数据库,我这边的数据库的名字叫做airflow
        在这里插入图片描述
      • 进入airflow的文件夹下,修改airflow.cfg
        在这里插入图片描述
    • 解决airflow一次只能执行一个任务的问题:
      在这里插入图片描述
      相关的依据请参考airflow 执行者
    • 解决airflow时间晚了八个小时的问题
      修改airflow.cfg的内容:
      在这里插入图片描述
      这部分的内容就要参考airflow 修改源码
      具体的内容如下:
      #找到airflow的安装位置
      find / -name airflow
      
      在这里插入图片描述
    1. 修改/root/anaconda3/envs/airflow_env/lib/python3.7/site-packages/airflow/utils/timezone.py
      在第27行下面添加:
      在这里插入图片描述
      from airflow import configuration as conf
      try:
      	tz = conf.get("core", "default_timezone")
      	if tz == "system":
      		utc = pendulum.local_timezone()
      	else:
      		utc = pendulum.timezone(tz)
      except Exception:
      	pass
      
      修改 utcnow() 函数:
      在这里插入图片描述
    2. 修改/root/anaconda3/envs/airflow_env/lib/python3.7/site-packages/airflow/utils/sqlalchemy.py
      在第38行下面添加: utc = pendulum.timezone('UTC')
    from airflow import configuration as conf
    try:
    	tz = conf.get("core", "default_timezone")
    	if tz == "system":
    		utc = pendulum.local_timezone()
    	else:
    		utc = pendulum.timezone(tz)
    except Exception:
    	pass
    

    在这里插入图片描述
    注释掉这个:
    在这里插入图片描述
    3. 修改/root/anaconda3/envs/airflow_env/lib/python3.7/site-packages/airflow/www/templates/admin/master.html

    修改下箭头所指的行,修改的内容在注释的下面在这里插入图片描述
    此时修改完毕了,这个时候重启一下 airflow就好了。修改源码的操作参考:airflow 修改中国时区(改airflow源码)

    最后的结果如下:

    使用了mysql作为元数据信息的存储,在mysql里面可以看到:
    在这里插入图片描述
    登录airflow的时候:
    在这里插入图片描述

    解决了之前提到的三个问题

    总结

    这个airflow作为一个调度工具,这次只是提到了如何去安装搭建,以后有空的时候,我想补充一篇如何编写airlfow的任务脚本。现在的水平还只是简单的任务脚本的编写,还需要多多努力。
    最后,如果大佬看完之后,发现这个文档里面有什么问题,或是有什么更好的建议,请在下方留言。谢谢!
    在这里插入图片描述

    展开全文
  • 前言Apache Airflow(以下简称为Airflow) 是一项由Airbnb在 2014 年推出的开源项目,其目的是为了管理日益复杂的数据管理工具、脚本和分析工具,提供一个构建批处理...
  • airflow高可用

    千次阅读 2017-09-13 11:55:58
    Airflow集群搭建 1.前言 airflow作为调度工具,由Webserver、Schduler、Worker三个组件互相配合完成工作。三个组件之间没有强依赖关系,依靠共用元数据库和消息队列完成调度任务。因此,在多台机器上部署airflow...
  • Celery 集群搭建

    2021-01-13 09:51:16
    [hadoop@hadoop101 ~]$ pip3 install apache-airflow==2.0.0 [hadoop@hadoop101 ~]$ pip3 install apache-airflow[celery] [hadoop@hadoop101 ~]$ pip3 install apache-airflow[mysql] [hadoop@hadoop101 ~]$ pip
  • Airflow

    千次阅读 2019-04-13 11:31:11
    KubernetesExecutor for Airflow Scale Airflow natively on Kubernetes 数据平台作业调度系统详解-理论篇 数据平台作业调度系统详解-实践篇 Sphinx
  • 28 deploy redis, elasticsearch, logstash, kibana, kafka, airflow on marathon by api 29 deploy hdfs, yarn, hive, hbase, oozie, kudu, impala, sentry, hue by cloudera manager 30 enable kerberos on ...
  • 转自:... hadoop 集群 master无法免密登录slave2:https://blog.csdn.net/weixin_37600848/article/details/83418515 Ambari,hadoop的配置,管理和监控项目入门:https://bl...
  • 集群资源分配 \ master1 master2 slave1 slave2 slave3 组件 scheduler, webserver, flower, airflow-scheduler-failover-controller webserver, airflow-sche...
  • 参考文档: airflow2.0.2分布式安装文档 ariflow官方文档 ... 安装Airflow(重要)2.1 配置 airflow sudo权限2.2 设置Airflow环境变量2.3 安装airflow2.4 配置ariflow2.5 启动airflow集群2.6 登录webui查看
  • Airflow on Kubernetes

    千次阅读 2019-04-16 12:22:43
    在本系列第一篇博客Airflow Architecture中,简述了,Airflow的设计架构,Airflow在部署的时候跟设计架构也是一一对应的,Scheduler进程,WebServer进程和Worker进程需要单独启动。Scheduler和WebServer可以跑在一个...
  • AirFlow 安装配置

    2019-12-27 09:34:20
    文章目录airflow 安装配置airflow 相关软件安装python 3.6.5 安装pip3 安装MySQL 5.7.28 安装redis 安装RabbitMQ 安装airflow 单节点部署架构图步骤airflow 多节点(集群)部署架构图多节点好处扩展 worker 节点水平...
  • airflow分布式调度

    2018-08-31 13:40:34
    分布式任务调度部署,基于4台机器,采用docker部署,docker做的集群
  • 之前介绍过的 apache-airflow 系列文章 任务调度神器 airflow 之初体验 airflow 安装,部署,填坑 airflow 配置 CeleryExecutor 介绍了如何安装、配置、及使用,接下来介绍如何在跨多...airflow 多节点(集群)部署 ...
  • docker上安装airflow

    2019-09-27 03:19:13
    mkdir airflow //创建airflow文件夹 git clone https://github.com/puckel/docker-airflow.git /root/airflow //下载源码到airflow文件夹 docker run -d -p 8082:8080 puckel/docker-airflow //安...
  • Airflow的简单入门

    2021-05-21 16:43:21
    Airflow 作为一款开源分布式任务调度框架,已经在业内广泛应用。本文总结了 Freewheel Transformer 团队近两年使用 Airflow 作为调度器,编排各种批处理场景下 ETL Data Pipelines 的经验,希望能为正在探索 Airflow...
  • airflow初探(一)-- 安装和部署

    千次阅读 2019-04-23 17:02:51
    airflow搭建分布式流程控制 Airflow是一个可编程,调度和监控的工作流平台,基于有向无环图(DAG),airflow可以定义一组有依赖的任务,按照依赖依次执行。airflow提供了丰富的命令行工具用于系统管控,而其web管理...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 275
精华内容 110
关键字:

airflow集群搭建