Apache Dolphin Scheduler
新版2.0.5
特性:
- 简单易用
- 高可靠性
- 高扩展性
- 丰富的使用场景
核心架构
-
MasterServer
采用无中心设计理念主要负责DAG任务切分 任务提交 任务监控 同时监听其他MasterServer 和WorkerServer的健康状态。 -
WorkerServer
也采用分布式无中心设计理念 主要负责任务的执行和提供日志服务。 -
Zookeeper 服务
系统中的MasterServer 和WokerServer 都通过ZK来进行集群管理和容错。 -
Alert 服务
提供告警相关的服务 -
API接口层
处理前段UI层的请求 -
UI
系统前端页面 可视化操作
工作流—>> 一个流程,单个的是一个任务。 -
核心架构图:
接口调用----->>>工作流元数据存储到DB–>>定时触发执行。
Worker 会抢占式 执行任务
Logger Server 查看任务的日志
Master Server 容错。利用Zookeeper。
部署模式
单机模式
所有服务都是位于一个进程中 standalone 中
伪集群模式
Pseudo-Cluster 模式 同一台机器部署。 不同的服务位于不同的进程中
集群模式
部署说明
- 操作系统版本
- 服务器硬件要求 四核 + 8G+ SAS 千兆网卡。实例1+
- 16G—3台。6-3-3。8-3-3.
集群规划
准备工作
- 部署JDK 相关环境变量。
- 部署数据库MySQL 5.7+ 或PostgreSQL 8.2.15+
- 部署Zookeeper3.4.6+
- 部署psmisc 进程树分析工具 yum install
ds 安装包 + mysql-connector-java
当前的解压目录 不是最终的安装目录。****
创建元数据库
MySQL 密码校验级别 0 只校验长度 1,2 会校验内容。
授予用户访问权限。
配置一键部署 脚本 部署核心过程
install_config.conf
- ips
- sshPort
- masters
- workers
主机名+workerGroup work 组 - alertServers
- pythonGatewayServers :利用Python API处理
- installPath
安装路径 当前用户有权限访问的路径。 - deployUser
sudo 用户 免密 - databaseDirPath
- JavaHome
- apiServerPort
- DB
DB type URL username password - Zookeeper
- registryNameSpace ZK注册节点
- resourceStorageType ;资源存储类型
外部资源 MR jar包。资源中心。HDFS,S3 None - defaultFS
HA : 把core-site.xml 和hdfs-site.xml 放在 conf 目录下 - yarnHaIps singleYarnIp 是否HA
- hdfsRootUser。 超级用户。会利用这个用户上传到资源中心。
初始化数据库,一键部署。
基础使用
安装目录 bin 下 dolpinscheduler-daemon.sh 可以起停各种服务api-server 等。
安全中心配置
-
Yarn 队列管理
维护一个队列选项。不会影响到Yarn的配置。
Shell 脚本不需要队列选项。 只有提交到Yarn的任务才会用到。 -
租户管理
多租户环境。 其实指的就是Hadoop集群的租户。需要从DS 向Yarn提交任务
租户 是用worker 节点上的操作系统用户 。worker执行任务。 如果没有该租户 默认报错。
worker.properties 中 有一个worker.tenant.auto.create=true 可以自动创建租户。 -
用户管理
登陆DS的用户
管理员用户 : 管理员有授权和用户管理等权限,没有创建项目和工作流定义的操作的权限。
普通用户。 项目创建 工作流的创建编辑和执行等。
用户提交任务默认使用的租户是 -
告警实例 和告警组的管理 一个告警组 多个实例
-
worker 分组的管理
同一个Worker 可以属于多个分组。 -
环境管理
环境变量 配置。 环境描述信息 环境所属的Worker 组。
必选worker 组。 否则选不了 -
令牌管理
通过接口访问 时 需要 认证。必须 做的 租户管理 和用户管理。
项目管理
- 工作流定义。执行一次生成一个工作流实例。
- 任务实例
工作流定义
支持任务类型
shell SQL PROCEDURE
PYTHON DEPENDENT 依赖节点。HTTP 请求 DATAX 。
任务优先级–>>>
资源不足的时候 执行的优先级程度。
Worker 节点 线程数资源 不足时 任务优先级高先执行。
要执行一个Hive的任务—>> 需要保证执行任务节点有Hive 创建一个Worker 组,包含一台有Hive的机器 向他提交。
一个组下 有多个环境。 可选。
可以指定前置任务。 前置 依赖节点。
工作流执行
失败策略;
继续 / 结束。 一个任务失败之后 并行的任务是否继续执行。
是否补数?
定时任务 也需要上线。
DolphinScheduler 进阶— 工作流传参
1.工作流传参:
本地参数和全局参数。
本地参数---->>>> 只针对 单个任务节点有效的参数。
全局–>>>> 针对整个工作流都有效的参数。
自定义参数—>>
IN 给当前的节点传参。
OUT。给下一个节点传参。
参数可以DS 传入的动态参数。
可以在工作流上设置全局参数。
本地参数和全局参数 名字一致时 采用本地参数。 本地参数优先级更高。
2.上下游参数传递
只有Shell SQL 和Procedure 支持。
echo ‘${setValue(key=value)}’ 为固定写法。
3.工作流传参: 参数优先级
如果有空值 则 优先非空值。
本地参数>上游传递参数>全局参数。 ¥¥¥¥
4. 内置参数
system.biz.date 定时时间前一天 yyyyMMdd
system.biz.curdate 定时时间 yyyyMMdd
system.datetime 定时时间 yyyyMMddHHmmss
基础内置参数 不能调整格式。
衍生内置参数
自定义格式
$[yyyyMMdd] $[yyyy-MM-dd]
使用add_months() 函数
$[add_month(yyyyMMdd,12N)] 后N年
$[add_month(yyyyMMdd,-N)] 后N月
$[yyyyMMdd+7N] 后N周
$[yyyyMMdd+N] 后N天
$[yyyyMMdd+N/24] 后N小时
5.引用依赖资源。
指的是文件资源 Jar包
放在资源中心。
文件管理 /UDF 管理。
-
告警通知
邮箱开启SMTP 服务
QQ邮箱—QQ邮箱服务器—其他邮箱163服务器–
其他邮箱【SMTP,SMTP推,POP3拉】
需要给DS 准备一个邮箱 启用SMTP 协议
用于发邮件。POP3 用于接收邮件。
记录第三方 授权码。告警组。告警实例。
切换 管理员用户。
配置告警实例 25号端口。
告警实例需要位于告警组中。
一个告警组 有多个实例 多种方式。 -
工作流失败重跑
报错之后 找工作流实例。
可以重跑 或恢复失败。
2022-08-07-17:50
Apache Dolphin Scheduler
1.3.3 Version
架构说明
-
安装 去中心化 初始化
-
DS 资源中心 Spark 任务
-
操作Hive。 Hive 数据源。 连接Hive Server2 -->>>> 运行SQL 。
选择类型: 查询或者非查询类型
HiveServer2 3.1.2 存在HUG -
dataX 节点
可以配置为Json 文件。
定义参数 dt dn -
参数使用
系统参数。 ~ system.biz.date -
子节点使用
子节点 复用工作流。
spark 任务 + 复用DataX 的工作流 可以嵌套多个工作流。
DataX
概述
DataX3.0
https://www.bilibili.com/read/cv13759956
异构数据源 离线同步工具。
设计理念-- 插件式。
MySQL —>>>MySQL Reader ----FrameWork —>> HDFS Writer---->> HDFS
Reader。 数据采集模块 负责 采集数据源的数据 将数据发给Framework
Writer 数据写入模块 负责不断向Framework去数据 并将数据写入到目的端
Framework 用于连接reader和Writer 作为二者的数据传输通道 并处理缓冲 流控,并发,
数据转换等核心技术问题。
运行原理
- Job 单个作业的管理节点 负责数据清理 子任务划分 taskGroup 监控管理。
- Task 由Job 切分而来 时DataX 作业的最小单元 每一个Task 负责一部分数据的同步工作。
- Schedule:将Task组成了Task Group 单个Task Group的并发数量为 5
- TaskGroup : 负责启动Task
与Sqoop 的对比
Sqoop 默认4个Map任务。
DataX 可以打满带宽。
DataX3.0
前置 --Linux JDK 1.8+ Python 2.6.X
job.json json 模版。
plugin 中是各种数据源的依赖。
reader。 writer 。
有最终结果统计。
使用案例
stream 流–>>> 控制台
-r reader。-w writer
总条数 = channel* slice RecordCount 。
高可用配置:
hadoopConfig: 在Parameter中。
HDFS ---->>>> MySQL
hdfsreader -->> mysql Writer 写入的时候 不能写*
mysql writer 不需要写类型。
Oracle :
19C. 安装 // 图形化安装。
指定路径下有 netca 默认端口1521.
varchar2 。
从Oracle 到MySQL 到HDFS
OracleReader 里不要用* 业务库会发生变化。
Oracle JDBC ~。
MongoDB
基于分布式文件存储的开源数据库系统
内置GridFS
优缺点:
基础概念
文档索引
注意:
1.文档中的键值对 是有序的
2.MongoDB 区分类型和大小写
3.MongoDB 的文档 不能有重复的键。
4. 文档的键是字符串 除了少数情况 键可以使用任意的UTF-8 字符。
DataX MongoDB 导出到MySQL ,HDFS
27017 默认端口。 pgrep -f mongod
ps -ef|grep mongod| grep -v grep|awk ‘{print $2}’
SQL Server
MSSQL 微软的SQL
show database 不支持。
执行语句+go。
案例
SQL server —>>> HDFS
默认1433 端口
SQL Server Reader
DB2
IBM 的关系型数据库
instance---- db–schema----table
金融公司用的多。
server_dec .
切换到root 用户进行安装。 执行 db2_install
集群 需要安装 purescal
需要 db2inst1 db2fenc1 两个用户
list tables 所有的表结构
DB2—>>> MySQL /HDFS
DataX 优化。 执行流程源码分析
黄色 Job部分执行节点
蓝色 Task部分的执行阶段
绿色 框架执行阶段。
Reader---- Channel 的限速
入口类。com.alibaba.datax.core.Engine . ctrl+N 搜索类。
并发数的确认
byte record channel 。
切分了解。
reader 和writer 满足1:1 的关系。
调度:
确定组数。 分组算法。
轮询。
调度实现。
执行模式。—>> stand alone
利用线程池 执行。
数据传输。 限速的实现
速率过快 sleep 一会儿。
DataX 优化
1. 关键参数
➢ job.setting.speed.channel : channel 并发数
➢ job.setting.speed.record : 2 全局配置 channel 的 record 限速
➢ job.setting.speed.byte:全局配置 channel 的 byte 限速
➢ core.transport.channel.speed.record:单个 channel 的 record 限速
➢ core.transport.channel.speed.byte:单个 channel 的 byte 限速
2.优化:
1. 提升每个Channel 的速度
2. 提升DataX Job内的Channel 并发数
3. 配置全局Byte 限速及单Channel Byte 限速。
4. 配置全局Record限速 及单Channel Record 限速
5. 直接配置Channel :上面两种未设置 这个才会生效。
3. 提高JVM堆内存。4G—8G
4. 一般 不会OOM 采集数据。
Apache Sqoop
1.4.6。1与2 不兼容。 2不用于 生产。
安装,简单使用案例
RDBMS—>>>HDFS 导入
HDFS—>>>. MySQL. 导出
1全部导入
2 查询导入
单引号 and $CONDITIONS 保证数据的有序。
双引号 " and $CONDITIONS" 需要转义。
3 指定列。
columns 列名。
4 查询条件导入
where
query 和where 不能一起使用。
数据导入Hive
–hive-import, --hive-table --hive-overwrite
该过程分为两步. 会自动创建表。
第一步将数据导入HDFS 而后将数据迁移到Hive仓库 第一步的临时目录 是 /user/atguigu/表名
数据到HBase
相关参数
–columns --column-family --hbase-create-table --hbase-row-key
与Hbase 。1.3.1 不兼容 不能创建表 只支持 Hbase 1.0.1 之前版本自动建表。
导出数据
不支持Hbase 到MySQL
支持Hive/HDFS 到MySQL MySQL表没有 不会被自动创建。
脚本调用
–option-file。~文件。
常用命令和参数
StarRocks
分布式架构 MPP 数据库。
OLAP 多维分析
实时数据分析
高并发查询。
统一分析。
基本概念
FE
BE
Broker
StarRocksManager :StarRocks 的管理工具
Tablet StarRocks 中表的逻辑分片。 副本管理的基本单位。 每个表根据分区 和分桶的机制被划分成多个Tablet 存储在不同的BE节点。
version 1.19.1
部署StarRocks
starRocks 列式存储 和稀疏索引
列式存储。
维度列+ 指标列。
列前缀索引匹配。
表中 组织由 三部分组成
short key index表 1024 行 构成一个逻辑块 产生稀疏索引。
per-column data block 每一列数据按照64KB分块存储。 数据块作为单位单独编码压缩 也作为IO单位 整体写回设备或者读出。
Per-column cardinal index 每个列数据有各自的行号索引表 列的数据块 和行号索引项一一对应。 用数据行的行号查找行号索引表。
加速数据处理
预先聚合:
支持聚合模型
分区分桶:
多个Tablet 副本冗余存储在BE上
RollUp表索引:
稀疏索引提高效率
列级别的索引技术:
列级别Bloom Filter ZoneMap 通过数据范围快速过滤待查找值。可计算出满足一定条件的行。
starRocks 表模型 / 四种
明细模型
存放明细数据。
聚合模型
更新模型
主键模型
主键模型是更新模型的升级版
明细模型:
所有历史数据 不会进行聚合。
排序键 需要是建表的前几列。
聚合模型
会自动合并 不要看明细数据。
老数据不会被频繁修改。
更新模型
用户需要实时更新操作。频繁的插入 和更新。
指定唯一索引。 UNIQUE_KEY 。
主键模型
更新模型升级版本 更新模型 会进行明细合并 更好解决了行级的的更新操作。
1. 数据冷热特征 最近几天的数据才需要修改 老的冷数据很少需要修改
2. 大宽表 主键索引内存相对可控。
一个主键只存一条数据 新的会覆盖旧的。
更新模型存的数据量比主键模型大一些,主键模型占用比较少。
排序键和物化视图
排序键 必须要保证顺序。
排序键 符合MySQL 的索引规则。 缺少最佳 左前缀 规则 索引会失效。 符合前缀 拍序列 不能超过3列。字节数 不超过36字 节 不包含FLOAT/DOUBLE类型的列。
---- 物化视图
MVs。
使用场景:
固定维度的聚合分析 和对原始明细数据任意维度的分析。
BitMap 索引
需要对Filter 查询有明显加速效果。
存储体积很小。速度快。
布隆过滤器
多个哈希函数。 存在误判率。
只和in 和= 过滤查询有加速效果。
数据导入与查询
streamLoad
brokerLoad
异步导入。
Routine Load
例行导入方式。通过这种方式StarRocks 支持从Kafka 持续不断的 导入数据 并且支持通过SQL 控制导入任务的暂停 重启停止。
Kafka 集群 无认证或SSL方式认证。 version 0.10.0+
简单导数据逻辑
Spark Load?? 有点问题/?
Insert Into 导入
Flink Connector
StarRocks 连接Flink 。
DataX Writer
StarRocks Colacate Join
外部表
Hive /MySQL 。
MySQL 外部表。StarRocks 读取 同步
Hive外部表。 会获取分区元数据失败。---->>>
支持StarRocks 外部表和ES外部表。
StarRocks 数组的使用
ARRAY