大数据之路—— 离线数据开发

数据存储及计算、数据整合及管理体系

4.1 数据开发平台

了解需求 -> 模型设计 -> ETL开发 -> 测试 -> 发布上线 -> 日常运维 -> 任务下线

4.1.1 统一计算平台@

请添加图片描述

客户端

  • Web:以RESTful API的方式提供离线数据处理服务
  • SDK:RESTful API的封装
  • CTL(Command Line Tool):命令行
  • IDE:上层可视化工具

接入层

提供HTTP服务、Cache、负载均衡,显示用户认证和服务层面的控制访问

逻辑层:

实现用户空间和对象的管理、命令的解析于执行逻辑、数据对象的访问控制和授权

  • Worker:处理请求,包括用户空间管理操作、资源管理操作、作业管理等,对于要MR的作业生成实例给Scheduler处理
  • Scheduler:调度和拆解,向计算集群寻分资源占用情况以进行流控
  • Executor:任务执行,真正的计算任务。

计算层

  • Pangu 分布式文件系统
  • Fuxi 资源调度系统一
  • Nuwa/ZK Namespace服务
  • Shennong 监控模块

4.1.2 统一开发平台

在云端D2:

集成任务开发、调试、发布等一站式数据开发平台,包括数据分析。

​ 基本流程:

	1. 写节点代码,设置节点属性,关联依赖
	2. 测试逻辑
	3. 点击提交,节点的所有触发条件满足后,完成资源分配和执行
	4. 发布到线上

SQLSACN

SQL语句检察模块,进行规则检验

  • 代码规范类规则,表命名规范、生命周期设置、注释
  • 代码质量类规则,调度参数检查、分母为0,NULL值参与
  • 代码性能类规则,分区裁剪失效,扫描大表

强规则:任务会被阻断,修复后才可再次提交

弱规则:显示提醒,可以继续提交。

DQC 数据质量中心

数据监控 和 数据清洗

  • 数据监控:监控质量并报警,不处理。主键监控、表数据量、波动监控、重要字段的非空监控、重要枚举字段的离散值监控

  • 数据清洗:处理,保障数据产出不含脏数据。在ODS层之后执行(避免影响数据同步效率),如果清洗掉的数据量大于阈值,会阻断。

在彼岸

功能测试

  • 新增业务需求的测试
  • 数据迁移、重构和修改后,保障数据质量进行对比
    • 数据对比:支持不同集群,异构数据库。表级:数据量和全文。字段级:统计值(SUM、MAX)、枚举、空值
    • 数据分布:表和字段的一些特征值
    • 数据脱敏

4.2 任务调度

依赖Crontab定时任务痛点

  1. 任务之间的依赖基于执行时间实现,容易造成前面的任务未结束或失败而后面的任务已运行
  2. 任务难以并发执行,增加整体处理时间
  3. 无法设置优先级
  4. 管理维护不方便

4.2.1 核心设计模型

调度引擎:根据任务节点属性以及依赖关系进行实例化,生成各类参数的实例,生成调度树

执行引擎:根据调度引擎生成的具体任务实例和配置信息,分配CPU、内存等资源,在任务对应的执行环境中运行节点代码

4.2.2 任务状态机模型@

请添加图片描述

4.2.3 工作状态机模型

请添加图片描述

4.2.4 调度引擎工作原理

请添加图片描述

以两个状态机模型原理,以事件驱动的方式运行,为数据任务节点生成实例,在调度树中生成具体执行的工作流。

4.2.5 执行引擎逻辑架构图@

请添加图片描述

  • 任务管理接口:供用户提交、查询和操作离线任务并获得异步通知
  • 系统管理接口:供系统管理员后台管理,查看集群负载,划分资源组等
  • Driver调度器,实现了任务管理接口和系统管理接口,负责任务的调度策略、集群容灾和伸缩。类似于JobTracker
  • Task pool:Driver把已提交的所有任务放在这,包括等待资源、数据质量监测的任务。直到任务运行完成,用户获取到这个状态的通知,才会移除。保存了整个系统全部状态,并采用Zookeeper实现
  • Resource manager:集群整体资源的管理
  • Task container:为Task提供运行的容器,类似于Web Server
  • Session manager:实现对Task session的管理
  • Node:代表集群中的一个节点,是逻辑概念,一台物理机上可以部署多个Node

4.2.6 调度系统的特点

调度配置

输入输出配置和自动识别相结合。能自动识别输入表和输出表,关联上任务并且自动调整依赖

定时任务

设置任务运行的时间,分钟、小时等,可精确到秒。

周期调度

按小时、日周期运行任务,离线数据可依据依赖关系,按照调度树的顺序从上依次向下运行

手动运行

做数据修复或者零时数据操作是,可以手动运行

补数据

数据初始化、数据回溯的时候形成补数据的工作流,并行的运行方式以节约时间

基线管理

按照优先级分类管理,数字越大优先级越高,保障高优先级的资源。同一类优先级的任务,在一条基线中,这样可以按照优先级不同进行分层管理

监控报警

对出错节点、超时未完成的节点,设置电话、短信报警。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值