热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【技术分享】传统数仓转型,如何避开数据处理的“深坑”

传统数据仓库的数据处理技术及思考;大数据环境下对于公共数据及行为数据的数据处理处理技术;由传统数据仓库到大数据数据仓库的数据

本文整理自DTCC2016主题演讲内容,录音整理及文字编辑IT168@田晓旭@老鱼。如需转载,请先联系本公众号获取授权!
演讲嘉宾
张粤磊
飞谷云创始人

飞谷云(www.feiguyun.com)创始人,平安付大数据平台架构师。历经了DBA,到开发工程师,再到大数据平台架构师的经历转变,有着10余年各行业(制造,咨询服务,互联网金融)一线数据处理及技术实践经验。

分享内容

我最早是做数仓和ETL架构系统,后来开始做大数据架构,现在在自主创业,做了一个技术分享的网站。这个网站主要是结合我自己目前在做的大数据、数据处理、数据分析的项目,以及圈里朋友的经验技巧来给大家做一些技术分享。

我从2005年开始接触DBA工作,2010年在HP 的TRAM项目中担任ETL开发组长,2012年,在外汇交易中心ETL项目担任开发经理,2014年,在平安付做大数据架构师。在这些年的工作过程中,接触了很多数据库,也有一些数据处理的经验想和大家来分享。


我今天演讲的主要分三个部分,第一部分是分享一下我在传统数据仓库的一些数据处理技术和配置方面的思考;接下来讲一下大数据环境下,公共数据和行为数据的数据处理技术;最后会讲一下从传统数据仓库迁移到大数据数据仓库的数据处理实践思考及建议。

传统数据仓库的数据处理技术及思考


我从自己实际参与的大型数据仓库项目出发,和大家分享一下传统数据仓库的数据处理技术。这个案例融合了我在外资企业、央企、民企、金融行业等等各个行业的项目实践经验,它是涵盖了整个传统数据仓库的标准流程。坦白讲,现在很多企业没有很标准的数据模型。数据模型是国外最早开始做的,比较经典的是惠普和eBay,他们的数据处理和数据模型的领导力比较强,也比较规范和科学,这两个团队在整体数据模型方面有一套成熟的方法论。数据处理方法同样适用整体的数据平台。


做一个数据管理仓库首先要做概念定义,这个一般是针对大型项目,分为企业内部和客户群体两部分,接下来是Portal和对应的权限管理,中间部分是根据实际业务去定义功能,有些功能是比较经典的,还有一些是根据特定业务场景去设计的。再下面一层是我们整体的数据集成层,再底层就是元数据层。


概念定义的产出一般是SOW,用来表明数据治理要做的功能单位。在这之下是业务定义,细化业务、系统功能,包括客户部分对应的联系人以及对应的清单,包括报表需要用哪些数据的实现。如果按实际应用来分的话,假设这是一个IT服务系统,下面会分服务管理和性能管理,性能管理又分硬件和软件的管理。

业务定义之后会有一个业务清单,业务清单里会有详细的业务要求以及相对应的工作项,这样可以保证数据不会出现遗漏,保证业务落实到位。


业务定义之后是逻辑定义,逻辑定义划分的就更细了,涉及具体业务怎么实现、由什么来实现。我们通常的做法是选择一些工具来实现报表的权限管理、元数据管理。ETL我们选择了informatics,数据文件的传输,尤其是跨域网站的数据传输,我们也是选用组件来完成的。再底层的话是业务系统,这个业务系统比较详细,一般都会定义到具体的业务名,清单里面也会有系统、接口这些信息。接下来还要进一步细化,比如业务DB的名称后,要去查看它的网段、所在服务器、端口、防火墙等等信息并需要做连通性验证等。这样就实现了从业务层到物理层面的落地。


物理层面落地之后就应该进行数据规则定义。规则定义就是要把数据像整理衣柜一样分层治理好,比较经典的就是三层维度模型。从元数据层到数据仓库层再到管理层,把元数据原封不动的抽到对应的数据仓库层。图中的Level 1层主要是数据仓库的技术层,包括维度表和事实表的加载、各业务系统的维度表和事实表的加载、各业务整体维度表的生成以及基于事实表产生对应的维度指标和度量值。这层同时也是整体数据仓库的核心层或生成层。Level 2层主要是为报表服务做一些聚合,根据不同的业务需要会产生按周、按天、按月等等不同维度的报表去维护。


规则定义之后就是具体的设计,这个设计一般就是我们架构组里面的建模组长、ETL组长干的事情,具体的有源系统信息、目标系统信息和ETL抽取。做数据管理首先要做好设计定义,之后你就只需要根据设计文档去做具体的开发实现。图上是我们做的一个设计定义,大家可以参考一下。


我在09-14年之间,做了大概6年的Infomatica的开发和管理工作,在ITPub上还有很多笔记,大家要是有兴趣,可以去了解一下。


做Infomatica比较成熟的是惠普和eBay的,国内对Infomatica比较熟悉的企业应该就是神州数码了,因为神州数码是第一家代理厂商。Infomatica相对Datastag、SSIS来说,元数据管理平台更完善。我们不仅可以从之前的模型定义去实现主数据管理的一致性,还可以将Infomatica跑出来的数据和元数据抽取出来的信息做及时的校验比对。Infomatica后来也有了自己的元数据管理工具,现在也在接触一些Hadoop工具。


数据仓库的治理六大要素:完整性、准确性、规范性、唯一性、一致性、关联性。下面我主要讲解两点,第一个是完整性,传统的RDBMS无论是哪一种都无法涵盖大量的非结构化业务数据。作为一个数据架构师、数据处理师不应该有依赖工具的思想,任何一个工具都不是完美的。


第二个是准确性,不同RDBMS对数据类型的定义精确度各有不同,当源系统与目标系统属于不同RDBMS或字符集等情况,可能存在字符类型不兼容问题,如:Oracle 的date数据类型有时分秒,而DB2的date数据类型不含时分秒;oracle的Integer数据类型是8字节38位精度,DB2的Integer数据类型是4字节10位精度。

公共数据及行为数据的数据处理技术


接下来我们讨论一下公共数据及行为数据的处理技术。一般我们处理的数据分为三类,一种是公共数据,常用的获取数据的工具是基于各种语言的爬虫框架,目前流行的是Python。第二种是埋点数据,通常是接入Talkingdata、友盟平台来获取对应的行为数据,或者是自己开发SDK采集工具。第三种是用户及交易数据,此类数据一般存储在结构化数据库中,获取数据的常用工具是SQOOP工具。

数据进入大数据平台的HDFS后,会使用大数据的数据仓库工具HIVE进行数据的ETL和模型构建。这里一般是三层结构:第一层是数据的原始落地层;第二层是数据的集成层,是模型的主要构建层;第三层是数据的分析层,主要用于数据的分析挖掘。

数据经过大数据仓库HIVE基础模型化后,会利用Spark工具对Hive的处理逻辑进行计算引擎的提升,一般会提升10倍左右的计算速度,并利用Spark的ML技术进行数据挖掘分析,SparkR进行图形化分析展现。

大数据经过挖掘分析处理后的统计数据,或需要自定义分析即席报表所需的基础模型表,一般使用HBase或RDBMS来保证查询显示的快速调用和结果反馈。



在处理公共数据的时候应该注意以下几个方面:

1、接口定义加入接口规范变更版本及内容到数据库字段中;

2、落地后的文件时间和成功标志信息同样参与数据处理;

3、在数据仓库处理和分析展示中添加数据处理的可追溯信息;

4、埋点数据一定要符合业务数据信息流才能保证数据处理的完整性和确保数据的业务可用性;

5、行为数据的标识健(UID,DID)要与其它数据源统一关联健和对应时间周期,确保数据的一致性和关联性;

6、行为数据的元数据信息尽可能从源头以字段化方式植入数据处理的数据文件中。


我们从公共数据网站抓取一些信息,然后通过SparkR脚本放到Hive模型里,执行hql任务,生成分析图,最后通过调度系统和监控系统来保证系统的完善统一。

传统数仓到大数据数仓的数据处理


从传统数据仓库到大数据仓库里面应该处理哪些呢?我认为从传统数仓到大数据仓库首要面对的就是数据同步与脱敏。传统数仓是以RDBMS为主要的数据处理存储层,数据库安全级别相对来说比较高。从传统数仓到大数据平台最好的实践方法就是把传统数据仓库与Level 0表全部同步到大数据平台,此时它的数据应该是RDBMS的结构化数据、公共数据和埋点数据全部统一在一起的全样本数据,数据在进入大数据平台后一定要进行脱敏处理,确保数据安全。然后到达以HDFS为主的数据处理层,数据处理的工具要根据数据来源来选择,一般来说,RDBMS采用SQOOP,实时数据采用Kafka、Storm等等。报表层采用自主开发的或者是大数据平台工具。另外,大数据平台一定要注意安全管理。


从传统数据仓库到大数据数据仓库的数据处理的建议:首先数据基因定义一定要完整准确,比如文件从别的地方传输过来,首先要验证文件大小有没有改变,如果没有改变就传一个成功标志位,然后把文件大小、产生时间这些信息添加到数据中,最后将数据整体传到数据层。

其次,数据血缘设计清晰可溯,有时候我们理解写完设计,从最初的源数据一直到最后报表展现的数据,它们之间的关系一定是很清晰的,确保它是可查可控的。

第三,数据安全机制原子化,对数据平台的分层数据做到基于存储机制的原子化安全控制,确保从底层实现数据的安全分层控制。

最后,核心指标及元数据做到可视化和监控自动化,它可以实现元数据数据治理的一个良性循环。通过监控报警发现哪些数据不一致,数据校验的比率、倾斜度超过什么样的指标规则,查看元数据业务或者技术元数据产生的信息,可以及时发现并解决问题。


飞谷云是我们做的一个大数据的平台,现在主要是做数据处理和分析的项目,里面搭建了OpenStack和Hadoop的多种版本。我们和各大公司有经验的技术人员建立了一个社区,主要在数据治理方面为大家做一些技术分享。

关于DTCC
中国数据库技术大会(DTCC)是目前国内数据库与大数据领域最大规模的技术盛宴,于每年春季召开,迄今已成功举办了七届。大会云集了国内外顶尖专家,共同探讨MySQL、NoSQL、Oracle、缓存技术、云端数据库、智能数据平台、大数据安全、数据治理、大数据和开源、大数据创业、大数据深度学习等领域的前瞻性热点话题与技术,吸引IT人士参会5000余名,为数据库人群、大数据从业人员、广大互联网人士及行业相关人士提供了极具价值的交流平台。




推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 构建高可用性Spark分布式集群:大数据环境下的最佳实践
    在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用 `ssh-keygen -t rsa` 命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的 `~/.ssh/authorized_keys` 文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • Python错误重试让多少开发者头疼?高效解决方案出炉
    ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
    无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
  • 深入理解Spark框架:RDD核心概念与操作详解
    RDD是Spark框架的核心计算模型,全称为弹性分布式数据集(Resilient Distributed Dataset)。本文详细解析了RDD的基本概念、特性及其在Spark中的关键操作,包括创建、转换和行动操作等,帮助读者深入理解Spark的工作原理和优化策略。通过具体示例和代码片段,进一步阐述了如何高效利用RDD进行大数据处理。 ... [详细]
author-avatar
爱lovely壮壮_366
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有