不知不觉中,大家已经陪伴DataPipeline走过了3年时间。在这期间,得益于客户们的积极反馈和沟通,我们总结了一些日常工作中比较常见的问题,并基于这些问题进行了总结。

为避免突兀,我们会先从比较基础且通用的问题开始,进而陆续放出一些稍加复杂的问答,希望大家在接下来的日子里持续关注我们的更新~

Q1: DataPipeline支持的读取方式

A:DataPipeline在成立之初只有一种模式,只支持实时流同步,在我们看来这是未来的一种趋势。

但在后来发现,很多客户实际上有批量同步的需求。比如,银行在每天晚上可能会有一些月结、日结,证券公司也有类似的结算服务。基于一些历史原因,或出于对性能、数据库配置的考虑,可能有的数据库本身不能开change log。所以实际上并不是所有情况下都能从源端获取实时的流数据。

考虑到上述问题,我们认为一个产品在支撑数据融合过程中,必须能同时支撑批量和流式两种处理模式,且在产品里面出于性能和稳定性考虑提供不同的处理策略,这才是一个相对来说比较合理的基础架构。

详情参见:DataPipeline CTO陈肃:构建批流一体数据融合平台的一致性语义保证

Q2:目标端的连接方式是什么

A:对于关系型数据库,写入方式为JDBC,未来版本将通过文件加载的方式提高吞吐率。其它类型的目的地,根据具体类型各不相同。例如FTP目的地用的是FTP Client,Kafka目的地用的是Kafka Producer。

Q3:采集和写入能否对数据进行加密

A:如果是要对数据内容加密可以使用高级清洗。

Q4:DataPipeline安装部署模式

A:DataPipeline 产品是采用Docker容器的部署方式,支持Docker集群;支持虚拟环境(VMW)部署,但不推荐,DataPipeline正在研发支持非Docker部署。

Q5:DataPipeline是否支持图形化监控

A:DataPipeline支持读写速率、数据量、任务进度、错误队列、操作记录、表结构等图形化监控。

Q6:数据库日志保留策略多久合适

A:如,MySQL Binlog保留策略,建议保留日志策略>=3天。

Q7: 后续增量导入数据如何保证一致性

A:DataPipeline默认支持at least once同步机制,保证数据不会在同步过程中丢失。这适合源端有主键、目的地有主键去重能力的场景,例如关系型数据库到关系型数据库的同步。

如果类似Hive这样没有主键去重能力的目的地,DataPipeline支持开启任务级别的端到端一致性选项,通过多阶段提交协议来保证数据一致性。

Q8:监控报警一般在项目上如何使用

A:DataPipeline的数据任务有监控看板和报警两种方式,报警会发送到指定的邮箱,根据错误类型,可以选择重启或通知技术支持,DataPipeline会有工程师协助客户排查错误。

Q9:是否方便扩容

A:DataPipeline支持动态扩容,当集群资源紧张时,无需暂停现有任务,增加新节点后,即可以实现集群的扩容。

Q10:如果一条数据多次、频繁变化,DataPipeline如何保证数据的并行和顺序?

A:DataPipeline源端会将任务按照一定原则拆分为多个互不干扰的子任务进行并行执行。例如:在JDBC源读取场景下,如果任务包括多张表,每个表是由一个独立线程进行顺序读取的,线程并行度可以在任务属性中进行设置。

为了保证顺序写入和读取,默认每个单独子任务会创建一个独立的topic,设置一个分区,这样目标端消费的时候,同一个topic只有一个consumer在进行消费,从而保证消费的顺序性。如果可以接受非顺序消费,也可以为一个topic创建多个分区,这样目的端可以更好地利用Kafka的并行能力提高吞吐量。

本篇集中介绍了10种问题答疑,如果你在工作中遇到了类似的问题,或者对一些答疑心存疑惑,欢迎与我们交流。

Q&A系列一:DataPipeline常见问题回答的更多相关文章

  1. HTTP/2 常见问题回答

    常见问题 为什么修订HTTP? HTTP/1.1已经很好的服务Web超过15个年头,但它的劣势开始显现. 载入一个Web页面比之前占用更多的资源(详情可见HTTP压缩页大小统计),有效的载入这些资源很 ...

  2. arcgis for android常见问题回答

    Q:arcgis for android最新版本是多少?(2014-7-18) Arcgis for android 10.2.3 sdk 百度盘下载地址:http://pan.baidu.com/s ...

  3. Nexus5如何手动OTA更新系统到4.4.3、4.4.4及常见问题回答

    这里将记录一套行之有效的Nexus5手动升级方法,以帮助看见这篇文章的朋友成功将手头的Nexus5升级到4.4.4. 因为谷歌服务器的事,我的这次OTA更新起来走了很多弯路.我试过挂VPN等待系统来更 ...

  4. Q:关于栈的常见问题

     对于栈,一个常见的问题是:给定一个序列a0,a1,a2,a3...an依次顺序入栈,在元素顺序入栈的过程中,栈中任意一个元素可以选择是否出栈,则其共有几种出栈的可能,给定的出栈序列中,哪种是不可能的 ...

  5. Docker入门系列5:常见问题小结

    重启容器 再次运行容器: docker start container_id 然后 docker attach container_id 就可以继续下命令了. [编辑]命名 --name [编辑]端口 ...

  6. linux系列之-—03 常见问题

    问题1 描述:Linux如何查看JDK的安装路径 问题2 描述:执行shell脚本时报错,错误信息为:bash: line 19: jar: command not found 原因:因为在系统环境变 ...

  7. ENS中文文档系列之三 [ ENS常见问题 ]

    原文地址:https://ensuser.com/docs/frequently-asked-questions.html更多最新信息,请前往 ENS 中文服务站点:ENSUser 关于 ENS 注册 ...

  8. 转移iOS App常见问题和回答

    打算转移公司的app,做下转移的记录 怎样转移app官方的一个视频:http://v.youku.com/v_show/id_XNjI0MjQxMzI0.html 以下是apple官方转移常见问题回答 ...

  9. DataPipeline CTO陈肃:从ETL到ELT,AI时代数据集成的问题与解决方案

    引言:2018年7月25日,DataPipeline CTO陈肃在第一期公开课上作了题为<从ETL到ELT,AI时代数据集成的问题与解决方案>的分享,本文根据陈肃分享内容整理而成. 大家好 ...

随机推荐

  1. springmvc使用javabean作为请求参数

    1  首先写两个javabean对象  person 和 address 代码如下.两个类之间的关系如代码中 package cn.bean.demo.bo; public class Person ...

  2. hdu 4430 Yukari's Birthday (简单数学 + 二分)

    Problem - 4430 题意是,给出蜡烛的数量,要求求出r和k,r是蜡烛的层数,k是每一层蜡烛数目的底数. 开始的时候,没有看清题目,其实中间的那根蜡烛是可放可不放的.假设放置中间的那根蜡烛,就 ...

  3. H3C 基本ACL部署位置示例

  4. html(二)登陆页面

    今天开始正常上课学习HTML+CSS+JSP  嗯 前两个没讲直接上手! 老师也是很认同我们的呢~ 这是第一个案例 做一个登陆页面,并利用post提交表单 传值到另一个界面接收值. 1.设置值: &l ...

  5. es6笔记 day2---解构赋值

    解构赋值 这个知识点非常有用,特别是在做数据交互的时候(Ajax).那么它是怎么使用的呢? 它就是这么使用的↓ let [a,b,c] = [12,5,6];  这就是解构赋值 注意:左右两边,结构格 ...

  6. 2018-11-9-win2d-CanvasCommandList-使用方法

    title author date CreateTime categories win2d CanvasCommandList 使用方法 lindexi 2018-11-9 20:8:4 +0800 ...

  7. location对象相关

    JS是由DOM(文档对象模型).BOM(浏览器对象模型).以及ECMA组成,而location对象是BOM中的一个非常重要的对象,所有关于地址栏信息的内容都在这里.了解location对象之前让我们先 ...

  8. koa2入门--03.koa中间件以及中间件执行流程

    //中间件:先访问app的中间件的执行顺序类似嵌套函数,由外到内,再由内到外 //应用级中间件 const koa = require('koa'); var router = require('ko ...

  9. Hbase概念原理扫盲

    一.Hbase简介 1.什么是Hbase Hbase的原型是google的BigTable论文,收到了该论文思想的启发,目前作为hadoop的子项目来开发维护,用于支持结构化的数据存储. Hbase是 ...

  10. Vue CLI 创建项目

    使用命令创建VUE项目 运行以下命令[vue create [项目名]]来创建一个新项目: vue create hello-world 警告 如果你在 Windows 上通过 minTTY 使用 G ...