数据中心建设方案(简版)
企业数据中心系统平台技术方案建议书
第1章总体建设方案
1.1总体建设思路
图、数据中心构建思路图
按照对数据中心的理解,完整的数据中心应该具备IT基础设施(主机、存储、网络)、企业级ETL平台、数据存储中心、数据共享服务、应用层、统一门户、数据管控平台。
1.2功能框架
图、功能框架
系统功能框架分为企业级ETL平台、存储与计算中心、服务层、应用层、统一门户、统一平台管控。
企业级ETL平台:
负责企业数据中心数据采集、加工、汇总、分发的过程,完成企业级数据标准化、集中化,实现数据脉络化、关系化,实现统一的数据处理加工,包括:非实时数据处理和实时数据处理,提供数据抽取、数据转换、数据加载、数据汇总、数据分发、数据挖掘等能力。
存储与计算中心:
建立统一的数据中心数据模型,以及统一的数据存储与计算,具体提供关系数据库、分布式非关系数据库、分布式文件、分布式计算,实现统一的数据存储与计算。
数据共享服务:
通过数据服务标准化开放访问,帮助企业IT建设中,应用和数据分离,引入更多的应用开发商,促进应用的百花齐放和应用的专业性;基于标准化接口,实现对标签、客户视图、指标等数据查询API封装,实现与周边系统实时互动,体现数据价值,减少数据冗余,保证数据安全,保证数据的一致性。
应用层:
应用层的应用使用服务层提供的各种数据服务。本期应用层包括:经分应用、流量运营、ESOP应用、VGOP应用、指标库、流量运营战略地图、掌上分析、自助业务分析、区域洞察、渠道运营、自助分析、客户标签库、实时营销、LTE互联网管控策略。
统一门户:
提供统一域名分配、负载均衡、鉴权管理、统一管控平台接入、应用注册、应用发布、应用访问数据信息等功能,同时提供数据中心被应用访问的频次,被应用访问的数据范围,提供数据资产的评估,为应用上下线和数据开放提供依据。
统一平台管控:
面向开发人员、运维人员实现数据、应用、资源的统一管控,包括:数据资产管控、开发管理、监控管理、调度管理、系统管理、安全管理。
1.3技术架构
图、技术架构
系统技术架构分为数据采集、计算存储服务、数据共享服务、平台管控。采用Hadoop 云技术,可以满足计算能力线性扩展、多租户能力、数据汇总能力;批处理场景采取Hadoop 的Map/Reduce、Hive或者Spark来完成;流式数据处理,采用Esper计算引擎实现。
数据采集:
采用Flume计算框架,实现文件和消息采集与解析;采用流式爬虫、中文分词、图片识别技术,实现互联网网页信息实时采集;采用FTP文件方式实现对数据文件的采集;采用Socket消息方式实现对消息数据的采集;采用sqoop方式实现将数据库数据装载到HDFS 文件系统。
计算存储服务:
采用Hadoop中HDFS文件系统提供统一的大数据数据存储,满足全量数据留存;基于Yarn提供跨平台的资源管理,满足资源的统一调度与管理;采用Hadoop实现非实时ETL,实现海量数据的批处理,主要处理ODS层->DWD层->DW层->ST层的数据处理;视业务数据情况部分DW层->ST层的数据处理采用Spark计算框架实现;采用Esper和rabbitmq 支撑流数据处理与复杂事件处理;利旧DB2提供ST层数据的存储与计算,支持高并发的指标级数据共享。
数据共享:
数据开放共享采用基于HTTP协议REST风格的OpenAPI完成同步处理与基于消息队列(MQ)完成异步处理,实现类SOA面向服务的架构体系。支持OAuth提供一个安全的、开放而又简易的授权协议。数据共享服务部署在集群环境中以应对高并发的访问请求,并实现集群的负载均衡。
统一平台管控:
采用Java EE技术,通过MVC模式(Model View Controller,是模型-视图-控制器)把业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
1.4数据流图
Mc信令(实时)数据通过Socket消息适配模块接入至Esper计算引擎进行实时处理,向应用提供事件API服务,支撑实时营销应用;后期如Gn信令、LTE信令也提供实时数据,可满足基于Gn信令、LTE信令的实时处理。
除Mc信令(实时)数据外,Gn信令、Mc信令、自有业务订购与使用行为等数据通过非实时ETL方式装载到Hadoop的HDFS文件系统,实现全量数据留存;由Hive承担主库的职能,实现海量数据的批处理,承载ODS->DWD->DW->ST各层数据处理,其中DW层部分数据提供给Spark,由Spark完成数据处理工作。
对外数据服务可以由不同种类的API来完成:
1、针对诸如客户统一视图、客户标签库的数据探索查询服务:将数据加载到Spark的
RDD中,通过API将数据共享出去;
2、针对诸如客户标签信息查询、客户详单查询类的数据查询服务(特点是通过一个Key
来查询数据):将数据加载到Hbase中,通过API将数据共享出去;
3、针对诸如指标数据查询、KPI数据查询服务(特点是高并发、多维度的数据查询):
将数据加载到DB2数据库(利旧)中,通过API将数据共享出去;
4、针对多租户的数据共享服务,详见5.3章节;
第2章企业ETL数据处理平台
2.1 功能框架
根据数据中心的建设需求,企业级的ETL平台实现统一的数据采集、转换、加载、处理以及统一调度、管控等功能。这里的ETL指的是广义的ETL,具备以下的特点: 统一数据获取接入,支持B域数据、M域数据、O域数据或其他外部数据统一接入数据中心平台。
支持结构化和非结构化数据采集、加工;对非结构化数据要实现从非结构化到结构化的处理过程。
支持数据采集、转换、加载等关键,.数据处理过程,实现企业数据的标准。
从周期上,支持批量的数据采集,实时的数据采集
满足数据中心数据加工,处理以及对外提供数据分发、同步
支持全过程的数据稽核。包括事前、事中、事后的稽核方式。以及灵活的稽核规则管理,算法管理
全过程的可视化开发配置管理。通过可视化的开发配置,测试和部署上线。
全过程元数据管理。重点要实现事前的元数据管理。管理的内容包括:支持数据模型、数据流程、转换规则、数据关系和转换映射规则。
企业级的ETL平台产品DACP可以很好支持上述的关键功能特点。
第3章数据存储层
3.1 总体概述
Mc信令(实时)数据通过Socket消息适配模块接入至Esper计算引擎进行实时处理,向应用提供事件API服务,支撑实时营销应用;后期如Gn信令、LTE信令也提供实时数据,可满足基于Gn信令、LTE信令的实时处理。
除Mc信令(实时)数据外,Gn信令、Mc信令、自有业务订购与使用行为等数据通过非实时ETL方式装载到Hadoop的HDFS文件系统,实现全量数据留存;由Hive承担主库的职能,实现海量数据的批处理,承载ODS->DWD->DW->ST各层数据处理,其中DW层部分数据提供给Spark,由Spark完成数据处理工作。
3.2 存储规划
3.3 模型设计
数据模型设计按照层次,主题的数据模型设计的思路。系统根据模型设计会自动转成hadoop上存储。层次、主题映射到相应的目录。
3.4 模型规范化管理
3.4.1 分层规范
依据数据仓库建模理论,结合实际经验,数据计算平台承载数据模型分为四层:ODS、DWD、DW和ST,即接口层、存储层、汇总层、应用层。
模型分层说明:
接口层:ODS模型的数据结构与业务系统接口文件结构保持一致,接口层的数
据在数据计算平台进行暂存。
存储层:即明细数据层,是数据计算核心层数据模型之一,用于存放由清洗、转换层来的数据或者接口层直接来的数据,其设计目标是为后续的汇总数据层和信息子层提供数据基础。
汇总层:即轻度汇总数据层,也是数据计算核心层数据模型之一,该层实现对主题内的数据做轻量汇总。设计目标是为应用层提供足够灵活、方便的基础数据,并保证从该层获取数据是性能最优。
应用层:在汇总数据层之上,数据按照应用需求做数据聚合,生成相关应用所需数据的数据层。应用数据层是面向应用的,但是也不是每个应用都在应用数据层对应一个表,对应用要在数据应用层中进行整合。
3.4.2 表命名规范
OMG标准化组织建议,采用5分段的命名规范:如下
3.4.3 字段命名规范
建立字段的命名规范,并固化为domain类型,指导模型设计字段命名。当有变更,可以做到跨平台的统一建模。
3.4.4 模型版本管理
第4章数据开放服务层
4.1 建设目标
●通过数据服务标准化开放访问,帮助企业IT建设中,应用和数据分离,引入更多
的应用开发商,促进应用的百花齐放和应用的专业性。
●基于标准化接口,实现对标签、客户视图、指标等数据查询API封装,实现与周
边系统实时互动,体现数据价值,减少数据冗余,保证数据安全,保证数据的一致
性。
●对于详单级数据,支持通过文件或授权的方式共享给周边系统。
●通过统一的技术平台框架,制定企业数据标准体系规范,基础数据采集处理,加工
汇总,可以引入多家厂商或多租户进行标准化开发。
要实现上述目标,需要解决的关键问题:
1)需要什么样平台功能?
2)开放的对象。给谁开放?
3)开放什么内容。包含两部分,基础数据的集成开发的开放和应用访问层数据开放。
4)开放的安全保障机制
5)如何保证开放对象开发提交的结果的规范化、质量。
6)开放平台运营的组织结构和流程制度。
4.2 概述
要满足建设目标的要求,数据服务开放的整个功能框架如下:
4.2.1 开放对象
4.2.2 开放共享方式
4.3 多租户管理
4.3.1 概述
采用多租户的思路,将数据能力和数据平台数据处理能力按需、可控的进行开放,在保障数据安全性、数据可控性的前提下,通过标准化封装的数据操作,可视化开发工具开放给业务运营部门,由其自行进行数据操作开发。
使用企业级数据中心提供统一开发平台来实现多租户数据开发,其功能结构如下图:
系统包括两部分:开发管控和技术平台。通过这两部分互相配合实现系统开发能力的开放。
这种模式下需要解决的关键问题包括如下:如何进行资源控制,数据权限管理,跨系统之间的数据交互,自动调度运行,元数据管理。
4.3.2 角色功能
系统管理员:对开发团队进行管理,数据权限和系统资源的分配、审批。
1、设置开发团队使用资源和账号
2、对开发团队提出的数据权限申请进行审批授权
3、表的敏感级别和敏感字段。不同团队对同一数据安全级别可以不一样
4、对开发团队上线进行审批。检查性能,开发规范的满足情况,调度申请周期是否合理
5、对开发团队数据导出安全进行审计
租户开发:使用统一的技术架构和开发工具,在可以使用的数据的基础,加工出私有数据
1、查看详细的数据结构
2、新申请数据权限,如果需要新的数据,可以进行申请,由管理员审批后就可以使用
3、数据加工开发,进行数据汇总、关联查询,数据导出等类型数据数据加工开发
4、临时上线、正式上线。
5、对其所开发的程序数据运行情况监控。
4.3.3 统一开发平台技术详解
4.3.3.1 租户用户管理
租户与系统用户映射
通过映射开发管理平台帐号及执行平台帐号,以租户的方式实现用户及用户组管理,以达到资源管控及数据权限控制的目的。
如下图,在管控平台进行开发团队的管理和对应账号的设置,在数据平台完成对租户的资源、权限进行控制。
每个开发团队根据需要指定其在hadoop或关系数据库上的执行账号。在数据平台上实现账号的权限、资源的控制。
在查询或运行某个数据处理任务时,用其对应的账号进行执行。从而实现对开发团队开发运行的任务资源、权限的控制。
在管理平台新建租户的账号或数据权限变更时,管理平台根据配置参数,实时调用OCDC的相关API自动进行授权、修改、创建账号。
4.3.3.2 系统计算资源分配控制
在管控平台统一对租户进行计算资源的分配,分配完的参数部署到hadoop或关系数据库,实现控制。
实现资源控制,包括两部分:hadoop上的资源分配和关系数据库的资源分配(DB2)。 Hadoop计算资源控制
要实现计算资源的控制,hadoop需要OCHadoop3.2以上,安装安全组件(sentry)
计算资源控制原理
资源池跟系统的账号相关。一个系统账号只能属于一个资源池,Y ARN支持采用资源池方式对系统用户进行CPU,内存的运行控制。
资源池控制参数:
独占资源:最小分配的资源。系统确保此用户有最小的资源。
共享资源:系统空闲时可以使用的最大资源
其中单位:虚拟的cpu核和内存单位。
如何设置租户的资源参数,是一个需要不断根据运行情况进行优化的过程。
注:Spark同hadoop的资源管理
?DB2资源控制
要实现DB2的资源控制,要求:DB2 9.5 版本。目前db2的版本已经满足,需要开通WLM的生效参数。
在DB29.5版本推出了工作负载管理WLM(参考附录,不用额外收费),但只能限制CPU 数量。控制参数如下:
4.3.3.3 系统存储资源分配
Hadoop存储资源控制,每个租户独立一个文件跟目录,设置文件目录大小;
db2的存储资源控制,对每个租户独立一个表空间,设置表空间大小;
说明:hadoop存储控制采用的是操作系统的目录大小的控制。缺陷是无法高度自动共享可用空间。即一个目录大小分配出去之后,意味其就占有了这个空间。因此一般做法是由小到大慢慢分配空间。
4.3.3.4 数据权限分配与控制
在开发管理平台进行对数据权限的分配。根据分配的结果在数据平台进行授权、回收等操作。
数据权限的控制包括:表级权限控制和字段级的权限控制:
●表级权限分配:系统根据分配的结果,产生授权或权限回收的脚本到db2,hadoop
进行执行完成权限控制。
注:在管理平台分配的是逻辑模板表,数据平台控制的是实际的表。因此有一个模块专门按模板表的权限规则转换为物理表的授权脚本执行。
●字段级权限分配:在表级授权的基础上,对表的字段的权限进行授权分配。由于目
前db2,hadoop不能直接实现对字段级的权限控制。所以我们采用两种方式实现这
个功能:
方式1:建立视图,过滤掉没有权限的字段,然后将视图授权给相关账号。实现字
段级的权限控制。
方式2:通过应用级的控制。通过开发人员编写的sql语句解析,分析其查询中所用到的字段,如果字段超出权限范围,则给出提示,不允许执行。
资源控制手段列表:
4.3.3.5 租户的数据开发过程
1.查看数据字典
开发人员可以查看到所有的数据字典。查看内容包括数据表名,中文名称,描述信息,存储位置、数据结构。通过调用基础平台的元数据实现数据字典查看。
2.开发界面
通过开发平台配置数据处理流程,可支持库内与库外、云平台与关系数据库的混搭数据处理,示例如下:
上述的处理流程实现:在hadoop上对ods_cdr通过sql脚本汇总dw_cdr,再通过数据分发到db2上的dw_cdr_yyyymmdd表上。
开发人员需要对输出表dw_cdr设置表结构,sql处理汇总处编写sql脚本。
在一个处理的任务流程中,节点包括数据节点,数据函数节点拼接起来的一个处理流程。
其中数据处理函数节点包括:Sql,tcl,java,shell,数据分发,数据加载,数据导出,ftp、创建表,删除表等。
3.测试
在界面上可以立即执行某个节点或整个处理流程,执行过程和日志信息会实时输出到前台界面进行查看。如下示意图:
4.上线
开发人员在界面上直接提交上线。包括临时上线和正式上线两种。临时上线需要开发人员填写生效的开始日期,结束日期,调度周期。
正式上线,系统管理管理员会进行审批。审批的项目包括:程序名称,表名是否规范,字段名称和中文信息是否完整。
在上线时,系统会自动将程序代码、数据结构从开发环境的配置信息部署到生产环境下。
5.运行
程序上线后,调度平台就会根据程序数据依赖关系自动进行调度。
如果是临时上线的只有调度运行在有效期内的程序才会被调度执行。程序开发人员可以申请延长有效期或申请固定上线。
4.3.3.6 调度执行
多租户调度使用平台提供的统一调度功能,实现过程如下: