从0到1搭建大数据平台之调度系统

大家好,我是脚丫先生 (o^^o)

大数据平台核心之一在于数据计算,分为离线计算和实时计算任务。

然而任务是离不开调度的。比如:我们要进行定时抽取业务数据库
的数据,定时跑hive/spark任务,定时推送日报、月报指标数据等。

因而调度系统是大数据平台不可或缺的,正如闹钟对于日常生活的重要性一样

首先上一个通用型的大数据平台框架:

由此而见,无论是离线任务或者实时任务,都是需要工作流的调度系统。

一、原始任务调度

传统的crontab是linux系统自带的调度工具,使用crontab可以在指定的时间执行一个shell脚本或者一系列Linux命令。

实例:

实例 1:每 1 分钟执行一次 command
命令:
*/1 * * * * command

可见,crontab的使用是非常方便的,配置也极其简单。

但是在任务量较少的时候,是非常nice。

然而随着任务越来越多,就会出现了

  • 1 任务不能在原来计划的时间完成,出现了上级任务跑完前,后面依赖的任务已经起来了,这时候没有数据,任务就会报错,或者两个任务并行跑了,出现了
    错误的结果。

  • 2 排查任务错误原因越来麻烦,各种任务的依赖关系越来越复杂,最后排查任务问题就行从一团乱麻中,一根一根梳理出每天麻绳。

  • 3 成千上万的任务,管理起来是非常麻烦的,无穷无尽的痛苦。

总而言之,crontab虽然配置简单易上手,但是随着任务越来越多,任务之间的依赖越来越复杂,那么它是无法满足我们的需求,去解决任务之间的复杂依赖。

二、调度系统

调度系统,关注的首要重点是在正确的时间点启动正确的作业,确保作业按照正确的依赖关系及时准确的执行。资源的利用率通常不是第一关注要点,业务流程的正确性才是最重要的。

但是到随着业务的发展,ETL任务越来越多,你会发现经常有任务因为资源问题没有按时启动!

实际调度中,多个任务单元之间往往有着强依赖关系,上游任务执行并成功,下游任务才可以执行。

比如 上游任务1结束后拿到结果,下游任务2、任务3需结合任务1的结果才能执行,因此下游任务的开始一定是在上游任务成功运行拿到结果之后才可以开始。

而为了保证数据处理结果的准确性,就必须要求这些任务按照上下游依赖关系有序、高效的执行,最终确保能按时正常生成业务指标。

那么在大数据平台中,调度系统的应用场景又是什么呢?

比如:在离线场景中,需要每天0点后,依次要执行数据采集、数据清洗、数据计算按照顺序依次执行。

  • job1首先进行数据采集任务。

  • job2则等待job1执行完成之后,则开始执行。

  • job3、job4、job5指标计算,需要job2执行完,则开始执行。

因此大数据中,可以把调度系统的作用说明为:定时调度和依赖调度。

三、大数据工作流调度框架

  • Apache Oozie
  • Azkaban
  • Airflow
  • DolphinScheduler

(1)Oozie

Oozie是一个用来管理Hadoop生态圈job的工作流调度系统。由Cloudera公司贡献给Apache。

Oozie是运行于Java servlet容器上的一个java web应用。

**目的:**是按照DAG(有向无环图)调度一系列的Map/Reduce或者Hive等任务。

**应用场景:**Hadoop 自带的开源调度系统,使用方式比较复杂,适合大型项目场景,但是它使用XML配置,oozie任务的资源文什都必颈放在HDFS文什系统上,配置不方便,同时也只用于Hadoop。

(2)Azkaban

Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。

**应用场景:**一个开源调度系统,使用方式比较简单,适合中小型项目场景,但是它使用java properties文件维护任务依赖关系,任务资源文件需要打包成zip,azkaban部署不是很方便。

(3) Airflow

Airf1ow是一款开源的,分布式任务调度框架,它将一个具有上下级依赖关系的工作流,组装成一个有向无环图。

利用Python的可移植性和通用性,快速的构建的任务流调度平台,实现依赖调度、定时调度。

它具有自己的web任务管理界面,dag任务创建通过python代码,可以保证其灵活airflow性和适应性。

(4)Apache DolphinScheduler

Apache DolphinScheduler是一个分布式、去中心化、易扩展的可视化DG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。

它很好与Spark和Flink整合集成,进行离线批处理任务和实时流计算调度与监控预警。

四、调度框架比较

给小伙伴们总结下这几个调度框架:

总体而言,海豚调度DolphinScheduler, 算是后起之秀。

它因为出来得晚,自然就会集成了以往调度框架的优点,万千优点于一身。

但是,不管如和去选择自己的调度框架,都是根据需求去综合分析的,比如我而言,对Airflow比较熟悉,所以项目中习惯用它。

五、Airflow2.x的docker版快速搭建

  • tar包如下所示:
链接:https://pan.baidu.com/s/1XE_iwx9PzSJBCcN4X0duTQ 
提取码:yyds

下载tar包,在服务器里进行导入:

docker load < xxx.tar

  • docker-compose.yml文件如下所示:
version: '3.7'
services:
    webserver:
        image: docker-airflow:2.2.5
        restart: always
        user: root
        privileged: true 
        environment:
            - LOAD_EX=n
            - EXECUTOR=Local
            - AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION=False
            - AIRFLOW__SCHEDULER__MIN_FILE_PROCESS_INTERVAL=5
            - AIRFLOW__CORE__SQL_ALCHEMY_CONN=mysql://root:123456@172.16.119.19:3306/airflow2
        logging:
            options:
                max-size: 10m
                max-file: "3"
        volumes:
            - ./dags:/usr/local/airflow/dags
            - ./airflow.cfg:/usr/local/airflow/airflow.cfg
        ports:
            - "8086:8080"
        command: webserver
        healthcheck:
            test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
            interval: 30s
            timeout: 30s
            retries: 3

根据docker-compose.yml进行启动:

docker up -d

撒花。

好了,今天就聊到这里,祝各位终有所成,收获满满!

我是脚丫先生,我们下期见~

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
好的,这是一个非常全面的问题,需要分别介绍每个环节的作用和意义,以及实现的功能和要注意的事项。 1. 虚拟机模板机 虚拟机模板机是用来创建虚拟机的基础模板,可以快速地部署多个相同的虚拟机。它的作用是提高虚拟机的部署效率和一致性,实现了快速部署和扩展的功能。在部署虚拟机时,需要注意设置虚拟机的内存、CPU、磁盘等参数,以及安装必要的系统和软件。 2. 分布式集群 分布式集群是由多个计算机组成的系统,可以共同完成大量的计算任务。它的作用是提高计算效率和可靠性,实现了分布式计算的功能。在部署分布式集群时,需要注意节点的数量、硬件配置、网络连接等因素,以及集群的管理和监控。 3. OpenResty OpenResty 是一个基于 Nginx 的 Web 应用框架,可以实现高性能的 Web 应用和 API 服务。它的作用是提供 Web 服务接口,实现了 Web 应用和 API 服务的功能。在部署 OpenResty 时,需要注意配置 Nginx 的参数和模块,以及实现安全和性能优化。 4. Hadoop Hadoop 是一个分布式计算框架,可以实现大规模数据的存储和处理。它的作用是提供数据存储和计算能力,实现了分布式存储和计算的功能。在部署 Hadoop 时,需要注意配置 HDFS 和 MapReduce 的参数和组件,以及实现数据的备份和恢复。 5. Zookeeper Zookeeper 是一个分布式协调服务,可以提供分布式系统的一致性和可靠性。它的作用是管理分布式系统的状态和配置,实现了分布式协调和管理的功能。在部署 Zookeeper 时,需要注意配置集群的节点和选举机制,以及实现配置的同步和一致性。 6. Flume Flume 是一个日志收集和传输工具,可以实现数据的实时收集和传输。它的作用是收集分布式系统的日志和数据,实现了数据的实时采集和传输的功能。在部署 Flume 时,需要注意配置数据源和目的地,以及实现数据的过滤和转换。 7. Hive Hive 是一个基于 Hadoop 的数据仓库工具,可以实现数据的查询和分析。它的作用是提供数据仓库和查询能力,实现了数据的存储和分析的功能。在部署 Hive 时,需要注意配置数据源和表结构,以及实现数据的查询和分析。 8. Zeppelin Zeppelin 是一个数据可视化工具,可以实现数据的交互式分析和可视化展示。它的作用是提供数据可视化和交互式分析能力,实现了数据的可视化和探索的功能。在部署 Zeppelin 时,需要注意配置数据源和可视化组件,以及实现数据的交互和分享。 9. DolphinScheduler DolphinScheduler 是一个分布式调度系统,可以实现任务的调度和监控。它的作用是提供任务调度和监控能力,实现了任务的自动化和管理的功能。在部署 DolphinScheduler 时,需要注意配置任务的类型和依赖关系,以及实现任务的监控和报警。 10. SuperSet SuperSet 是一个数据可视化和分析平台,可以实现数据的可视化和探索。它的作用是提供数据可视化和分析能力,实现了数据的可视化和探索的功能。在部署 SuperSet 时,需要注意配置数据源和可视化组件,以及实现数据的交互和分享。 总体来说,搭建大数据架构平台需要注意以下事项: 1. 确定系统的需求和目标,选择适合的技术和工具。 2. 合理设置系统的节点、硬件和网络环境,确保系统的性能和可靠性。 3. 配置系统的参数和组件,实现系统的功能和要求。 4. 实现系统的安全和监控,确保系统的稳定和安全。 5. 持续优化和升级系统,提高系统的性能和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据指北Ai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值