大数据开发-关于数据管理的经验分享

前言

大数据开发除了炫酷的报表 、复杂的算法、系统架构的设计。还有一点极为重要,那就是数据的管理。

本人之前是做传统管理系统开发。从事大数据开发行业只有三年多。
经历过复杂的业务需求,复杂的系统设计,高并发情况下性能的不足。但数据的管理和接入却让人头疼。

数据源的多样性

虽然我不知道别人家的大数据开发是什么样子。我刚开始做的时候 数据来源多种多样,有爬来的,有文本 ,有http请求,有ftp文件,有来自消息队列、es等。还有传统的关系型数据库。

数据格式数据字典不统一

由于数据来源渠道不同。不同厂家 对部门、职位、类型 、类别、型号等数据字典的定义不同,同样的意思 不同的数据源 编码不一致。在数据同步过程中需要把相同含义的数据字典统一。
数据来源的渠道不同、来源方式不同 同样种类的数据 比如用户 订单等。字段名称。字段数量也不同,也需要在同步过来的时候吧数据字段进行统一。

同步过程中的不确定性因素

在数据同步过程中 有很多问题不是有开发人员控制。涉及到利益、制度等。还有源端数据库的性能 支持的并发量、连接最大数量。
源端是否存在重复数据、数据去重、数据更新、数据质量差、缺少字段等问题。尽管有些问题看似简单时间情况却要 根据现场情况作出不同的应对策略。这使得数据同步过程变的复杂。

同步过程的监控和错误处理

同步数据本身不难 有很多开源的工具。或者自己写一套数据同步都可以实现。难点在数据监控。一次数据同步过程中 要同步数据量是多少、 成功了多少、 新增了多少、 修改了多少、 失败了多少、失败原因是什么 这些过程没有监控记录 很多时候同步程序挂掉 或者数据丢失都无法定位问题。

数据库表结构管理

在大数据开发中 往往要对接很多来源的数据 他们的表名不同数据意义相同, 可能相同的表名数据意义不同。库、表、字段 的管理 他们的注释 每个库在上面位置 ip、 端口、用户、密码、负责人联系方式,源端每个表存储的什么数据 这些数据同步到了那里 同步频率是什么 主键是什么 按照什么规则更新。目标端每个表的含义 ,每个字段来自那里, 是分析出来的, 还是多个字段合并来的 还是来自数据字典。这些都要详细记录。因为在实际工作中 因为人员变动大 导致很多信息丢失,新接手的人完全不知道是什么东西 。缺少文档 和记录。无疑增加的工作难度

应该如何去做

针对上述的几个问题 我做了三件事来应对。分别搭建了三个平台 :数据同步平台、元数据管理平台、一体化运维监控平台。
当然不一定非要搭建平台。可以用excel work 进行文档记录。但是文档由于复制粘贴 导致不同的人员有不同的版本 尽管有svn管理,但是为了避免冲突 有些人选择不提交自己修改的部门。如果这些人离职 那交接的是他选择性的遗漏了这一部分 会造成一定的成本损失。

数据同步平台

数据同步平台分两部分
一部分是表对表之间的同步,单表到单表 ,多表到单表。这部分通过可视化的操作来实现通过配置字段 时间等方式实现同步 无需编码。(具体可参看我关于数据同步的帖子)
另一部分是同步的数据需要做处理。比如数据字典统一。数据分析。数据清洗这些要针对不同的库做不同的编码 需要定制开发。
目前我们的数据同步是分三部门的。
第一部分是把源端数据原封不动的同步过来。在目标端是表名字段回按照一定的规范重新命名 一般表名会加上 数据来源-数据类型的前缀 方便管理。(消息队列 http ftp等来源数据会转为表存储)
第二部分:如果数据需要分析 和清洗 统一字典,或者有些数据意义相同 (比如不同厂家消费记录 ) 。那么会将数据进行二次加工 相同意义的数据进行合并 之后存储到新的数据库中。这一部分完成了数据整合 数据分析 数据清洗。
第三部分:是业务相关的。数据经过清洗整合之后 还不能直接使用。根据不同的业务做不同的处理 比如要统计每天的访问量 每个小时的访问量。那么会有定时任务实时计算存储到另一个统计结果表中 应用端直接查询这个结果表。不需要每一查询原始表。
三部分大概分类为。原始数据库、标准数据库、业务数据库。
原始数据库的同步是通过 数据同步平台完成。其他部分通过数据同步平台的二次开发功能来实现。由数据同步平台统一管理任务调度。

一体化运维监控平台

数据同步过程中难免出现问题。比如宕机 、数据出错、卡死等 如何即使发现 需要借助监控平台来管理。
数据同步过程中 会把每一次数据同步数量 处理数量 、成功多少 、失败多少、失败原因、服务器内存使用率、cpu使用率 、网络速度、硬盘空间、连接池信息等数据 通过socket 发生给监控平台。监控平台自动 或者人工 干预的方式进行任务调度。保证数据同步的稳定性 和正确性。如果有错误数据可以根据错误信息作出处理。再次重新同步这部分错误的数据。提高工作效率。

元数据管理平台

元数据管理平台主要是对源端数据库 目标端数据库进行记录的文档库。
主要记录 :
服务器信息 (IP 端口、用户名、密码、服务厂家、服务电话 cpu 、硬盘、内存等)。
源端数据库信息:数据库类型(oracle、mysql、es、http ftp kafka等)、数据库ip 、用户名、密码、提供方名称、提供方负责人联系方式。
目标端数据库信息:(同上)
源库表信息:
表信息包括:表名 注释。主键 。更新时间戳。数据是否同步、首次接入数据量、接入数据任务名称、接入负责人、接入到哪个数据库、目标端表名是什么 。存在什么问题。以及接入日志等信息。
字段信息:
源端字段信息说明。要从源库爬取注释 或者人工输入等方式将字段说明录入。
目标端字段 如果直接同步过来的记录 同步来自哪个表的哪个字段。
如果是通过分析来的 要记录 哪个算法 哪个服务做得分析。相信记录每个字段的来源。操作人 操作日志。

总结

数据同步 、数据管理、数据标准化 是大数据开发 绕不开的问题 。是基础的问题。没有数据管理 数据混乱。 这些问题不加以重视 往往会造成无形的伤害。会造成不可估量的损失。打好了基础 才能更好的建立上层建筑。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值