# DataPipeline v2.7.0版本介绍
**2020年1月9日**
此次发布的2.7版本在进一步优化产品底层数据处理逻辑的同时更加注重提升用户在数据融合任务的日常管理、运行监控及资源分配等管理方面的功能增强与优化,力求帮助大家更为直观、便捷、稳定的管理数据融合任务,提升系统的易用性与稳定性。
*****
## :-: **一、新增功能**
#### **1. 在待处理列表中查看或配置重要任务、故障任务、待完善任务、性能关注任务**
详情见:[数据任务监控](数据任务同步.md)
#### **功能背景:**
对于大多数的数据工程师来说,每天需要配置、管理、监控的任务数以百计,任务的重要程度、时效性要求与性能要求也都千差万别,其中既包括为线上产品提供实时计算数据的任务,也有数据备份等优先级较低的任务。同时,为了应对不停变化的市场与业务需求,新的数据融合任务需求也会连续不断的涌现,数据工程师在保证现有任务稳定运行的同时,还需不断地新增数据任务。
大量不同类型、不同状态的任务平铺在客户端首页,导致重要任务难以得到优先关注,待完善任务可能被遗漏,性能较差的任务无法被发现,查找任务、管理任务、处理问题占用了较多工作时间。
新版本上线后,用户可以对重要任务添加标识,平台也会对任务按照重要程度,配置完成情况及运行状态、运行效率进行评估及管理,用户可以通过待处理列表非常直观地看到所关注的重要任务、运行出现问题的故障任务、配置未完成待完善的任务及性能较低需要关注的任务,帮助数据工程师在日常任务监控与新需求处理中提高效率,同时对运行效率有直观的了解,保障业务连续性。
#### **功能详情:**
1. 重要任务
工作事务通常带有自身的优先级属性,数据同步任务亦如此。针对重要任务,DataPipeline提供星标设置,于主页优先展示。用户可实时关注重要任务状态,保证重要任务稳定运行。
(2)故障任务
集中展示出现故障的任务,保障问题不被遗漏,任务故障处理全面有序。
(3)非激活状态
集中展示处于非激活状态的任务,明确列示需要进一步完善配置或需要修改配置的任务,保证数据工程师的任务配置工作全面有序。
(4)性能关注
性能关注部分会根据系统对任务效率评估分别展示传输速率较低的10个批量任务和实时任务,通过查看性能关注,可以及时发现运行状态不良的任务,提前做出处理,防止由于性能问题导致更严重的问题发生。

#### **2.可按照项目对任务进行分组管理**
详情见:[数据任务分组](chapter1/数据任务分组.md)
#### **功能背景:**
DataPipeline在之前的版本中帮助用户实现了多种来源,不同结构数据的同步处理。但随着产品不断被深度使用,系统用户和数据任务数量的不断增加,多个项目的数据融合任务混杂在一起,导致任务配置、监控及管理都十分不方便。
我们了解到,一个数据工程师可能同时需要管理多个项目,每个项目可能包含数十个上百个数据融合任务,在不能按照项目对数据融合任务进行分组管理的时候,只能凭借记忆通过名称、数据节点等信息进行搜索,耗时费力。
因此,我们新增了根据项目进行任务分组的功能,用户可以根据任务所属项目,对上百个任务进行分组管理,大大提高了效率。
#### **功能详情:**
1. 支持通过自定义创建项目,对任务进行分组;
2. 支持通过勾选任务,改变多个任务的任务分组。

#### **3.可以为任务配置特定资源组**
详情见:[数据源资源组设置](数据源资源组设置.md)
[数据目的地资源组设置](数据目的地资源组设置.md)
#### **功能背景:**
虽然DataPipeline数据融合产品基于并行计算框架,从基础架构层面支持任务级高可用,但在资源组管理方面一直未对用户开放,用户在使用之前版本的DataPipeline时,所有数据任务均在一个默认资源组中运行,无法根据任务的重要程度来分配任务运行资源。
这就要求用户只能针对重要任务配置单独的集群以保证任务的稳定、高效运行。这种方式在实际操作过程中存在很多客观限制,如系统资源申请困难,成本预算控制等,也给我们的数据工程师用户们造成了很大的困扰。
因此我们决定在新版本中开放系统资源组配置和分配功能,同时计划在未来的版本中开放动态资源调配功能。
例如,当前系统资源为一台16C64G的服务器,在无法分配资源组时任务运行状态如下:

资源组配置开放以后,用户可以配置一个重要任务资源组和一个一般任务资源组,任务运行状态如下:

重要任务相较于其他普通任务虽然启动时间较晚。但由于被分配在独立的资源组中,仍然可以保证有足够的资源保障任务平稳运行。
#### **功能详情:**
1. 资源组配置
在部署DataPipeline时,通过修改配置文件,可以将数据源端/目的地端的服务器资源划分为多个资源组,实现业务资源组解耦。
资源组配置文件路径:/data/datapipeline/dpconfig/resource\_group\_config.json
源端与目的地端均有两个资源组的配置文件,资源组配置文件样例如下:
[TOC]
配置详细说明如下:

注意:修改配置文件后需要重启服务使资源组配置生效。
2. 为任务的读取与写入分配资源组
用户在任务设置过程中可以针对每个任务的数据读取和数据写入分别选择支撑任务运行的资源组

#
****
## :-: **二、优化功能**
#### **1\. 数据传输消息队列粒度拆分优化**
#### **功能背景:**
DataPipeline为更好地支持高效数据融合任务,对数据传输消息队列粒度进行了进一步的拆分优化。
#### **功能详情:**
首先,我们来看一下数据在DataPipeline是如何流转的:

在此需求的用户场景中,源端数据节点为DB1,DB1中包含三张数据表分别为T1、T2和T3。目的地端数据节点为DB2,DB2中包含三张数据表分别为T4、T5和T6。
数据融合要求为,将T1、T2、T3中的数据进行合并后写入到T4中,将T2中的数据同步到T5中,将T3中的数据同步到T6中。
在之前的处理逻辑中(如图1),按照目的地写入要求的粒度来建立消息队列,即将T1、T2、T3的数据写入1个消息队列进行缓存,也就是图1中的消息队列1。

:-: 图1
该缓存机制可以很好地支持T4的数据同步,由于数据进入了1个消息队列,所以在同步T5、T6的数据时需要将缓存中的T1、T2、T3数据进行拆分,处理效率较低。
DataPipeline针对数据传输中消息队列缓存粒度进行了拆分优化(如图2),按照数据源数据表的粒度,进行消息队列拆分,即将数据源T1、T2、T3的数据分别写入三个消息队列进行缓存。

:-: 图2
同步至T4的数据会读取T1、T2、T3分别对应的消息队列,进行合并后写入合并消息队列,再供T4对应的消费单元进行消费,同步至T5、T6的任务可以分别读取T2与T3对应的消息队列进行数据写入。
这样,我们便可同时支持源端多表合一同步与其中一张表的单独同步。由于拆分多个并发来读取数据,T2至T5、T3至T6的数据同步速率会明显提升。而对于将T1、T2、T3的数据进行合并同步至T4的流程,虽然添加了一步消息队列内部的合并操作,但速率影响较小,可以较好地支持上述场景。
#### **2\. 支持在任一数据同步任务中灵活修改数据源/目的地配置信息**
通过支持在任一数据同步任务中灵活修改数据源/目的地配置信息,可使数据节点配置在全局生效,提升任务配置效率。

除数据源/目的地类型之外均可修改,当数据源有其他任务正在运行时不允许修改,修改后数据源/目的地节点的配置即全局生效
#
****
#
## :-: **三、其他功能增强与问题修复**
除上述功能之外,DataPipeline还分别从以下几方面对产品进行了功能增强与问题修复:
1. 支持对用户注册信息中邮箱的修改
2. 为数据任务页面复制、编辑、删除等按钮添加文字注释
3. 优化线程实时任务心跳,支撑运维监控
4. 优化元数据查询SQL和相关逻辑,修复索引查询
5. Hive数据源重构优化
6. Hive Kerberos的验证优化
7. 优化由于JDBC连接造成的任务卡顿问题
DataPipeline的每一次版本迭代都凝聚了团队对企业数据管理需求的深入思考和积极探索,希望在这个特殊时期,新版本能够切实帮助大家更敏捷高效地融合数据、使用数据、分析数据。
- DataPipeline产品手册
- 产品更新日志
- v2.7.0 版本介绍
- v2.6.5 版本介绍
- v2.6.0 版本介绍
- v2.5.5 版本介绍
- v2.5.0 版本介绍
- v2.4.5 版本介绍
- v2.4.1 版本介绍
- v2.4.0 版本介绍
- v2.3 版本介绍
- v2.2.5 版本介绍
- v2.2 版本介绍
- v2.1 版本介绍
- v2.0.5 版本介绍
- v2.0 版本介绍
- v2.0 以前版本介绍
- 环境和数据库的部署要求
- Mysql - BINLOG配置方法
- Oracle - LOGMINER配置方法
- SQL Server - Change Tracking配置方法
- Postgre SQL-decoderbufs配置方法
- Postgre SQL-wal2json配置方法
- 常见场景操作
- 场景一:实时同步异构数据库数据(例:MySQL到Oracle)
- 场景二:批量同步异构数据库数据(例:SQL Server到MySQL)
- 场景三:API数据同步到关系型数据库(例:API到MySQL)
- 场景四:Hive数据同步到关系型数据库(例:Hive到SQLServer)
- 场景五:关系型数据库数据同步到Hive(例:Oracle到Hive为例)
- 场景六:Kafka数据同步到关系型数据(例:Kafka到MySQL为例)
- 场景七:一对多场景介绍
- 产品入门
- 数据同步任务
- 创建数据同步
- 配置数据源&数据目的地
- 配置数据源
- 配置MySQL数据源
- 配置Oracle数据源
- 配置SQL Server数据源
- 配置PostgreSQL数据源
- 配置FTP数据源
- 配置S3数据源
- 配置API数据源
- 配置Kafka数据源
- 配置Hive数据源
- 配置阿里云 OSS数据源
- 配置腾讯云TDSQL数据源
- 配置自定义数据源
- 配置数据目的地
- 配置MySQL数据目的地
- 配置Oracle数据目的地
- 配置SQL Server数据目的地
- 配置Greenplum数据目的地
- 配置Redshift数据目的地
- 配置TIDB数据目的地
- 配置FTP数据目的地
- 配置HBase数据目的地
- 配置HDFS数据目的地
- 配置Hive数据目的地
- 配置AnalyticDB for PostgreSQL数据目的地
- 配置Kafka数据目的地
- 数据同步的任务设置
- 读取设置
- 数据源资源组设置
- 批量功能
- SQL类型数据源读取条件设置
- 分数据源读取设置
- MySQL读取设置
- Oracle读取设置
- SQLServer读取设置
- PostgreSQL读取设置
- FTP文件系统读取设置
- S3文件系统读取设置
- Hive读取设置
- Kafka读取设置
- 阿里云OSS读取设置
- API读取设置
- 腾讯云TDSQL读取设置
- Hive数据源读取分区设置
- 其他设置
- 错误队列设置
- 邮件通知设置
- 任务分组设置
- 写入设置
- 批量功能
- 设置清洗脚本
- 数据目的地资源组设置
- 数据目的地设置
- 子任务设置
- 数据源变化设置
- 写入端数据一致性
- 批量读取后,先写入到临时表,再转存到实际表
- 高级设置
- 子任务设置
- Hive分区设置
- Column family 设置
- 数据同步任务管理
- 数据任务监控
- 重要任务
- 故障任务
- 非激活状态
- 性能关注
- 数据任务分组
- 管理数据同步
- 复制功能
- 回滚功能
- 重新同步功能
- 错误队列
- 消息列表
- 文件同步任务
- 创建文件同步
- 配置文件源
- 配置S3文件源
- 配置FTP文件源
- 配置文件目的地
- 配置HDFS文件目的地
- 文件同步的任务设置
- 任务流
- 核心功能介绍
- 新建任务流
- 配置核心组件
- 配置开始任务组件
- 配置数据任务组件
- 配置远程命令执行组件
- 配置延时器组件
- 配置权限设置
- 激活任务流
- 元数据管理
- 查看总览
- 搜索页
- 详情页
- 系统设置
- 数据任务
- 元数据管理
- 用户管理
- 常见问题
- 部署要求
- Docker安装的集群部署方式?
- DataPipeline的并发任务是线程还是进程?
- 分布式架构指的是什么样的框架?
- 生产环境配置推荐及回答?
- DataPipeline的服务是统一管理还是私有化部署?若是私有化部署若要升级怎么操作?
- DataPipeline的Kafka如果与客户目前使用的Kafka版本不一样,是否需要适配?
- 请说明产品的HA和容灾方案 ?
- DataPipeline有多少独立的服务?各容器的作用是什么?
- 在从节点上装mysql,对单表导入1000万数据对任务有影响吗?
- 数据传输
- 数据源/数据目的地
- 基本要求
- 数据源或目的地可以重复使用吗?
- 数据源多个表是否可以写到目的地一张表?
- 数据源或目的地连接失败怎么办?
- 数据源
- MySQL
- DataPieline如何应对Mysql数据库表和字段名称大小写不敏感问题?
- DataPipeline Mysql数据源的实时处理模式下,暂时无法读取哪些字段类型?
- Mysql数据源实时处理模式下,暂不支持那些语句操作的同步?
- Oracle
- Oracle实时模式为LogMiner时,为什么还需要设置读取频率?
- SQL Server
- SQL Server数据源读取方式选择Change Tracking时需要注意什么?
- SQL Server实时模式为Change Tracking时,为什么还需要设置读取频率?
- PostgreSQL
- Hive
- Hive数据源支持哪些文件格式?
- Kafka
- FTP文件系统
- FTP数据源CSV静态表结构时,用户为什么需要确认首行是否为字段名称?
- FTP数据源静态表结构和动态表结构的区别是什么?
- FTP源的文件在不断写入的情况下,DataPipeline的读取与写入的模式是怎样的?
- FTP数据源支持哪些编码方式?
- S3文件系统
- 阿里云OSS文件系统
- API
- 腾讯云TDSQL
- 数据目的地
- MySQL目的地常见问题
- 时区问题需要注意什么?
- SQL Server目的地常见问题
- 行级的物理删除,使用Change Tracking的方式,是否获取的到?DataPipeline会如何处理这类的数据?
- 数据源实时模式是否可以同步视图?
- Oracle目的地常见问题
- TiDB目的地常见问题
- 目的地TIDB同步表时,需要注意什么?
- Redshift目的地常见问题
- Redshift 并发数设置是50,DataPipeline对100个表并发插入的方案?对Redshift 性能的影响?DataPipeline对大数据量并发插入Redshift 的处理方式?
- Hive目的地常见问题
- 如何避免Hive目的地出现小文件问题?
- DataPipeline同步数据到Hive目的地表时,数据源发生变化会怎么样?
- 我们目前对已做好Hive分区逻辑的目的地,是不是不支持继续往里写?只能写新表?
- 配置Hive目的地是需要注意哪些?
- Hive目的地时字段转换需要注意哪些问题?
- GreenPlum目的地常见问题
- Kafka目的地常见问题
- kafka目的地支持设置新的分区吗?
- 多个表结构不一致的表,可以同步至kafka的同一个topic吗?
- HDFS目的地常见问题
- FTP文件系统目的地常见问题
- 目的地FTP时,我们现在是按什么逻辑创建文件的?
- AnalyticDB for PostgreSQL目的地常见问题
- Hbase目的地常见问题
- 目的地常见问题
- 各个数据目的地的写入方式分别是采用什么形式?
- DataPipeline支持的数据库的目标端的连接方式是什么?
- DataPipeline支持的目标端冲突数据处理机制是什么?
- 任务设置
- 读取模式相关问题
- 任务设置中读取频率的实现原理是什么样的?
- 采用实时同步的情况,新建同步任务时,源端的数据表有大量的存量数据,如何通过产品实现数据同步的一致性的?
- 定时批量清目标表数据的逻辑是什么样的?
- 数据源端基于日志的实时模式,是源库推送还是我们做捕获?
- 关系型数据如MySQL,如果出现大量的数据修改,BinLog日志如何抓取,如何实现及时的消费?
- 读取与写入的速率限制是按照任务还是按照表?
- 我们的无侵入性是如何实现的?是完全无侵入性,还是侵入性很小?是否无侵入性就意味着源端服务器没有访问请求的压力,那目的端写入是否还存在压力?
- 动态限速的策略是什么?
- 读写一致性的逻辑是什么?
- v2.6版本增量的逻辑如何实现?
- 重新同步策略问题
- 如果任务激活后进行重新同步,目的地数据会清空吗?
- 读取设置
- 如何设置数据读取条件where语句?有哪些注意事项?
- 用户选择实时模式时,选表时发现有一些表置灰不能同步要想同步这些表该怎么办?
- 同步完成后暂停,取消表后又新加入此表,DataPipeline对于此表的处理策略是什么样的?
- 写入设置
- 表和字段问题
- 目的地表名称和字段名称最长字符长度有什么特定限制吗?以及表名称和字段名称的输入规则要求是什么?
- 同步数据到异构数据库,字段类型会有变化吗?
- 表结构中的精度和标度是什么意思?
- DataPipeline所支持的不同数据类型有哪些?kafka schema的数据类型和不同库间的数据库转换规则?
- 数据源端支持哪些字符集类型?
- Hive作为目的地表需要注意什么?
- Hive作为数据源且格式为parquet时需要注意什么?
- 如何新增一个字段?
- 主键相关问题
- 无主键的表的同步逻辑是怎样的?
- 选择增量识别为主键,如何保证源端和目标的数据一致性呢,如果该记录有修改,系统是怎么处理的?
- 数据目的地ODS有大量无主键表,同步时DataPipeline是如何处理的?
- 表结构变化问题
- 任务激活前后,数据源变化表结构变化有什么不同?
- 当数据源表结构更新时DataPipeline是如何处理的?
- 如果目的地端已经存在了数据库表,但表结构不相同,我们能否将数据写入到该表?
- DataPipeline是否支持将不同的数据表(在不同的数据库中,但是表结构一致,同时有主键和唯一性识别的字段),导入同一个目的端表?
- 管理数据同步
- 基本概念
- 错误通知是什么?
- 错误队列是什么?
- 哪些数据错误会进入错误队列?
- 请简述产品支持的目标端冲突数据处理机制?
- 错误队列里的原始数据是指源端读取的原始数据还是说经过清洗规则后的数据?
- 激活任务后,有哪些参数可以修改?
- 同步状态
- 部分表已读取已写入等都为0,但完成进度为100%?
- 任务详情页中的数据读写量具体含义是?为什么有时候还会减少?
- 如何去查看FTP源和FTP文件中的文件有没有同步完成?
- 数据任务激活后是不允许修改任何设置吗?
- 激活任务后,数据百分比为什么会往回条,如:从99% 跳到30%
- 同步逻辑
- 自动重启逻辑是怎样的?
- 目前数据同步的暂停重启策略是什么样的?暂停和重启后是如何读取和写入数据的?
- 目前进行数据任务的时候,读取速率远大于写入速率,其中,已读取且还未写入的数据会暂时存储在Kafka上,但是由于Kafka存储空间有限,超出后容易造成数据的丢失,这怎么办?
- 如果一条数据多次、频繁变化,在DataPipeline产品侧如何保证数据的并行和保序是如何保证的?
- 用户导入数据后,hdfs认证机制,数据哪些用户可以使用,用户数据安全如何确保?
- 请简述目标端性能可管理性(可提供的性能监控、分析、调优手段等)
- DataPipeline是否支持远程抽取数据?
- 如果一条数据多次、频繁变化,在DataPipeline产品侧如何保证数据的并行和保序是如何保证的?
- 产品到期问题
- 产品使用期限到期所有任务都会被暂停任务,那么如何提前获知产品使用期限是否到期以避免任务被暂停?
- 实际场景中,目的地服务器每周可能会有aws升级,需要暂停服务器,DataPipeline有没有对应的方案能够满足?
- 任务报错
- redis连接异常任务暂停了怎么办?
- 文件传输
- FTP文件源同步整个文件时是如何同步的?
- 任务流
- 如何使用远程命令执行脚本来调取另外一个任务流?
- 任务流开启状态下,任务此时关闭掉任务流,正在同步的组件任务的处理逻辑是什么样的?
- 任务流中上游组件有多个组件任务时,上游任务全部完成才能开启下游任务吗?
- 任务既连了开始键,又配置了依赖,执行逻辑会是什么样的?
- 任务流中新建任务为何只有读取方式为增量识别字段,没有binlog?
- 任务监控
- 什么样的实时传输任务会在性能关注中显示?
