大数据编排框架


大数据编排框架文章插图
> Photo by Wolfgang Rottmann on Unsplash
介绍大数据是复杂的 , 我已经写了很多关于广阔的生态系统和广泛的可用选项的文章 。通常被忽略但很关键的一个方面是管理大数据管道的不同步骤的执行 。框架的决定或执行过程的设计经常会推迟到稍后的阶段 , 从而导致许多问题并延误项目 。
您应该尽早设计管道编排 , 以避免在部署阶段出现问题 。编排应像其他可交付成果一样对待; 所有利益相关者都应该对其进行计划 , 实施 , 测试和审查 。
编排框架通常被忽略 , 许多公司最终为其管道实施定制解决方案 。这不仅成本高昂 , 而且效率低下 , 因为自定义业务流程解决方案往往会面临现成框架已经解决的相同问题 。造成漫长的反复试验 。
在本文中 , 我将介绍一些最常见的开源业务流程框架 。
管道编排数据管道编排是一个交叉过程 , 可管理管道任务之间的依赖关系 , 调度作业等 。如果使用流处理 , 则需要编排每个流应用程序的依赖关系 , 而对于批处理 , 则需要安排和编排作业 。
请记住 , 任务和应用程序可能会失败 , 因此您需要一种以统一的方式调度 , 重新调度 , 重放 , 监视 , 重试和调试整个数据管道的方法 。
业务流程框架提供的一些功能是:
· 作业调度
· 依赖管理
【大数据编排框架】· 错误管理和重试
· 工作参数化
· SLA跟踪 , 警报和通知
· 具有仪表板的用户界面 , 例如甘特图和图形
· 历史和审计
· 元数据的数据存储
· 日志汇总
让我们回顾一下一些选项…
Apache OozieApache Oozie是Hadoop的调度程序 , 作业创建为DAG , 并且可以由基于cron的调度或数据可用性触发 。Oozie是作为Java Web应用程序运行的可伸缩 , 可靠和可扩展的系统 。它与Sqoop等提取工具和Spark等处理框架集成在一起 。
Oozie工作流程定义以hPDL(XML)编写 。工作流包含控制流节点和动作节点 。控制流节点定义工作流的开始和结束(开始 , 结束和失败节点) , 并提供一种机制来控制工作流的执行路径(决策 , 派生和联接节点)[1] 。
动作节点是一种机制 , 工作流通过该机制触发任务的执行 。Oozie支持不同类型的操作(map-reduce , Pig , SSH , HTTP , 电子邮件…) , 并且可以扩展以支持其他类型的操作[1] 。
同样 , 可以对工作流程进行参数设置 , 并且可以同时执行几个相同的工作流程作业 。
它是Hadoop的第一个调度程序 , 非常流行 , 但是已经有点过时了 , 如果您完全依赖Hadoop平台 , 它仍然是一个不错的选择 。
Apache AirflowAirflow是一个平台 , 可用于计划 , 运行和监视工作流程 。由于其易用性和创新的工作流作为代码方法 , 它已成为大数据管道的最著名协调者 , 其中DAG在Python代码中定义 , 可以像其他任何可交付的软件一样进行测试 。
它使用DAG创建复杂的工作流程 。图中的每个节点都是一个任务 , 边定义了任务之间的依赖关系 。任务分为两类:
· 操作员:执行一些操作 。
· 传感器:检查过程或数据结构的状态 。
Airflow Scheduler在遵循您描述的指定依赖项的同时 , 在一组工作线程上执行您的任务 。它具有模块化架构 , 并使用消息队列来协调任意数量的工作程序 , 并且可以扩展到无穷大[2] 。
它为您生成DAG , 从而最大程度地提高了并行度 。DAG是用Python编写的 , 因此您可以在本地运行它们 , 对其进行单元测试并将其与开发工作流程集成 。当工作流定义为代码时 , 它们变得更加可维护 , 可版本控制 , 可测试和协作[2] 。
丰富的用户界面可以轻松地可视化生产中运行的管道 , 监视进度并在需要时对问题进行故障排除[2] 。它快速 , 易于使用且非常有用 。它具有多种视图和多种方法来解决问题 。它保留了运行的历史记录 , 以供以后参考 。
大数据编排框架文章插图
> Airflow UI[2]:
安装非常简单 。您只需要Python 。它具有两个独立运行的进程 , 即UI和Scheduler 。
原则[2]:
· 动态的:气流管道是通过代码(Python)配置的 , 从而可以动态生成管道 。这允许编写可动态实例化管道的代码 。
· 可扩展:轻松定义您自己的运算符 , 执行程序并扩展库 , 使其适合于您的环境的抽象级别 。
· 优雅:气流管道简洁明了 。使用强大的Jinja模板引擎将参数化脚本内置到Airflow中 。