某客户数据中台建设
作者:毫末科技
邮箱:hxg@haomo-studio.com
微信二维码:
1 建设目标
以"互联网+"模式为指导,以深入推进"两化深.度融合"为目标,整合信息化数据资源,数字化展示公司经营过程、成果、洞察问题,辅助决策。将企业发展历程、领导关怀、企业荣誉、企业文化、财务、 经营、安全、生产、设备等综合信息以一到言息化的标准体系推进,规范各系统及系统之间的技术指标、信息交换标准、如居标准等。建立企业级数据仓库,通过数据中心数据仓库的建设,对数据资源进行分析挖掘是信息化技术发展的深入集成和协同阶段。面向外部充分展示公司技术实力,体现良好的企业形象;面向企业管理层面充分对生产经营情况进行透明、及时准确的展示,提升企业经营效率,提高管理水平;最后一方面利用大数据技术使信息技术与业务更加紧密结合,.展现在"两化深.度融合"方面取得的.成绩。建立生产、经营、预警等各方面的业务主题分析模型,揭示企业运行规律,提高企业决策水平和经营效率。
- 建立一套规范的、标准化数据管理体系。基础数据标准化是建立数据仓库的核心,数据中心的建设不可避免的涉及到异构系统的数据集成,并需要为规划中尚未建设的系统预留接口。
- 建立一个涵盖核心业务的大数据仓库。基于各系统,建立面向业务主题的数据仓库,应用喘}I在线分析处理从现有的数据中抽取、清洗出有用的决策信息,为公司的生产、经营提供可靠的、科学的决策依据。
- 建设大数据中台,实现数据采集、交换、共享。数据中台层形成数据资产,包括资源数据库系统、共享数据库系统、基础规居库系统、主题库数据库系统,其中资源库系统保存的.是各个部门的业务资源数据,基础数据库包含但不限于6大基础库:人力资源基础信息库、法人i':位基础信息库、财务资源基础信息库、资产资源信息库、实时生产信息资源库和空问地理基础信息库。
- 整合数据资源,建立智能分析平台,促进信息化整体水平提升。智能分析乎台建设是信息化发展的必然趋势,智能分析平台是企业信息化由单纯的在线事务处理到在线多维分析的历史性跨越。同时, 由于智能分析平台的建设需要建立在各系统充分应用的基础上,为保证发据全面准确,就要求整合.各业务系统的数据资源,统一数据交换、存储与管理,保证数据的唯一性、共享性,从而有效促进公司各业务系统的应用,从而提升整个信息化建设水平。
1.1 技术目标
大数据平台要具有成熟的底层架构,运行稳定、高效,具有良好的扩展性和可定制性,要求平台满足未来企业海量业务数据加工和计算能力;满足.各种类型的数据资源的处理。要满足下列条件。
- 标准规范化。项目建设将遵循标准化、规范化原则。标准化是支撑集团大数据中心搭建的重要手段;首先应遵循国际上成熟的、通用的标准、规范和协议。其次要遵照执行国家颁布的现有法律、标准以及即将推出的各类规范。三是参考本省、本市和本地区有关技术规范和技术要求。四是基于集团大数据中心建设的具体需要,为本项目建设和后期工程建设打下坚实基础。
- 高安全性。集团大数据中心安全性要求高,建成后须具有较强的系统安全性和灾难恢复能力。能够按各用户的实际需求设定其严格安全等级来保证系统的可靠性。系统设计时,有足够的安全措施,避免敏感信息受到破坏和泄漏。对信息访问与使用进行严格的权限管理,在技术上支持与数字证书结合的单点登录认证方式,支持与安全认证结合,确保整个系统的安全可靠。
- 高可靠性。大数据中心一旦投入运行就会成为各项业务应用的基础,并随着应用的深入普及,其基础作用将越来越大。系统的高可靠性为基本要 求之一。整个系统必须有良好的可靠性及一定程度的冗余。高可靠性体现在云平台系统的高可靠性以及冗余设计,网络系统的高可靠性以及冗余设计。
- 系统先进性。系统应具备先进的架构,满足未来发展的需要。本项目将采用先进成熟的技术和产品,确保工程建设质量和进度,防范开发集成过程 中的技术风险和产品风险。针对本项目提供先进的架构,充分考虑到系统今后纵向和横向的平滑扩张能力,确保系统符合大数据技术发展的趋势,具有明显的技术先迸性。从技术层面讲,项目建设立足于先进技术,参考大故据及S OA.架构建设,采用构科化、面向对象的设计,将各功能模块封装.为服务,采用细粒度、松藕合架构,便于今后系统的扩展与升级。在保证系统实.用性的前提下,最大程度的提高系统的安全性、可升级性、平台无关性.和可扩展性。项目建设中所选用的软硬件系统可以方便地实现集成,使应用系统降低系统维护的难度和要求,也方便用户日后的应用和管理。
- 兼容性。系统建设II支术选型最大限度的利用现有资源和已有业务系统,同时可以在较长时问段内满足用户业务发展以及技术发展可能带来的 潜在需求。系统建设中充分考虑了"标准和开放"的原则,应广泛采用遵循国际标准的系统和产品,以便于与其他网络系统的互联和扩展,同时易于向今后的先进技术实现迁移,充分保护用户的现有投资,其综合反映在可移植性、互操作性、系统独立性和集成性。
- 高可扩展性。随着大数据平台业务的发展,术来越来越多的业务系统将运行在大数据平台上。为适应将来的发展,系统应具有良好的可扩展性,采用先进的架构的体系结构,充分考虑到系统今后纵向和横向的平滑扩张能力,实现服务不间断的刀级和应用扩展。充分考虑业务规模和澎勾的发展变化,系统规模的扩大和保护投资。系统.构架和应用开发均具备可扩展性,能够随着应用的逐步完善和信息量的逐渐增加不断地井行扩展,整个系统可以平滑地过渡到升级后的新系统中,具有良好的可扩充性和可移植性。同时在软件系统的开发中,各个功能模块可重复利用,降低系统扩展的复杂性。
- 高可维护性。良好的组织和管理对系统的正常运转和高效使用有很大帮助。方便的监控、良好的管理界面、完备的系统记录都能使管理员在.不改变系统运行的情况卜对系统进行检测、修改及.玫障恢复等管理维护工作。
2 建设内容
大数据仓库的建设,总体上来说涵盖以下几大部分:
- 采集和存储数据。将尽可能多的有用数据存放在数据仓库中,为后续的数据分析和业务迭代做准备。一般来说,这里的"有用数据"就是指能够提高业务还原度的数据。
- 对数据仓库的支持。数据仓库可以看作数据仓库的主要数据来源。业务用户需要高性能的数据仓库来对PB级数据运行复杂的SQL查询,以返回复杂的分析输出。
- 数据探索、发现、共享和分析。允许高效、自由、基于数据仓库的数据探索、发现和共享。在很多情况下,数据工程师和数据分析师需要运行SQL查询来分析海量数据仓库数据。诸如Hive、Presto、Impala之类的工具使用数据目录来构建友好的SQL逻辑架构,以查询存储在选定格式文件中的基础数据。这允许直接在数据文件中查询结构化和非结构化数据。
- 机器学习。数据科学家通常需要对庞大的数据集运行机器学习算法以进行预测。数据仓库提供对企业范围数据的访问,以便于用户通过探索和挖掘数据来获取业务洞见。
- 数据交换。提供ESB管理平台,与数据仓库深度融合,实现数据交换的功能。
2.1 数据采集
公司的数据主要来源于以下几大方面:
- 现有的各信息系统的数据库,涵盖人力资源、法人单位基础信息、财务资源、资产资源、实时生产信息资源、空间代理基础信息等
- 第三方平台的数据。例如企查查招投标的数据。以Web Service方式提供
- 各系统内的文件数据
- 日志、监控数据等
2.2 数据存储
公司的数据,按照使用频率划分为以下三类:
- 热数据(OLTP)。用来日常运转需求的数据库。主要包括公司各内部信息系统、执行中外包项目数据库。
- 分析数据(OLAP)。用来做运营分析的数据库。主要包括:内部信息系统历史数据、外包项目历史数据、第三方平台采集数据。
- 冷备份数据。主要用来做备份用的数据库。
2.3 数据查询
数据查询功能,需要提供专门的数据查询引擎,实现大量数据的OLAP操作。对于数据仓库来说,即席查询的响应程度也就成为了评估数据仓库的一个重要指标。对于即席查询的支持程度不仅仅是对数据仓库设计的要求,也是对于整个数据平台架构的要求。在整个系统中即席查询使用的越多,对系统的要求就越高,对数仓中数据模型的对称性的要求也越高。
2.4 元数据管理
元数据管理是企业数据治理的基础。元数据指的是一组用于描述数据的数据组,该数据组的一切信息都描述了该数据的某方面特征,则该数据组即可被称为元数据。
实现企业元数据管理需从两个方面考虑:
- 一是盘点企业数据情况,搞清楚要管理哪些元数据以及这些元数据在什么地方,以何种形态存储,他们之间有有着怎样的联系。
- 二是建模,这里的建模是建立元数据的模型及元模型,要抽象出企业的元模型,建立个元模型之间的逻辑关系。
具体的建设步骤如下:
- 在建设数据仓库系统的初期,只需确定源系统的元数据构成和数仓我们想要实现的元数据内容:比如,我们只想通过元数据来管理数据仓库中数据的转换过程,以及有关数据的抽取路线,以使数据仓库开发和使用人员明白仓库中数据的整个历史过程。
- 确定源系统和元数据构成后,先将源系统的元数据整理并记录,可以用文档记录;也可以存入关系型数据库中。
- 随着数据仓库系统的建设,逐步将需要的元数据补充录入——例如 DM 的语义层、ETL 的同步规则;
- 数据仓库建设完成后,对元数据进行结构化、标准化储存。
2.5 数据计算与分析
数据分析是分析大型复杂数据源的过程,以发现趋势、模式、客户行为和市场偏好,从而为更好的业务决策提供信息。分析大数据的复杂性需要多种方法,包括预测分析、机器学习、流分析以及数据库内和集群内分析等技术。
2.5.2 批处理
典型的批处理框架就是Apache Hadoop。MapReduce,将一个分布式计算过程拆解成两个阶段:
- Map阶段,由多个可并行执行的Map Task构成,主要功能是将待处理数据集按照数据量大小切分成等大的数据分片,每个分片交由一个任务处理。
- Reduce阶段,由多个可并行执行的Reduce Task构成,主要功能是,对前一阶段中各任务产生的结果进行规约,得到最终结果。
2.5.3 流处理
流处理计算,顾名思义,就是对数据流进行处理,是实时计算。批量计算则统一收集数据,存储到数据库中,然后对数据进行批量处理的数据计算方式。
流式处理可以用于两种不同场景:事件流和持续计算。
- 1、事件流。事件流具能够持续产生大量的数据,这类数据最早出现与传统的银行和股票交易领域,也在互联网监控、无线通信网等领域出现、需要以近实时的方式对更新数据流进行复杂分析如趋势分析、预测、监控等。简单来说,事件流采用的是查询保持静态,语句是固定的,数据不断变化的方式。
- 2、持续计算。比如对于大型网站的流式数据:网站的访问PV/UV、用户访问了什么内容、搜索了什么内容等,实时的数据计算和分析可以动态实时地刷新用户访问数据,展示网站实时流量的变化情况,分析每天各小时的流量和用户分布情况;
2.5.1 机器学习
随着产业界数据量的爆炸式增长,且大数据存在海量、复杂多样、变化快的特性,对于大数据环境下的应用问题,传统的在小数据上的机器学习算法很多已不再适用。 因此,大数据环境下的机器学习算法成为非常重要的分析方法。
在机器学习领域有如下几种主要的学习方式。
- 监督式学习:在监督式学习下,输入数据被称为“训练数据”,每组训练数据都有一个明确的标识或结果,如对防垃圾邮件系统中的“垃圾邮件”、“非垃圾邮件”,对手写数字识别中的“1”、“2”、“3”、“4”等。在建立预测模型的时候,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断地调整预测模型,直到模型的预测结果达到一个预期的准确率。监督式学习的常见应用场景包括分类问题和回归问题。常见算法有逻辑回归和反向传递神经网络。
- 非监督式学习:在非监督式学习下,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习及聚类等。常见算法包括Apriori算法和K-Means算法。
- 半监督式学习:在半监督式学习下,输入数据部分被标识,部分没有被标识。这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构,以便合理地组织数据进行预测。其应用场景包括分类和回归。常见算法包括一些对常用监督式学习算法的延伸。这些算法首先试图对未标识的数据进行建模,然后在此基础上对标识的数据进行预测,如图论推理算法或拉普拉斯支持向量机等。
- 强化学习:在强化学习下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅作为一种检查模型对错的方式。在强化学习下,输入数据直接反馈到模型,模型必须对此立刻做出调整。常见的应用场景包括动态系统及机器人控制等。常见算法包括Q-Learning及时间差学习(Temporal Difference Learning)等。
在企业数据应用的场景下,最常用的就是监督式学习和非监督式学习。在图像识别等领域,由于存在大量的非标识数据和少量的可标识数据,目前半监督式学习是一个很热门的话题。而强化学习更多地应用在机器人控制及其他需要进行系统控制的领域。
本项目为集团提供机器学习能力的框架,并为后续机器学习算法的落地指明方向。
2.5.3 数据可视化
为了清晰有效地传递信息,数据可视化使用统计图形、图表、信息图表和其他工具。数据可视化是以图示或图形格式表示的数据。让决策者可以看到以直观方式呈现的分析,以便他们可以掌握困难的概念或识别新的模式。借助交互式可视化,用户可以使用技术深入挖掘图表和图形以获取更多详细信息,以交互方式更改您所看到的数据以及其处理方法,从而将概念向前推进一步。
数据可视化,需要为数据分析、业务分析、运营、设计师、开发者人员提供完整的可视化搭建工具链,满足会议展览、业务运营监控、企业经营分析等多种业务的展示需求。
2.7 数据交换/企业服务总线
企业大量的IT投资建立了众多的信息系统,但是随着信息系统的增加,各自孤立工作的信息系统将会造成大量的冗余数据和业务人员的重复劳动。企业急需通过建立底层数据集成平台来联系横贯整个企业的异构系统、应用、数据源等,完成在企业内部的ERP、CRM、SCM、数据库、数据仓库,以及其它重要的内部系统之间无缝的共享和交换数据。
企业对数据服务的需求日趋迫切,如何有效的管理数据、高效的提供数据服务是目前企业对所面临的关键挑战。目前集团层面客户信息分散,各子公司之间的客户信息无共享。内部系统获取客户数据来源系统分散,方式多样难以管理,且获取客户数据时效性较低,供数标准不统一,缺乏统一的客户数据服务平台。
数据交换的方式一般是根据数据的类型来进行区分,如结构化或半结构化的数据可通过ETL的数据交换方式进行,非结构化的数据像压缩文件、电影、图片等采用文件传输的方式进行交换,而对于一些实时性较高的交换一般采用接口形式进行。例如:restfull、webservice等。
- 结构化数据交换方法。结构化和半结构化数据交换主要有:时间戳同步、全文比对同步、触发器同步、CDC增量同步、全量同步。
- 非结构化数据交换。主要由:文件同步等。
- 实时数据交换。实时数据交换适用于对于数据时效要求快速、高频度、少量数据传输的场景。实时数据交换通过将数据中心库中的数据快速的发布出来提供给外部系统共享调用,同时能够监控外部调用数据的情况提升数据的价值。
2.8 数据安全
数据安全,其实就是保障数据全生命周期的安全和处理合规。其中数据的全生命周期,包括数据生产、使用、存储、传输、披露、销毁等等;处理合规其实就是在数据处理的过程中符合各项法律法规的要求。
数据安全体系的建设围绕着以上的原则,重点关注数据的应用场景和隐私保护,主要有如下目标:
- 满足基本数据安全需求,敏感数据、数据合规和基本数据保护
- 不能只局限于单一平台或产品,需要覆盖数据的所有环节和应用场景
- 数据支持分类分级,重视数据角色权限管理和数据全生命周期管理
时刻关注合规性处理,需要体系化的合规处理机制
边界安全。边界安全是指只有合法的用户才能访问大数据集群,确保大数据平台运行的边界数据进出的安全,主要从网络、接口、存储等角度保障数据平台运行的安全。
- 身份认证。目前我们已经收敛禁止所有数据开发涉及到的大数据基础组件的 client 使用方式和入口,统一使用 DP(数据研发平台)或者实时计算平台等平台型工具作为数据开发的入口和平台,登陆这些平台则需要进行一定的身份验证才能使用大数据基础组件相关能力。
- 网络隔离。大数据集群目前通过网络层面的隔离做到不同环境,不同机房的网络安全和数据隔离,从而保证网络的安全。
- 接口鉴权。接口鉴权主要分为两部分,一个是内部平台之间的接口鉴权,一个是内部平台与外部系统之间的接口鉴权。接口鉴权主要是在大数据平台能力输出的时候确保被合法性使用,防止一些接口和能力被非法使用、窃听或旁路嗅探,造成安全事故。
- 访问控制和权限控制
- 数据访问权限控制。用户通过平台访问数据时,会经过数据解析服务分析出用户和需要访问的数据等信息。
- 权限审计。权限的申请和审批需要通过平台提供能力让用户自行操作,同时也要记录用户的申请和审批者的审批信息,作为重要的审计内容。
- 审计和备份
- 数据审计。除了权限的审计和控制之外,也需要对数据的使用进行了审计和监控。提供审计日志查询功能供管理员进行定期审计复查和排查问题时的重要依据。
- 备份和恢复。备份作为大数据平台安全中存储安全不可缺少的一环。将数据的备份和数据的生命周期结合在一起,在数据创建的时候需要指明数据的生命周期,并且推进存量数据的生命周期设置。在数据有了生命周期的设定后,会有备份程序会定期根据数据的生命周期,将数据自动备份到只做存储的冷备集群中。
3 总体设计方案
3.1 数据采集方案
- 传统数据库数据采集:数据库采集是通过Sqoop或DataX等采集工具,将数据库中的数据上传到Hadoop的分布式文件系统中,并创建对应的Hive表的过程。数据库采集分为全量采集和增量采集,全量采集是一次性将某个源表中的数据全部采集过来,增量采集是定时从源表中采集新数据。
- Kafka实时数据采集:Web服务的数据常常会写入Kafka,通过Kafka快速高效地传输到Hadoop中。由Confluent开源的Kafka Connect架构能很方便地支持将Kafka中的数据传输到Hive表中。
- 日志文件采集:对于日志文件,通常会采用Flume或Logstash来采集。
- 爬虫程序采集:很多网页数据需要编写爬虫程序模拟登录并进行页面分析来获取。
- Web Service数据采集:有的数据提供商会提供基于HTTP的数据接口,用户需要编写程序来访问这些接口以持续获取数据。
3.2 数据存储方案
为满足公司各类数据存储的需求,按照使用类型,公司数据库分为以下几大类:
- HDFS:一般用来存储日志数据和作为通用文件系统。
- Hive:一般用来存储ODS和导入的关系型数据。
- 键-值存储(Key-value Store):例如Cassandra、HBase、ClickHouse等,适合对性能和可扩展性有要求的加载和查询场景,如物联网、用户推荐和个性化引擎等。
- 文档数据库(Document Store):例如MongoDB、Couchbase等,适合对数据存储有扩展性要求的场景,如处理游戏账号、票务及实时天气警报等。
- 图数据库(Graph Store):例如Neo4j等,用于在处理大型数据集时建立数据关系并提供快速查询,如进行相关商品的推荐和促销,建立社交图谱以增强内容个性化等。
- 对象存储(Object Store):例如Ceph等,适合更新变动较少的对象文件数据、没有目录结构的文件和不能直接打开或修改的文件,如图片存储、视频存储等。
- 时序数据库:例如InfluxDB等。适合用来存储时间相关的监控类数据,可以实现较高的插入和查询性能、相当高的数据压缩比等。
以上每种类型的数据库,根据使用频率可以实际生成三套库。
3.3 数据查询方案
本项目将采用Presto来实现数据查询模块。Presto是一个分布式SQL查询引擎, 它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions)。作为Hive和Pig(Hive和Pig都是通过MapReduce的管道流来完成HDFS数据的查询)的替代者,Presto 本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析。总结来说,Presto有以下优势:
- 可以连接多种数据源,包括Hive,Oracle,MySQL,Kafka,MongoDB,Redis等;
- 支持跨数据源的join:可以将多个不同数据源进行联合分析;
- 是一个低延迟高并发的内存计算引擎,相比Hive,执行效率要高很多;
3.4 元数据管理方案
本系统采用Apache Atlas进行元数据管理。Apache Atlas 是 Apache 基金会的孵化项目,是 Hadoop生态圈的数据治理和元数据框架。Atlas 是一套核心基础治理服务的集合,有很好的伸缩性和可扩展性,能够满足企业对 Hadoop生态系统的多样性需求,并能和企业的数据生态系统集成。为 Hadoop 集群提供了包括数据分类、集中策略引擎、数据血缘、安全和生命周期管理在内的元数据治理核心能力。
3.5 数据计算与分析方案
本项目采用Flink实现流批一体的数据计算和分析方案,并采用Spark MLlib提供机器学习关框架。
3.5.1 Flink数据计算
Flink流处理优先的方式实现了低延迟、高吞吐和真正逐条处理。
3.6 机器学习方案
本系统采用基于Spark的机器学习库方案。MLlib是Spark里的机器学习库。它的目标是使实用的机器学习算法可扩展并容易使用。它提供如下工具:
- 1.机器学习算法:常规机器学习算法包括分类、回归、聚类和协同过滤。
- 2.特征工程:特征提取、特征转换、特征选择以及降维。
- 3.管道:构造、评估和调整的管道的工具。
- 4.存储:保存和加载算法、模型及管道
- 5.实用工具:线性代数,统计,数据处理等。
3.7 数据交换方案
数据交换的三种需求,分别采用不同的数据交换方案:
- 结构化数据:采用ETL工具实现;
- 非结构化数据:采用rsync等工具实现;
- 实时数据交换:采用基于ESB的API服务编排实现。
3.8 数据安全方案
明确了数据安全的定义和目标后,可以构建一套数据安全体系,如下图所示:
总体从下至上分为三个层次,数据平台安全、数据管理安全、隐私保护安全,其中合规处理会贯穿整个过程,保障每个环节的合规性。数据平台安全作为最底层、最基础的组件为其上运行的数据和应用提供安全机制的保障;数据管理安全则会在数据的流转或者全生命周期中提供功能和手段防护数据的安全;最上层的隐私保护安全是在数据安全管理的基础上对个人敏感数据和企业数据资产的保护。
4 项目建设计划
4.1 开发标准、平台及工具
4.1.1 开发标准
4.1.2 开发平台
- GitLab代码管理平台
地址:http://gitlab.haomo-studio.com
- JIRA Bug管理平台
地址:http://jira.haomo-studio.com
- Confluence文档管理平台
地址:http://confluence.haomo-studio.com
- SonarQube代码质量管理平台
地址:http://sonar.haomo-studio.com
- Jenkins持续集成平台
地址:http://jenkins.haomo-studio.com
4.2 进度计划
项目进度计划鱼骨图如下:
对以上关键节点的说明如下:
- 需求沟通与调研:调研甲方的现有数据存储现状,并沟通数据与人员、数据与业务之间的关系;
- 关键技术验证POC:将整个系统中的一些关键技术进行逐个的验证,以规避项目中存在的一些可能性技术风险;
- 产品原型:搭建大数据平台的demo原型,并与客户沟通该产品的后续改进重点;
4.3 开发语言和编程工具
- 编程语言
- Java
- Javascript
- Python 3
- 编程工具
- WebStorm
- JetBrains IDEA