数据中台数据仓库数仓规划

在TDH大数据平台上进行数据仓库ETL功能设计(一)

2019-09-26  本文已影响0人  八幡大老师

​ 今年利用一个新的项目机会,对过往在TDH(星环的大数据平台产品)上做etl实现的功能做一些总结和重新优化设计并在这个项目中进行应用,因为过往的经验或者习惯的问题,以前在TDH上除了调度这块依赖于类似control-M这种调度平台之外,像数据采集、卸载分发、数据加工等处理过程都时采用自己开发的脚本或者存储过程实现的,在新的设计中依然是这样的思路。主要是因为目前在大数据平台上做ETL的开发,需实现采集、处理的作业都是成千上万的,使用各类ETL工具及调度工具会使得作业开发工作量特别的大,而且容易出错。
​ 这个设计虽然是基于TDH设计的,但其思路在CDH、华为以及开源平台上也同样可以,无法是一些具体的细节功能实现起来有些区别。
​ 这份材料是设计初期思路确定后对项目组内的人员进行的培训,因为项目组内第一次接触TDH或者HADOOP平台的人是大多数,甚至很多连数据仓库是什么都处于懵懂状态的人,所以在培训时也比较注重讲细节简化说明,便于理解。
讲解分三个部分:

​第一部分先简单介绍下数据仓库的定位及主要功能,同时说明下TDH的架构和对应数仓所需要使用的组件。
​第二部分就是以独特的视角对数据仓库内所包含的内容进行拆解分析。
​第三部分就是对数据仓库所需要实现的ETL功能进行分模块标准化的开发实施进行设计上的讲解。


数仓定位与TDH

数据仓库定位与职能

​ 数据仓库在企业中核心的定位就是实现统一的数据采集、加工、安全管理以及提供数据服务的中心平台,为各类基于数据的应用体系建设的基础设施工程。
​ 其中最基础的核心职能就是基于一个统一平台实现数据汇集、数据整合加工以及数据服务三部分功能。
​ 数据汇集实现将行内有需求价值的IT系统数据、手工业务数据等采集汇总到一个数据库系统内;
​ 数据整合加工实现将汇集的数据从时间、业务分类、功能等多个角度进行合理的加工处理,实现合理高效的数据存储,降低对数据进行理解、检索查询的难度。
​ 数据服务即实现相关系统、业务人员对整合数据基于多种方式的查询服务需求。


数据仓库逻辑架构

​ 为简化对数据仓库逻辑架构的理解,最简单的数据仓库逻辑架构如上图所示。
​ 一般我们所熟悉的数据仓库架构都是描述分层架构,这是数据仓库的数据架构。对ETL来说,其实不管有多少数据层级,都可以归类为三个数据区域:临时区、模型区、服务区,三个区域划分的依据是从其功能需求定位来区分的。临时区是为了实现数据的落地接入、模型区是为了实现统一规范的数据整合加工、服务区是为了实现数据对外提供服务。因为功能定位不同,其数据结构特征会不同,因而也会影响到相应ETL功能的实现逻辑。
​ 为实现数据仓库的数据架构,就需要实现一些必要的ETL功能,包括:


数仓组成分析

数据仓库的组成

​ 我们通常情况下接触的数据仓库,都是理解为ETL+模型,那么对于ETL就包括数据采集、清洗、标准化等内容,模型呢就包含了各种主题模型、维度模型等构成的数据表。因为我们要研究ETL怎么实现,模型其实也是ETL中做数据转换中的一部分,那么我们换一种思路,尝试去理解分析下一个标准的数据仓库,它的组成部分有什么。
​ 就如上图所示,我把一个通常意义上的数据仓库分为以下几部分:

  1. 数据来源名称
  2. 数据来源类型
  3. 数据获取方式
  4. 数据获取格式
  5. 数据获取策略
  6. 元数据
    ​ 只有获取了这部分内容,才能去制定数据采集的功能设计、临时区数据结构的设计、日终调度的设计。所以数据来源信息是数据仓库的重要组成部分。
  1. 备份数据范围,临时区、模型区,服务区是否备份呢?
  2. 备份周期,临时区7D?模型区1Y?服务区30D?
  3. 备份方式,文件备份?灾备平台数据同步?

​ 以上这几个是从完整的数据仓库组成内容去思考的角度,从功能和内容上看,感觉一个数据仓库的东西并不多,可是当所接入的数据表成千上万,所设计建设的模型以及对外开放的数据服务接口成百上千时,如果没有对这些内容进行一个合理的存放读取设计、功能开发设计,那么在这个数据仓库常年累月的新增需求开发过程中,其庞大而糟乱的组成会让从一开始就参与并维持它运行的人在项目组成员中成为大神一样的人物的同时,也让新进入项目组的成员越来越难以驾驭掌控这个庞大的系统了。

数据来源、数据结构、ETL程序的细化讲解
数据来源分类

​ 数据来源根据来源和形式的不同可以有多种分类方式,每种分类方式其实意味着在做数据采集时所需要注意和解决的问题,比如对于数据库直连采集这种情况,就要求在做ETL程序开发时,解决如何定位数据库地址和登陆信息并按照灵活的查询方式进行数据抽取的功能实现。总的来说,数据来源的内容通常决定了数据采集功能所依循的原则、规范和流程。


数据结构信息

​ 数据仓库的数据结构信息非常的繁杂,如图所示,从分类上就可以分成至少8种,细分类可能就更多,对于这部分数据,因为直接影响数据仓库是否能正常运行,在生产环境对它们的维护从来都是小心小心再小心,但是往往仍不能避免出现问题。对其进行详细的梳理分类,并设计工具实现有效的管理,避免在生产环境频繁的变更以及直接的手工操作是改善的手段。


ETL程序通用化
​ 数据仓库的ETL功能一般都是类似的。比如数据采集,对于同是通过文件方式进行采集的方式来说,其流程都是类似的:对接入的数据文件检查合法性-》通过put上传到hdfs上-》构建外表实现数据访问。所以,没有必要针对具体的采集数据表进行单独的作业程序开发(包括采用informatic这种ETL工具的方式),那样是平白增加了开发的工作量和出错的概率,以及排查问题时的复杂性。可以通过对每一类功能进行规范的、标准化的设计,进而通过配置表的方式实现通用化功能,后续开发人员只需要通过修改配置、执行测试并完成部署投产的功能就可以极大的提高ETL作业开发的便捷度,降低出错的概率。
作业调度
​ 作业调度就是数据仓库运行的大脑,对于作业调度工具来说,其实现的基本功能是根据依赖关系、优先级、时间要求对不同类别的程序或者脚本能够触发执行,并能得到具体作业的运行状态结果,提供监控报警通知的功能。

​ 作业类别、作业依赖、作业执行、作业监控以及告警通知是作业调度的组成部分。


数据备份
​ 数据备份包含对原系统文件的每日备份、配置数据的备份、程序备份、模型数据备份及部分。
​ 现在在TDH这类大数据平台上实现数据备份,都是充分利用HDFS分布式的特性,将文件基于一定的规则和策略存放到HDFS上,并通过专门的程序脚本实现定向的查询获取。
​ 大数据平台灾备平台要实现数据同步,也有专门的技术,distcp能实现不同HDFS集群之间的数据互传,数据同步功能以此为核心,但还需要解决如何调度的问题。

第二部分,功能详解

https://www.jianshu.com/p/e5f888c2d873

上一篇下一篇

猜你喜欢

热点阅读