Airflow 配置celery+rabbitmq和celery+redis

Airflow 配置celery+rabbitmq

1、安装celery和rabbitmq组件

pip3 install apache-airflow[celery]

pip3 install apache-airflow[rabbitmq]

2、系统安装rabbit

  1)安装 erlang

yum install -y erlang

  如果报错如下:

[ ]# yum install erlang
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
No package erlang available.
Error: Nothing to do

  则需要安装第三方软件库 epel:

# 下载
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# 安装完成即可
rpm -ivh epel-release-latest-7.noarch.rpm

  再次执行则可以成功安装erlang了!

  2)安装 rabbitmq

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el6.noarch.rpm
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
yum install -y rabbitmq-server-3.6.15-1.el6.noarch.rpm

 

  3)配置rabbitmq(设置用户名root,密码rabbitmq,创建虚拟主机airflow-rabbitmq)

[root@centos-master airflow]# /sbin/service rabbitmq-server stop
Stopping rabbitmq-server (via systemctl):                  [  OK  ]
[root@centos-master airflow]# /sbin/service rabbitmq-server start
Starting rabbitmq-server (via systemctl):                  [  OK  ]
[root@centos-master airflow]# rabbitmqctl add_user root rabbitmq
Creating user "root"
[root@centos-master airflow]# rabbitmqctl add_vhost airflow-rabbitmq
Creating vhost "airflow-rabbitmq"
[root@centos-master airflow]# rabbitmqctl set_user_tags root airflow-rabbitmq
Setting tags for user "root" to ['airflow-rabbitmq']
[root@centos-master airflow]# rabbitmqctl set_permissions -p airflow-rabbitmq root ".*" ".*" ".*"
Setting permissions for user "root" in vhost "airflow-rabbitmq"
[root@centos-master airflow]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
  amqp_client
  cowlib
  cowboy
  rabbitmq_web_dispatch
  rabbitmq_management_agent
  rabbitmq_management

 

  4)修改airflow配置

[root@centos-master airflow]# vi airflow.cfg 
    executor = CeleryExecutor
    broker_url = amqp://root:rabbitmq@localhost:5672/airflow-rabbitmq
    result_backend = amqp://root:rabbitmq@localhost:5672/airflow-rabbitmq

 [root@centos-master airflow]# echo "export C_FORCE_ROOT="True"" >> /etc/profile
 [root@centos-master airflow]# source /etc/profile

 

 

Airflow 配置celery+redis

 

1.安装redis

yum -y install redis

 

 

 

2.修改配置文件

sudo vim /etc/redis.conf
#bind 127.0.0.1     // 注释掉,使redis允许远程访问
requirepass redis  // 修改这行,redis登录密码(自定义)

 

 

3.开启redis服务

systemctl start redis

 

4.python下安装redis库

pip3 install redis

 

5.安装celery

pip3 install celery

 

6.配置airflow.cfg

executor = CeleryExecutor
broker_url = redis://127.0.0.1:6379/0
result_backend = redis://127.0.0.1:6379/0

 

 

 

转载于:https://www.cnblogs.com/zimo-jing/p/11557375.html

### 类似于Celery的消息队列技术 除了 Celery 外,还有许多其他的技术框架能够实现类似的分布式任务处理功能。以下是几种常见的替代方案: #### 1. **RQ (Redis Queue)** RQ 是一个轻量级的任务队列工具,基于 Python Redis 构建。它的设计目标是简单易用,适合中小型项目的需求。与 Celery 不同的是,RQ 只支持 Redis 作为消息中间件[^6]。 ```python import redis from rq import Queue from my_module import count_words_at_url redis_conn = redis.Redis() q = Queue(connection=redis_conn) job = q.enqueue(count_words_at_url, 'http://example.com') ``` #### 2. **Dramatiq** Dramatiq 是另一个高性能的分布式任务队列系统,专注于快速执行可靠性。它支持多种消息中间件(如 RabbitMQ Redis),并提供了更简单的 API 设计[^7]。 ```python import dramatiq from dramatiq.brokers.rabbitmq import RabbitmqBroker broker = RabbitmqBroker(url="amqp://guest:guest@localhost/") dramatiq.set_broker(broker) @dramatiq.actor def count_words(path): with open(path, "r") as f: return len(f.read().split()) ``` #### 3. **Apache Airflow** 虽然 Apache Airflow 更多用于数据管道编排,但它也可以用来管理复杂的定时任务工作流。Airflow 提供了一个强大的 UI 来监控任务状态,并且具有高度可扩展性[^8]。 #### 4. **Luigi** Luigi 是 Spotify 开发的一个任务调度器,主要用于构建复杂的数据管道。它可以很好地与其他大数据工具集成,比如 Hadoop、Pig 等。尽管 Luig 主要关注批处理作业,但也适用于某些类型的实时任务[^9]。 ```python import luigi class MyTask(luigi.Task): param = luigi.Parameter() def run(self): with self.output().open('w') as output_file: output_file.write(str(len(param))) def output(self): return luigi.LocalTarget('/path/to/output/%s.txt' % self.param) ``` #### 5. **Resque** Resque 是 Ruby 社区广泛使用的背景任务管理系统,同样依赖 Redis 作为存储后端。对于熟悉 Ruby 的开发者来说,这是一个非常流行的选择[^10]。 --- ### 总结对比表 | 技术名称 | 编程语言 | 支持的消息中间件 | 功能特点 | |----------|-----------|-------------------|------------| | Celery | Python | RabbitMQ, Redis 等 | 强大灵活,社区活跃 | | RQ | Python | Redis | 轻量化,易于上手 | | Dramatiq | Python | RabbitMQ, Redis | 高性能,API简洁 | | Airflow | Python | 数据管道为主 | 工作流可视化 | | Luigi | Python | 文件系统/HDFS/Pig等 | 数据管道/批量任务优先 | | Resque | Ruby | Redis | Ruby 生态中的主流解决方案 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值