开源数据流管道-Luigi vs Azkaban vs Oozie vs Airflow

原文链接:https://www.jianshu.com/p/4ae1faea733b

随着企业的发展,他们的工作流程变得更加复杂,越来越多的有着错综复杂依赖关系的工作流需要增加监控,故障排除。如果没有明确的血缘关系。就可能出现问责问题,对元数据的操作也可能丢失。这就是有向无环图(DAG),数据管道和工作流管理器发挥作用的地方。

复杂的工作流程可以通过DAG来表示。DAG是一种图结构。信息必须沿特定方向在顶点间传递,但信息无法通过循环返回起点。DAG的构建快是数据管道,或者是一个进程的输入成为下一个进程的输入的顺序进程。

构建这些管道可能会很棘手,但幸运的是,有几个开源的工作流管理器可用于解决这个问题,允许程序员专注于单个任务和依赖关系。为了帮助您选择各种可用的工作流程管理器,我们在下面讨论了其中的几个。

Luigi

image.png

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

image.png

Azkaban是另一个在LinkedIn上创建的开源工作流管理器,用于基于时间的Hadoop批处理作业的依赖性调度。与Luigi不同,它是用Java编写的,调度是通过Web浏览器在GUI中完成的。它由一个AzkabanWebServer组成,该服务器充当用户界面并处理项目管理,认证,调度和监控执行,一个用于元数据的MySQL数据库和一个AzkabanExecutorServer(以前web服务器和执行器服务器被合并为一个,但随着Azkaban的发展,它将两者分开以帮助对用户进行升级)。当前版本3.0有三种模式可供选择:单一服务器的试用模式,生产环境的双服务器模式以及分布式多执行器模式。Azkaban的设计以可用性为主要目标;因此,它包含一个特别易于使用的用户界面,具有出色的可视化效果。

特色

  • 与任何版本的Hadoop兼容
  • 简单的Web和HTTP工作流程上传
  • 模块化,可插入每个Hadoop生态系统
  • 跟踪用户操作,身份验证和授权
  • 为每个新项目提供一个单独的工作区
  • 提供有关SLA,失败和成功的电子邮件警报
  • 允许用户重试失败的作业

Oozie

image.png

像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

image.png

Airflow由Airbnb于2015年创建,用于创作,滴哦独和监控DAG工作流程。它是为编程环境而开发的,重点在于创作。与Luigi类似,它是基于Python的工作流DAG,它被定义为代码,使其尽可能地协作,并确保它可以很容易地进行维护,版本化和测试。该体系结构由源代码管理中的作业定义组成;一个命令行界面,您可以在其中测试,运行并描述DAG的各个部分;用于探索依赖性,进度,元数据和日志的Web应用程序;一个元数据库;运行分布式作业任务实例的Worker以及在任务实例准备好运行时触发任务实例的调度程序进程。

特色:

  • 丰富的CLI和用户界面,允许用户可视化依赖关系,进度,日志,相关代码以及白天完成各种任务的时间
  • 模块化,可扩展且高度可扩展
  • 使用Jinja模板引擎构建参数化脚本
  • 提供有关搜索排名和会话信息的分析,以跟踪用户的点击流量和时间消耗
  • 可以与Hive,Presto,MySQL,HDFS,Postgres或S3进行交互

作者:阿海与蜗牛
链接:https://www.jianshu.com/p/4ae1faea733b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

原文地址:https://www.cnblogs.com/shujuxiong/p/10329611.html

时间: 2024-11-16 22:03:11

开源数据流管道-Luigi vs Azkaban vs Oozie vs Airflow的相关文章

Hadoop工作流引擎之Azkaban与Oozie对比(四)

Azkaban是什么?(一) Azkaban的功能特点(二) Azkaban的架构(三) 不多说,直接上干货! http://www.cnblogs.com/zlslch/category/938837.html 目前,市面上最流行的两种Hadoop工作流引擎调度器Azkaban与Oozie. 具体,可以进一步看我的博客. Azkaban概念学习系列http://www.cnblogs.com/zlslch/category/938837.html 和Oozie概念学习系列http://www.

开源工作流--Azkaban与Oozie对比

功能 两者均可以调度mapreduce,pig,java,脚本工作流任务 两者均可以定时执行工作流任务 工作流定义 Azkaban使用Properties文件定义工作流 Oozie使用XML文件定义工作流 工作流传参 Azkaban支持直接传参,例如${input} Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)} 定时执行 Azkaban的定时执行任务是基于时间的 Oozie的定时执行任务基于时间和输入数据 资源管理 Azkaban有较严格的权限控制,如用

[Big Data - Suro] Netflix开源数据流管理器Suro

Netflix近日开源了一个叫做Suro的工具,公司可以利用它来做数据源主机到目标主机的实时定向.它不只在Netflix的数据管道上扮演重要角色,大规模下的应用场景同样令人印象深刻. Netflix各种应用程序每天生成数百亿的事件,Suro可以在数据被发送之前收集到它们,然后部分经过Amazon S3给Hadoop批处理,另一部分经过Apache Kafka给Druid 和 ElasticSearch做实时分析.从Netflix博客了解到,公司也在考虑如何让Suro支持Storm或Samza这样

Hadoop,Zookeeper,Hbase,Hive,Spark,Kafka,CDH,impala,azkaban,oozie,hue中webui常用端口

Hadoop: 50070:HDFS WEB UI端口 8020 : 高可用的HDFS RPC端口 9000 : 非高可用的HDFS RPC端口 8088 : Yarn 的WEB UI 接口 8485 : JournalNode 的RPC端口 8019 : ZKFC端口 Zookeeper: 2181 : 客户端连接zookeeper的端口 2888 : zookeeper集群内通讯使用,Leader监听此端口 3888 : zookeeper端口 用于选举leader Hbase: 60010

大数据数据仓库-基于大数据体系构建数据仓库(Hive,Flume,Kafka,Azkaban,Oozie,SparkSQL)

背景 接着上个文章数据仓库简述,想写一篇数据仓库常用模型的文章,但是自己对数据仓库模型的理解程度和建设架构并没有下面这个技术专家理解的深刻,并且自己去组织语言,可能会有不准确的地方,怕影响大家对数据仓库建模的理解,数据仓库属于一个工程学科,在设计上要体验出工程严谨性,所以这次向大家推荐这篇文章,毕竟IBM在数据仓库和数据集市方面已经做得很成熟了,已经有成型的商业数据仓库组件,这篇文章写的很好,可以让大家很好的理解数据仓库. 版权 作者 周三保([email protected]) IBM 软件部

GitHub 开源工具整理

技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书:http://

工作流调度器azkaban

为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 各任务单元之间存在时间先后及前后依赖关系 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行 例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示: 1. 通过Hadoop先将原始数据同步到HDFS上: 2. 借助MapReduce计算框架对原始数据进行转换,生成的数据以分

Azkaban整理

一.Azkaban简介 Azkaban是由Linkedin开源的一个批量工作流任务调度器.用于在一个工作流内以一个特定的顺序运行一组工作和流程.Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流.简而言之就是一个工作流调度系统. 为什么需要工作流调度系统? 因为一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,Java程序,mapreduce程序.Hive脚本等 而各任务单元之间存在时间先后及前后依赖关系 为了

工作流调度系统Azkaban的简介和使用

1 概述 1.1 为什么需要工作流调度系统 l 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序.hive脚本等 l 各任务单元之间存在时间先后及前后依赖关系 l 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行: 例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示: 1.  通过Hadoop先将原始数据同步到HDFS上: 2.  借助MapReduce计算框