mysql变更数据的捕获和入库
问题:涉及状态的信息,mysql中是update的,缺少中间状态的记录。数据分析中需要这部分数据。
思路:后端服务通过监控某张表的某个字段,根据mysql的binlog文件,还原数据,发送到kafka。我们消费kafka中的数据,最终在hive的ods层形成表更数据表。
方案设计:
- java多线程消费kafka数据直接写入hdfs
问题:
(1)会在hdfs形成大量小文件
(2) 要监控java程序,维护kafka偏移量等等 - spark streaming程序消费kafka实时写入hdfs
问题:
(1)想要支持断点续传,要自己维护kafka的偏移量
(2)线上环境spark环境资源比较吃紧,spark streaming会持续占用较多资源 - 每天定时跑批量spark任务,读取kafka,写入hbase,hive上建立hbase映射表
原因:
(1)目前配置的hbase重复写入同一条数据会覆盖前一条,如果flume挂掉,任务可以重跑
(2)可以挑选晚上资源比较充足的时候跑
问题:
(1)kafka中数据是持续写入的,所以spark程序不会自动停止,要手动停掉任务
(2) 数据写在hbase中,hive的映射表实际读取的还是hbase的数据。所以使用时,最好将数据抽到hive中 - 通过flume消费kafka数据,写入hdfs
最终选择这个方案,因为flume占用资源较少,实时处理的方式也能减少对机器的压力
并且flume支持check point kafka的偏移量被记录在制定的文件中
方案4中需要注意的问题:
- 线上新的cdh中,缺少flume组件,需要刘亚萌配合
- 状态变更最多的sale表和balance表每天会有上千万表更记录,需要对集群的压力测试
- 由于需要用到flume的check point来支持断点续传,此种模式要将kafka的channel选为文件模式,将缓存数据存到磁盘。
缓存文件有两部分,一部分是记录的偏移量,一部分是缓存到磁盘的实际数据,当batch.size达到我们设定的条数时,
sink将开始数据写到hdfs中。
(1)要考虑缓存占用的磁盘大小
(2)要考虑hdfs小文件问题。
因此要选择合适的batchd.size(数据条数)。尽量使缓存数据大于100m小于128m,让写到hdfs的每个文件和block大小相近。 - 数据写入hdfs后,需要通过脚本增加hive表的分区
待做:
(1)调研flume使用snappy压缩格式传输
(2)用双11的数据测试,选择agent个数
(如所有topic使用一个agent,每个库使用一个agent,每张表使用一个agent)
(3)设定合理的batch size(如50000...)
当然最好可以让上游给我们提供文件,每份文件写到一个日期目录下,这样是最简单的方案。
mysql变更数据的捕获和入库的更多相关文章
- SQL Server 变更数据捕获(CDC)监控表数据
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现过程(Realization) 补充说明(Addon) 参考文献(References) ...
- SQL Server 变更数据捕获(CDC)
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/字段/对象更改 概述 变更数据捕获用于捕获应用到 SQL Server 表中的插入.更新和删除活动,并以易于使用的关系格式提供这些 ...
- SQL Server 2008中新增的 1.变更数据捕获(CDC) 和 2.更改跟踪
概述 1.变更数据捕获(CDC) 每一次的数据操作都会记录下来 2.更改跟踪 只会记录最新一条记录 以上两种的区别: http://blog.csdn.n ...
- SQL Server 2008中新增的变更数据捕获(CDC)和更改跟踪
来源:http://www.cnblogs.com/downmoon/archive/2012/04/10/2439462.html 本文主要介绍SQL Server中记录数据变更的四个方法:触发器 ...
- CDC变更数据捕获
CDC变更数据捕获 (2013-03-20 15:25:52) 分类: SQL SQL Server中记录数据变更的四个方法:触发器.Output子句.变更数据捕获(Change Data Cap ...
- SqlServer 2014该日志未截断,因为其开始处的记录是挂起的复制操作或变更数据捕获
环境:AlwaysOn集群 操作系统:Windows Server 2008 R2 数据库: SQL Server 2014 错误提示:“该日志未截断,因为其开始处的记录是挂起的复制操作或变更数据捕获 ...
- Mysql高手系列 - 第27篇:mysql如何确保数据不丢失的?我们借鉴这种设计思想实现热点账户高并发设计及跨库转账问题
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 欢迎大家加我微信itsoku一起交流java.算法.数据库相关技术. 这是Mysql系列第27篇. 本篇文章我们先来 ...
- 二十七、mysql如何确保数据不丢失?有几点值得我们借鉴
本篇文章我们先来看一下mysql是如何确保数据不丢失的,通过本文我们可以了解mysql内部确保数据不丢失的原理,学习里面优秀的设计要点,然后我们再借鉴这些优秀的设计要点进行实践应用,加深理解. 预备知 ...
- 删除MySQL重复数据
删除MySQL重复数据 项目背景 在最近做的一个linux性能采集项目中,发现线程的程序入库很慢,再仔细定位,发现数据库里面很多冗余数据.因为在采集中,对于同一台设备,同一个时间点应该只有一个数据,然 ...
随机推荐
- linux 使用笔记3
解决linux下打开txt乱码问题 在Linux下要阅读windows生成的txt文件,需要通过iconv进行字符转化 iconv -f gb2312 -t utf8 ./读书笔记.txt > ...
- Python编程笔记(第二篇)二进制、字符编码、数据类型
一.二进制 bin() 在python中可以用bin()内置函数获取一个十进制的数的二进制 计算机容量单位 8bit = 1 bytes 字节,最小的存储单位,1bytes缩写为1B 1KB = 10 ...
- js、css、img等浏览器缓存问题的2种解决方案
转:http://www.jb51.net/article/42339.htm 浏览器缓存的意义在于提高了执行效率,但是也随之而来带来了一些问题,导致服务端修改了js.css,客户端不能更新,下面有几 ...
- 商业化博客平台原型制作分享-TypePad
TypePad是商业化博客平台,提供完全付费的博客服务,通过TypePad用户可以很容易建立自己的博客,TypePad提供博客系统该有的所有功能以及多种设计风格和外观,如果用户熟悉HTML和CSS,完 ...
- .net利用NPOI生成excel文件
整理代码,这个是生成excel文件,用的是HSSF的方式,只能生成65535行,256列的数据,如果要看office07之后的生成,之前的随笔里提过.这个是一个完整的过程. 首先是已经查找好的数据,这 ...
- 【算法】BFS+哈希解决八数码问题
15拼图已经有超过100年; 即使你不叫这个名字知道的话,你已经看到了.它被构造成具有15滑动砖,每一个从1到15上,并且所有包装成4乘4帧与一个瓦块丢失.让我们把丢失的瓷砖“X”; 拼图的目的是安排 ...
- apm飞行模式
参考 :https://www.cnblogs.com/jins-note/p/9580054.html 复制别人的,因为很久(几年)玩一次,所以会忘,也不好找,,若作者要求,请给留言,会立即删除 ...
- 一道区间DP的水题 -- luogu P2858 [USACO06FEB]奶牛零食Treats for the Cows
https://www.luogu.org/problemnew/show/P2858 方程很好想,关键我多枚举了一次(不过也没多大关系) #include <bits/stdc++.h> ...
- thymeleaf使用基础教程
thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模版引擎. thymeleaf介绍 简单说, Thymeleaf 是一个跟 Velocity.FreeM ...
- KAFKA 监控管理界面 KAFKA EAGLE 安装
概述 Kafka Eagle监控系统是一款用来监控Kafka集群的工具,目前更新的版本是v1.2.3,支持管理多个Kafka集群.管理Kafka主题(包含查看.删除.创建等).消费者组合消费者实例监控 ...