开源数据流管道-Luigi vs Azkaban vs Oozie vs Airflow
原文链接:https://www.jianshu.com/p/4ae1faea733b
随着企业的发展,他们的工作流程变得更加复杂,越来越多的有着错综复杂依赖关系的工作流需要增加监控,故障排除。如果没有明确的血缘关系。就可能出现问责问题,对元数据的操作也可能丢失。这就是有向无环图(DAG),数据管道和工作流管理器发挥作用的地方。
复杂的工作流程可以通过DAG来表示。DAG是一种图结构。信息必须沿特定方向在顶点间传递,但信息无法通过循环返回起点。DAG的构建快是数据管道,或者是一个进程的输入成为下一个进程的输入的顺序进程。
构建这些管道可能会很棘手,但幸运的是,有几个开源的工作流管理器可用于解决这个问题,允许程序员专注于单个任务和依赖关系。为了帮助您选择各种可用的工作流程管理器,我们在下面讨论了其中的几个。
Luigi

Luigi是Spotify在2011年开发的一个Python软件包,用于帮助构建生成推荐和顶级列表等任务所需的复杂流水线。它也被Foursquare,Stripe,华尔街日报,Groupon和其他知名企业使用。它内置Hadoop支持,但与专为Hadoop构建的类似工作流管理器Oozie和Azkaban不同,Luigi的理念是尽可能使所有内容尽可能通用。这使得它可以与其他任务一起扩展,例如Hive查询,Scala或Python中的Spark作业等。Luigi是基于代码的,而不是基于GUI或声明式的,包含Python中的所有内容(包括依赖关系图)。用户界面(UI)允许您搜索,过滤或监视每个任务的状态。您还可以查看该工作流程,以查看依赖关系图上的哪些任务已完成,哪些尚未运行。
特色
- 允许您根据需要并行化工作流程
- 带有常用任务模板的工具箱
- 支持Hadoop,Hive和Pig中的Python mapreduce作业
- 包括Hadoop分布式文件系统的文件系统抽象和确保所有系统都是原子的本地文件 ,防止它们在包含部分数据的状态下崩溃
Azkaban

Azkaban是另一个在LinkedIn上创建的开源工作流管理器,用于基于时间的Hadoop批处理作业的依赖性调度。与Luigi不同,它是用Java编写的,调度是通过Web浏览器在GUI中完成的。它由一个AzkabanWebServer组成,该服务器充当用户界面并处理项目管理,认证,调度和监控执行,一个用于元数据的MySQL数据库和一个AzkabanExecutorServer(以前web服务器和执行器服务器被合并为一个,但随着Azkaban的发展,它将两者分开以帮助对用户进行升级)。当前版本3.0有三种模式可供选择:单一服务器的试用模式,生产环境的双服务器模式以及分布式多执行器模式。Azkaban的设计以可用性为主要目标;因此,它包含一个特别易于使用的用户界面,具有出色的可视化效果。
特色
- 与任何版本的Hadoop兼容
- 简单的Web和HTTP工作流程上传
- 模块化,可插入每个Hadoop生态系统
- 跟踪用户操作,身份验证和授权
- 为每个新项目提供一个单独的工作区
- 提供有关SLA,失败和成功的电子邮件警报
- 允许用户重试失败的作业
Oozie

像Azkaban一样,Oozie是一个用Java编写的用于Hadoop系统的开源工作流调度系统。然而,Oozie不同于Azkaban,因为它更少关注可用性,更多关注灵活性和创建复杂的工作流程。虽然Azkaban仅支持通过Web浏览器在GUI中进行基于时间的调度,但Oozie的协调器允许由时间,事件或数据可用性触发的作业考虑数据可用性无法预测的情况,并允许您通过命令行, Java API和Web浏览器,以及GUI。 Oozie也支持XML属性文件,而Azkaban是基于Java的。最后,Azkaban将所有正在运行的工作流的状态保存在其内存中,而Oozie使用SQL数据库,仅将其内存用于状态事务。
Oozie工作流程安排为DAG,控制节点定义了作业启动和停止的时间,决定,分叉和连接节点以及触发任务执行的动作节点。每个任务都有一个唯一的回调HTTP URL,当任务完成时通知URL。如果没有通知URL,Oozie将轮询任务以确定它是否完整。
特色
- 为mapreduce,Pig,Hive,Sqoop和Distcp提供开箱即用的支持,以及特定于系统的作业
可扩展,可靠和可扩展 - 相同的工作流程可以参数化并行运行
- 允许批量杀死,挂起或恢复作业
- 高可用性
- 多个协调员和工作流作业可以通过Oozie Bundle一起打包和管理
Airflow

Airflow由Airbnb于2015年创建,用于创作,滴哦独和监控DAG工作流程。它是为编程环境而开发的,重点在于创作。与Luigi类似,它是基于Python的工作流DAG,它被定义为代码,使其尽可能地协作,并确保它可以很容易地进行维护,版本化和测试。该体系结构由源代码管理中的作业定义组成;一个命令行界面,您可以在其中测试,运行并描述DAG的各个部分;用于探索依赖性,进度,元数据和日志的Web应用程序;一个元数据库;运行分布式作业任务实例的Worker以及在任务实例准备好运行时触发任务实例的调度程序进程。
特色:
- 丰富的CLI和用户界面,允许用户可视化依赖关系,进度,日志,相关代码以及白天完成各种任务的时间
- 模块化,可扩展且高度可扩展
- 使用Jinja模板引擎构建参数化脚本
- 提供有关搜索排名和会话信息的分析,以跟踪用户的点击流量和时间消耗
- 可以与Hive,Presto,MySQL,HDFS,Postgres或S3进行交互
作者:阿海与蜗牛
链接:https://www.jianshu.com/p/4ae1faea733b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
开源数据流管道-Luigi vs Azkaban vs Oozie vs Airflow的更多相关文章
- Hadoop工作流引擎之Azkaban与Oozie对比(四)
Azkaban是什么?(一) Azkaban的功能特点(二) Azkaban的架构(三) 不多说,直接上干货! http://www.cnblogs.com/zlslch/category/93883 ...
- Azkaban和Oozie的区别
Azkaban和Oozie的区别: 当前,实际生产中最流行的两种Hadoop工作流引擎是Azkaban与Oozie.但活跃度最高的当是Azkaban了,下面对两者的异同之处作如下对比. 功能对比 Az ...
- [Big Data - Suro] Netflix开源数据流管理器Suro
Netflix近日开源了一个叫做Suro的工具,公司可以利用它来做数据源主机到目标主机的实时定向.它不只在Netflix的数据管道上扮演重要角色,大规模下的应用场景同样令人印象深刻. Netflix各 ...
- Oozie和Azkaban的技术选型和对比
1 两种调度工具功能对比图 下面的表格对上述2种hadoop工作流调度器的关键特性进行了比较,尽管这些工作流调度器能够解决的需求场景基本一致,但在设计理念,目标用户,应用场景等方面还是存在区别 特性 ...
- SSIS 数据流的执行树和数据管道
数据流组件的设计愿景是快速处理海量的数据,为了实现该目标,SSIS数据源引擎需要创建执行树和数据管道这两个数据结构,而用户为了快速处理数据流,必须知道各个转换组件的阻塞性,充分利用流式处理流程,利用更 ...
- GitHub 开源工具整理
技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 ...
- Flume+Sqoop+Azkaban笔记
大纲(辅助系统) 离线辅助系统 数据接入 Flume介绍 Flume组件 Flume实战案例 任务调度 调度器基础 市面上调度工具 Oozie的使用 Oozie的流程定义详解 数据导出 sqoop基础 ...
- 开源的.NET系统推荐
C# 源码 AForge.NET RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的 ...
- oozie配置安装与原理
概述 当前开源的hadoop任务工作流管理主要有oozie和Azkaban,本文先介绍oozie的配置安装与基本运行原理. 配置安装 (参考https://segmentfault.com/a/11 ...
随机推荐
- Intellij IDEA中修改Maven项目的项目名称
1. 原项目名:votesystem-redis 想要重命名成新项目名:votesystem 2. 我们对此项目名进行Rename 3. 再对此项目所在的目录下进行修改 4. 重新打开项目 若 ...
- Jenkins打包安卓时提示没同意constraintLayout的license的解决方法
使用Jenkins打包安卓项目时,报错并失败,错误信息: You have not accepted the license agreements of the following SDK compo ...
- windows(64位)下使用curl安装
windows(64位)下使用curl安装 转自:https://blog.csdn.net/wkj001/article/details/54889907 2017年02月06日 09:46:47 ...
- Linux ethtool 命令
ethtool 是用于查询及设置网卡参数的命令,常见用法如下: 注意:该命令只是临时设置,如果网卡重启就失效了,如果想要永久保存应该配置 /etc/sysconfig/network-scripts/ ...
- js或jsp 获取项目路径常用方法
可以引入一个jsp,这个jsp的内容如下: <%@page pageEncoding="UTF-8" contentType="text/javascript; c ...
- vux 是基于 WeUI 和Vue(2.x)开发的移动端UI组件库,主要服务于微信页面。
https://doc.vux.li/zh-CN/ https://vux.li/
- hash值重写,就是以自己定义的规则来显示hash值
未重写hashCode值 重写hashCode后的值
- JDK 1.8源码阅读 ArrayList
一,前言 ArrayList是Java开发中使用比较频繁的一个类,通过对源码的解读,可以了解ArrayList的内部结构以及实现方法,清楚它的优缺点,以便我们在编程时灵活运用. 二,ArrayList ...
- ida快捷键
跳转相关: ctrl+1 快速查看 ctrl+L 查看所有数据和函数 Ctrl+P跳转到某函数(ChooseFunction()) Ctrl+S跳转到指定节 s=segment Ctrl+x查找引用 ...
- cocos2d-x JS 复选按钮checkBox的单选与多选
var HZ_createRoom = jx.BaseView.extend({//红中麻将 ctor : function() { this._super(); this.addLayout(res ...