从1990年数据仓库之父比尔·恩门(Bill Inmon)提出数据仓库的概念,ETL作为数据仓库的核心组件,在传统的数据仓库中是服务于数据采集,数据处理,大数据时代来临,对ETL的理解也由【抽取、转换、加载】升级到【交换】这个层面。如果你也考虑建设企业级数据仓库可以作为参考。
0x0 ETL之定位
业内多数知名数据仓库解决方案提供方利用公司的自我研发的ETL工具及数据平台从生产系统接入数据源,在库内进行数据转换工作,与其他三方厂家(乙方)一样,自顾一亩三分地,完成了端对端的数据支撑,然而对于甲方而言,各个厂家的端的数据采集无疑是对生产系统的增加多倍压力,另外厂家之间的数据交换也是常态。
建设数据仓库的模式有由上而下以及由下而上两种模式,对于大企业而言,各个部门的运营模式、业务方向均有千差万别,部门大多建设自己的数据仓库,公司从各个部门建设的数据仓库之上建立总的数据仓库。在我们公司,部门之间数据ETL,一方面因业务模式,另一方面各部门数据平台产品多样化,ETL大多采用ftp、rsync这种文件数据传输方式,日志采集则使用DataStream或flume等。我们通常面临企业之间的数据交互,政府部门的数据推送,即便是一个部门内部数据的交换也是常态,数据共享有利于大数据生态发展,离线平台需要生产系统的数据进行计算,生产系统也需要离线平台的数据支撑。数据交换作为ETL一个升级模式成为企业级数据仓库建设的必然。
0x1 交换平台的产生
大多大数据从业人士也认识到数据交换,很多厂家也认识到了ETL模式的与时俱进,阿里的数据工场,亚信的云化交换平台,华为的云化交换平台以及我们的猛犸大数据平台应运而生,大数据交换平台服务于企业(部门、系统)数据交换,数据交换对于用户而言都是透明的,不仅满足传统的ETL功能,同时需要满足动态扩展。
大数据形势下,互联网数据仓库较之传统的数据仓库平台有如下特点:
为适应数据仓库的发展,那么数据交换平台应该具备哪些能力呢?小编认为可从如下几个方面进行阐述,数据采集能力,数据存储能力,数据管理能力,数据计算能力,平台开放能力,作业调度能力。
(1) 数据采集能力
交换平台应支持对表(关系表,k-v表)、文件(结构化、非结构化)、消息、数据流等多种数据形式的支持,同时需支持多样化的采集方式:实时增量流式(flume、DataStream等),消息队列(nsq、Kafaka)等主流技术。由于技术繁杂,种类繁多,选取适合自己业务模式的工具形成组件化利于跨平台部署,这是数据采集应考虑的。(PS:实际上对于日志流式收集的形式通常是效率高,高响应,但也处于不稳定的,易丢失数据等现状。)
(2) 数据存储能力
互联网的数据【大】是毋庸置疑的事实,传统RDBMS的核心设计思想基本上是30年前形成的,在数据仓库领域有相当权威的公司有Teradata、IBM、Oracle、SAP等这里公司均拥有自身数据存储系统以及软硬一体化的大数据解决方案,支持动态扩展的能力,Teradata、Aster Data、GreenPlum都是MPP存储架构,支持PB级别存储(前两者属于商业数据库,GreenPlum开源),这些均是关系型数据库,我们最熟悉的Hadoop是属于SMP架构,支持非结构化、半结构化、结构化数据存储,数据存储平台的选型根据企业的业务模式选定。
(3) 平台管理能力
数据管理:数据的交换忌讳数据冗余,浙江移动大数据中心使用亚信云化交换平台出现了这样的一个场景,厂家A需要生产系统中数据表T1部分字段,,厂家B需要生产系统中数据表T1的所有字段,另有特殊情景长家C需要表中的字段与厂家A有交叉字段现象,生产系统为给三个厂家同时供数,造成了大量数据冗余,空间有效利用率60%不到。
多租户管理:数据交换本身的一个概念就是交换,意味着多租户,平台是开放的,面向多个部门甚至多个企业,租户可以灵活创建自己的作业体系,提出相应的数据需求,进行自主管理和配置,跨系统或者跨部门的数据请求开放给用户,开启有效的需求管理体系。
作业管理:ETL平台所需维护的细节繁多,如果交互的接口管理一塌糊涂,比如繁多的FTP、散乱的Shell脚本、crontab定时任务搞晕了运维人员,一旦人员迭代,付出的管理成本很大,建立一套完善的元数据管理体系是保障系统正常运作必需的工具。
(4) 数据计算能力
互联网的数据“大”是不争的事实,现在分析一下数据处理技术面临的挑战,近几年见过形形色色的数据仓库,大多使用的自下而上的方式建设,生态数仓中所使用的平台产品多样性,然而传统行业电信也好,银行也好,互联网产品数仓也罢,鲜有PB级别的数仓,面对的用户量几千万,对应的数据是几百TB,数据量少怎么样的建设方案都是无所谓的,当面对10亿级别的用户,PB级别的数据时,如何满足数据计算?如何适应多种数据平台的接入?
数据交换平台需具备强大的数据计算能力,支持常见的分布式计算模型,以实现数据的预处理(格式转换【例如lzo转换成HFile】,空值处理、数据压缩等)以及常见的计算函数(窗口函数,中位数计算、时序计算、图计算等)。
(5) 平台开放能力
能够对外输出数据,这是企业级的交换平台所应具备的基本能力,数据开放并不意味着谁都可以随意获取数据,放弃数据安全,数据开放表示数据共享,满足企业的各项业务需求,根据部门的具体需求,申请已开放的数据,数据安全保障。
数据交换平台所应支持的不仅是传统的数据开放,更应具有元数据开放、计算能力的开放,丰富的API提供,既然无法满足所有的个性化需求,那就应有开放的API为其他系统无缝衔接,单纯的数据导出已无法满足业务的发展。
(6) 作业调度能力
调度功能是从ETL工具形成初便拥有的,ETL调度工具发展也从最初的crontab衍生到现在的调度平台,业内企业级的调度工具例如国外的Informatica公司的Informatica、Teradata的 ETL Automation、微软的 SSIS、Control-M,国内的有自主研发阿里的Zeus,亚信的 AI-CLOUD-ETL,华为研发的云-ETL,网易的nschedule、猛犸等,开源的调度工具有Azkaban,Kettle等。
调度模式是各色各样,有以工作流调度单位,有以作业为调度单位,所支持的作业形式也是多种,脚本形式(shell、python、Perl,ruby),SQL、Java、MapReduce以及其他组件形式。调度策略也是丰富多样,有时间触发、时间触发、接口通知、手工执行。
实现任务的统一调度,支持动态扩展的作业类型,丰富的调度模式是数据交换平台应具备的。以上所列举的6项能力提出一些常见的体现,构建数据交换平台所考虑的细节非常多。
0x3 交换平台建设最佳实践
很多数据平台提供的是纯粹的数据服务,较少提供Api或元数据服务以满足其他平台的嵌入,业内打造成PaaS级的ETL交换平台屈指可数,技术因素是一方面,业务需求是否需要打造这样一个平台也是其中一个原因,对业务需求的理解,是否具有持续的维护及更新能力又是另一方面。还有一句话是这么说的,规则与灵活怎么取舍?为便于维护可能将主流的需求满足,对于一些个性化的需求则被抛弃,很多公司技术也很强,但打造这样一个ETL交换平台更多的考虑是从用户需求中来,到实践去来,纯粹的为实现功能,大谈性能也未必是一个好的解决方案,业务始终为王。下面设想一个交换平台架构图供参考:
稍作拓展:
相关推荐
ETL架构师在数据仓库项目中扮演着至关重要的角色,负责设计和实施数据从源系统到数据仓库的高效、准确的转换流程。本篇主要讨论了几个与ETL架构师面试相关的知识点,包括逻辑数据映射、数据探索阶段、起始来源数据的...
京东数据仓库海量数据交换工具Plumber的开发与实践涉及了大数据处理、数据仓库技术、编程语言Clojure的应用以及异构数据源的交换等多个知识点。以下是对这些知识点的详细解读。 首先,离线海量数据交换场景介绍是...
Oracle数据仓库的构建通常包括数据抽取、转换和装载(ETL)过程。Oracle Warehouse Builder工具用于自动化这个过程,将来自不同源的数据清洗、转换,并加载到数据仓库中。这个过程对于确保数据的一致性和准确性至关...
Oracle9i ETL(抽取、转换、装载)引擎是数据仓库建设的关键部分,负责将源系统的数据清洗、转换并加载到数据仓库中。而Oracle的Real Application Clusters(RAC)技术则为高可用性和可伸缩性提供了支持,允许数据库...
- **体系结构**: IBM数据仓库采用的是MPP(Massively Parallel Processing,大规模并行处理)体系结构,每个节点拥有独立的硬盘空间,并通过高速网络进行数据交换。这种架构具有良好的扩展性和高吞吐量,适合处理大...
4. **ETL过程**:即抽取(Extract)、转换(Transform)、加载(Load)的过程,是数据仓库建设的核心步骤之一。通过对原始数据进行清洗、转换和加载,确保高质量的数据输入到数据仓库中。 5. **性能优化**:考虑到...
数据仓库技术平台则涵盖了从数据仓库设计、ETL(Extract, Transform, Load)流程、BI前端工具到元数据管理、数据质量控制等多个关键技术环节。银行数据仓库模型,如BI.BankDWM,是预先定义的主题域数据模型,确保...
ETL是将非结构化或半结构化的数据清洗、转化,并加载到适合分析的结构化数据仓库中的关键步骤。此外,元数据管理(CWM)也在此层发挥作用,它记录了数据的来源、转换规则以及数据的意义,有助于理解和管理数据的生命...
这一步骤对于后续的数据加载至关重要,可以确保非结构化数据在进入数据仓库时具有统一的格式。 3. **元数据建立**:通过对非结构化数据进行属性提取和打包,可以为其创建元数据。元数据是关于数据的数据,它可以...
它可以用来表示和传输元数据、定义数据仓库的数据结构,以及实现异构系统之间的数据交换。 综上所述,数据仓库、数据挖掘和XML技术共同构成了现代企业信息管理系统的重要组成部分。通过合理利用这些技术,企业可以...
第三种是分布式数据仓库体系架构,该架构将数据仓库分布在多个物理位置上,通过网络连接实现数据的共享和交换。分布式数据仓库可以处理大量数据和复杂的查询,同时保持良好的可伸缩性和容错性。但分布式架构设计复杂...
6. **数据仓库与数据湖**:数据交换系统常常与数据仓库或数据湖结合使用,前者用于结构化数据的分析,后者则处理半结构化和非结构化数据。这些平台提供了一个中央存储库,用于整合和分析来自多个源的数据。 7. **...
Oracle数据仓库解决方案提供了统一的元数据库,不需要进行元数据的交换,能够最大限度地减少系统的维护工作。同时,Oracle的数据展现工具支持通过门户(Portal)技术进行集成,为不同类型的用户提供一致的访问界面。...
在当今的企业环境中,ETL不仅限于数据仓库的构建,还广泛应用于数据迁移、交换和同步等场景。随着大数据和云计算的发展,ETL技术也在不断进化,以适应更复杂的数据环境和更高的数据处理需求。例如,现代ETL工具可能...
在数据仓库中,元数据的应用覆盖了从数据提取(ETL)、数据存储、数据分析到数据展现的全过程。 元数据分为技术元数据和业务元数据。技术元数据关注的是数据仓库的技术细节,包括数据的物理存储、处理流程、性能...
3. **ETL架构**:ETL(Extract, Transform, Load)是数据仓库中的关键流程,包括ETL-1、ETL-2和可能的ETL-3。ETL-1从源头抽取数据,进行格式检查和转换;ETL-2则进一步整合和加载数据;ETL-3可能涉及更复杂的数据...