饿了么大数据调度系统解析:Oozie、AzKaban与AirFlow

版权申诉
5星 · 超过95%的资源 3 下载量 33 浏览量 更新于2024-09-12 收藏 442KB PDF 举报
"深入大数据平台心脏:饿了么调度系统全解" 随着大数据技术的发展,饿了么在处理海量数据方面面临着一系列挑战,如任务数量快速增长、任务多样性、复杂的任务关系、执行效率低下以及任务失败的不可控性。为了应对这些挑战,饿了么构建了自己的大数据平台,每天能够处理超过54000个大数据任务,拥有85台节点集群。 在开源解决方案中,Oozie被广泛应用于任务调度。作为雅虎的开源项目,Oozie是一个基于工作流的调度引擎,由Oozie Client和Oozie Server组成。Oozie Server运行在Tomcat这样的Java Servlet容器中,它的工作流设计遵循有向无环图(DAG)原则。用户可以通过编写workflow.xml文件定义任务执行顺序,然后利用Oozie提交并管理整个任务流,简化了多任务的协调和执行过程。 另一个例子是AzKaban,来自LinkedIn的开源任务调度服务。AzKaban以Java开发,包含WebServer、DBServer和ExecutorServer三个主要部分。它允许用户通过特定的键值对文件格式定义任务间的依赖,并提供了一个直观的Web界面来管理和监控工作流。 AirFlow是由Airbnb贡献的开源项目,现处于Apache Software Foundation的孵化阶段。AirFlow以任务(tasks)组成的有向无环图(DAGs)来编排Workflow,调度器负责在一组Worker上按依赖关系执行这些tasks。AirFlow还提供了强大的命令行工具、用户界面、监控和报警功能,便于用户操作和维护。 饿了么的调度系统具备以下关键特性: 1. 任务创建简便,支持使用cron表达式设置执行频率。 2. 提供19种任务类型,涵盖计算(如Hive、Spark、PySpark、MR、Kylin)、推送(MySQL、HBase、Redis、Cassandra、HiveToX等)、抽取和检测任务。 3. 任务依赖配置灵活,可匹配不同周期,并提供推荐依赖,DAGVIEW功能帮助可视化任务依赖关系。 4. 调度和执行具有高可用性(HA)、平滑发布、宕机恢复、负载均衡、监控告警、故障排查、快速扩容以及资源隔离机制。 5. 通过这些特性,饿了么调度系统能够高效、稳定地处理大规模的大数据任务,确保业务连续性和数据处理质量。