hdata datax交流总结
2024-10-11 10:14:28
http://blog.csdn.net/zlm838687/article/details/74781522
hdata datax交流总结
今天和阿里云的同学就数据同步做了简要的交流,下面就交流的内容做一个总结
分片相关
- datax目前可以支持单机(standalone)和集群模式(cluster).目前开源的是单机版本。无论是单机版本还集群版本,分片都是通过datax进行。集群模式会把分片包装的taskGroup重新发给datax service, datax service会把新的taskGroup重新发给其他机器执行
- 根据算出的最大值、最小值和通道个数(相当于hdata的线程个数),可以计算出步长(step), 然后根据step,计算出各个分片的长度。
- datax split目前仅支持单一主键,且主键类型是int或者varchar类型
- 执行reader和writer最细力度的切分。需要注意到是,writer的切分结果要参照readre的结果,要达到切分后的结果数目相等,才能满足1:1的通道模型。所以这里可以将reader和writer的配置整合到一起。为了避免顺序给读写带来的长尾效应,将整合的结果shuffle掉。
- hbase的分片是通过region来实现的
- odps(他们的hadoop环境)是通过offset来实现的
- 分库分表直接在表的层面划分,各个表之间没有关系。我们交流的团队目前是没有使用canal增量同步数据的
- datax没有断点续传,分布式一个错,其他都错。datax如果某一个task失败会有重试,我们hdata目前还没有。后面hdata可以改进下,可以减少整个任务重试的成本。
流控
- datax的流控不会出现尖峰的情况。他们内部会把每次sleep的时间调整的很短。具体sleep的时间他们是根据当前流量,超出峰值的流量等因素,根据他们内部算法实现的。我们自己的hdata早前都是固定sleep一秒的, 所以会出现峰值的情况。
- 数据源的流控超过了就不再下发任务
开发平台相关
- 多租户,主账号和子账号,有多个角色(开发,运维,部署,方可,项目管理员),会有测试,预发等。
- SQL的补全是每个输入会有ajax请求到后端(odps上)做语法分析. odps会根据语法树找到和用户最匹配的sql
总结
我们做的好的地方
- datax目前的进度汇报是基于task级别的,但是task级别的进度不能真正反映整个job的进度。我们目前hdata是进程级别的。可以真正的看到这个任务total read write completedPercent的情况
- datax的限流虽然把sleep的间隔调整为毫秒级别,但是个人觉得还是会出现短暂的分值情况。我们目前的限流首先会在数据库级别做一下限流,降低数据库的压力,减少sql killer发送的频率。还有我们目前限流的算法采用类似tcp拥堵的滑动窗口算法,快速下降慢速恢复。可以将流量控制在一个平稳的数值范围内。
值的学习借鉴的地方
- hdata的分布式。大概想法是分片还是由hdata完成,然后hdata把分片的结果告诉调度,由调度进行二次分发到不同的hdata机器上进行执行
- hdata可以增加线程级别的重试。减少重跑出错任务的代价
- 当前hdata支持容忍错误的条数,不支持容忍错误百分比。后期需要把这个功能坐上。
- hdata的智能分析还不够强大。当前正在做。
- 数加的测试环境的数据都是读取线上的数据的,只不过写出的时候区分线上环境还是测试环境。我们后面做测试环境可以考虑下。
最新文章
- css3复杂选择器+内容生成+Css Hack
- php 总结第一篇(望大家补充!谢谢)
- NOIP2006金明的预算方案[DP 有依赖的背包问题]
- VS2013快捷键大全
- Hbase step by step 完全分布式安装
- 真实赛车3,SPEEDRUSH TV 第3季,第3阶段(第3天),直线加速赛
- ME21N/ME22N/ME23N屏幕增强BADI ME_GUI_PO_CUST
- Python 类 setattr、getattr、hasattr 的使用
- MySQL存储过程详解 mysql 存储过程
- 查询两个日期(时间)以内的数据,between and 或 and 连>;= <;=,to_date()
- Spring MVC返回对象JSON
- Audio Capture 录音
- AAM(Active Appearance Model)算法介绍
- 第9课_3_db库安装
- Flink资料(3)-- Flink一般架构和处理模型
- Python学习笔记整理总结【语言基础篇】
- Python 高级特性之:生成器(generator)和迭代器(Iterator)
- 关于PHP 缓冲区: ob_star , ob_get_contents
- swift--动画效果
- CodeForces 731D 80-th Level Archeology
热门文章
- 华中农业大学第四届程序设计大赛网络同步赛 J
- cpj-swagger分别整合struts2、spring mvc、servlet
- Fiddler配置代理hosts的方法
- [ CodeVS冲杯之路 ] P3116
- centos 7 编译mod_security
- MFC/C++/C中字符类型CString, int, string, char*之间的转换
- Xen虚拟化技术中PV和HVM的区别
- Charles安装
- FTP-Filezilla首次配置
- 纯HTML+CSS写出一颗会飘动的树,有没有惊艳到你呢?