APP下载

地质数据湖构建方法浅析

2020-12-28黄家凯

数字技术与应用 2020年11期
关键词:数据源数据管理引擎

黄家凯

(湖北省地质调查院,湖北武汉 430034)

在云计算、大数据技术快速发展的背景下,随着Hadoop等海量分布式存储技术、分布式计算技术的快速普及,数据湖已被广泛用于大数据平台的存储与使用。尽管目前对数据湖的定义尚有许多分歧,但其核心理念已得到接受。地质大数据具有海量、异构以及快速增长的特点,天然符合数据湖的特点。目前包括“地质云”“自然资源云”等地质大数据平台的构建过程中,对“地质数据湖”的概念涉及较少,尚未对地质数据湖做出完整的定义,更未对地质数据湖的构建方法做出阐释。本文将从地质数据湖的定义出发,浅析地质数据湖的构建方法,以期为湖北省地质局地质大数据平台的下一步建设方向开阔技术思路。

1 地质数据湖的定义

搞清数据湖的定义后,将其数据的边界限定在地质领域,也就搞清了地质数据湖的定义。数据湖是目前比较热的一个概念,业内对于其的定义尚未完全达成一致,比较具有代表性的观点如下:

1.1 维基百科(Wikipedia)的数据湖定义

数据湖是一类存储数据自然/原始格式的系统或存储,通常是对象块或者文件。数据湖通常是企业中全量数据的单一存储。全量数据包括原始系统所产生的原始数据拷贝以及为了各类任务而产生的转换数据,各类任务包括报表、可视化、高级分析和机器学习。数据湖中包括来自于关系型数据库中的结构化数据(行和列)、半结构化数据(如CSV、日志、XML、JSON)、非结构化数据(如email、文档、PDF等)和二进制数据(如图像、音频、视频)。

1.2 亚马逊(AWS)的数据湖定义

数据湖是一个集中式存储库,允许用户以任意规模存储所有结构化和非结构化数据。用户可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析—从控制和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策[1]。

1.3 微软(Azure)的数据湖定义

Azure的数据湖包括一切使得开发者、数据科学家、分析师能更简单地存储、处理数据的能力,这些能力使得用户可以存储任意规模、任意类型、任意产生速度的数据,并且可以跨平台、跨语言的做所有类型的分析和处理。

1.4 小结

从上述业内关于数据湖的具有代表性的定义可以看出,虽然观点不尽相同,对数据的内容、数据的应用能力略有差别,但可以总结出数据湖具有以下特性:

(1)数据湖需要提供足够用的数据存储能力,这个存储保存了一个企业/组织中的所有数据。(2)数据湖可以存储海量的任意类型的数据,包括结构化、半结构化和非结构化数据。(3)数据湖中的数据是原始数据,是业务数据的完整副本。数据湖中的数据保持了它们在业务系统中原来的样子。(4)数据湖需要具备完善的数据管理能力(完善的元数据),可以管理各类数据相关的要素,包括数据源、数据格式、连接信息、数据schema、权限管理等。(5)数据湖需要具备多样化的分析能力,包括但不限于批处理、流式计算、交互式分析以及机器学习;同时,还需要提供一定的任务调度和管理能力。(6)数据湖需要具备完善的数据生命周期管理能力。不光需要存储原始数据,还需要能够保存各类分析处理的中间结果,并完整地记录数据的分析处理过程,能帮助用户完整详细追溯任意一条数据的产生过程。(7)数据湖需要具备完善的数据获取和数据发布能力。数据湖需要能支撑各种各样的数据源,并能从相关的数据源中获取全量/增量数据;然后规范存储。数据湖能将数据分析处理的结果推送到合适的存储引擎中,满足不同的应用访问需求。(8)对于大数据的支持,包括超大规模存储以及可扩展的大规模数据处理能力。

综上,地质数据湖是一种不断演进中、可扩展的大数据存储、处理、分析的基础设施;以数据为导向,实现任意来源、任意速度、任意规模、任意类型数据的全量获取、全量存储、多模式处理与全生命周期管理;并通过与各类外部异构数据源的交互集成,支持各类企业级应用[2]。

2 云计算厂商的数据湖构建方案

2.1 亚马逊(AWS)的数据湖构建方案

亚马逊的数据湖基于AWS Lake Formation构建,它与其他AWS服务互相配合,来完成整个企业级数据湖构建功能(如图1所示)。包含数据流入、数据沉淀、数据计算、数据应用四个步骤。

2.1.1 数据流入

数据流入是整个数据湖构建的起始,包括元数据的流入和业务数据流入两个部分。元数据流入包括数据源创建、元数据抓取两步,最终会形成数据资源目录,并生成对应的安全设置与访问控制策略。业务数据的流入通过ETL来完成的。AWS提供的数据湖解决方案,支持S3、AWS关系型数据库、A W S N o S Q L 数据库,A W S 利用G L U E、EMR、Athena等组件支持数据的自由流动。

2.1.2 数据沉淀

采用Amazon S3作为整个数据湖的集中存储,按需扩展/按使用量付费。

2.1.3 数据计算

采用A W S G L U E 来进行基本的数据处理。G L U E 基本的计算形式是各类批处理模式的ETL任务,任务的出发方式分为手动触发、定时触发、事件触发三种。事件触发模式上,利用AWS Lambda进行扩展开发,同时触发一个或多个任务;各类ETL任务通过CloudWatch进行监控。

2.1.4 数据应用

在提供基本的批处理计算模式之外,AWS通过各类外部计算引擎,来提供丰富的计算模式支持,例如通过Athena/Redshift来提供基于SQL的交互式批处理能力;通过EMR来提供各类基于Spark的计算能力,包括Spark能提供的流计算能力和机器学习能力。

2.1.5 权限管理

通过Lake Formation来提供相对完善的权限管理,粒度包括“库-表-列”。

图1 AWS 数据湖解决方案示意图

图2 华为数据湖解决方案示意图

2.1.6 数据治理

数据治理属于数据所有者的责任,AWS的通用解决方案不囊括这块内容,用户可以通过开源组件(如Apache Griffin)针对数据治理自行定制开发。

2.2 华为的数据湖构建方案

华为的数据湖解决方案包括数据湖探索(Data Lake Insight,DLI)和智能数据湖运营平台(DAYU)(如图2所示)。其中DLI相当于是AWS的Lake Formation、GLUE、Athena、EMR(Flink&Spark)的集合。

2.2.1 华为云数据湖探索(DLI)

华为的数据湖解决方案比较完整,DLI承担了数据湖构建、数据处理、数据管理、数据应用的核心功能。DLI具有完备的分析引擎,包括基于SQL的交互式分析以及基于Spark+Flink的流批一体处理引擎。DLI通过OBS来提供核心存储引擎,和AWS S3的能力基本对标。华为数据湖几乎支持所有目前华为云上提供的数据源服务。

DLI可以与华为的CDM(云数据迁移服务)和DIS(数据接入服务)对接:借助DIS,DLI可以定义各类数据点,并可以在Flink作业中被使用,作为source或者sink;借助CDM,DLI甚至能接入IDC、第三方云服务的数据。

2.2.2 华为云数据湖智能运营平台(DAYU)

为了更好地支持数据集成、数据开发、数据治理、质量管理等数据湖高级功能, 华为云提供了D A Y U 平台。DAYU涵盖了整个数据湖治理的核心流程,并对其提供了相应的工具支持。可以看到,本质上DAYU数据治理的方法论其实是传统数据仓库治理方法论在数据湖基础设施上的延伸:从数据模型来看,依然包括贴源层、多源整合层、明细数据层,这与数据仓库完全一致。

2.3 阿里云数据湖构建方案

阿里云采用OSS作为数据湖的集中存储。在数据源的支持上,支持所有的阿里云数据库,包括OLTP、OLAP和NoSQL等各类数据库。核心关键点如下:

2.3.1 数据接入与搬迁

在建湖过程中,DLA组件具备元数据发现和一键建湖的能力。

2.3.2 数据资源目录

DLA提供Meta data catalog组件对于数据湖中的数据资产进行统一的管理,无论数据是在“湖中”还是在“湖外”。

2.3.3 数据计算分析

DLA提供SQL计算引擎和Spark计算引擎两种,并与Meta data catalog深度集成,能方便地获取元数据信息。基于Spark的能力,DLA解决方案支持批处理、流计算和机器学习等计算模式。

2.3.4 异构数据管理

DLA除了支持各类异构数据源做数据接入与汇聚之外,还能与云原生数据仓库(原ADB)深度整合。

2.3.5 数据集成和开发

阿里云的数据湖解决方案提供两种选择:一种是采用dataworks完成;另一种是采用DMS来完成。两种都能对外提供可视化的流程编排、任务调度、任务管理能力。

2.3.6 数据管理和数据安全

D M S 提供了强大的能力。D M S 的数据管理粒度分为“库-表-列-行”,完善的支持企业级的数据安全管控需求。DMS把原来基于数据库的devops理念扩展到了数据湖,使得数据湖的运维、开发更加精细化。

2.4 微软的数据湖构建方案

Azure的数据湖解决方案包括数据湖存储、接口层、资源调度与计算引擎层。存储层是基于Azure object Storage构建的,是对结构化、半结构化和非结构化数据提供支撑。接口层为WebHDFS,在Azure object Storage实现了HDFS的接口。在资源调度上,Azure基于YARN实现。计算引擎上,Azure提供了U-SQL、hadoop和Spark等多种处理引擎。限于篇幅,本文不再对其做深入剖析。

3 构建地质数据湖的主要技术方法

地质数据湖的建设过程应该与地质信息化工作紧密结合。但是地质数据湖的建设过程与传统的数据仓库,甚至是当前大热的数据中台应该是有所区别的。区别在于,数据湖应该以一种更敏捷的方式去构建,“边建边用,边用边治理”。

3.1 数据摸底

摸清楚数据的基本情况,包括数据来源、数据类型、数据形态、数据模式、数据总量、数据增量。数据湖是对原始数据做全量保存,因此无需事先进行深层次的设计。

当前我局地质大数据平台中,围绕成果地质资料、地质数据库形成了完整的半结构化、非结构化地质大数据中心(地质资料中心)。在MySQL、达梦数据库等关系数据库管理平台基础上,对财务、项目、质量等管理业务形成了结构化的业务数据。今后还将持续入云增量数据,以及增加地质工作全业务、全流程的其它数据内容。

3.2 技术选型

根据数据摸底的情况,确定地质数据湖建设的技术选型。事实上,关于数据湖的技术选型,业界有很多的通行的做法,基本原则是:“计算与存储分离”“弹性”“独立扩展”。存储选型是分布式对象存储系统(如S 3/O S S/O B S/HDFS等);计算引擎上建议重点考虑批处理需求和SQL处理能力,因为在实践中,这两类能力是数据处理的关键。无论是计算还是存储,优先考虑serverless的形式;后续可以在应用中逐步演进,需要独立资源池的时候再考虑构建专属集群。

3.3 数据接入

确定要接入的数据源,完成数据的全量抽取与增量接入。

当前局地质大数据平台的数据还是分散在各业务系统中,数据接入过程中要重点考虑数据产权、数据模式冲突、异构数据的兼容性等技术问题。

3.4 应用治理

这一步是构建地质数据湖的关键,从数据湖的角度来看,数据应用和数据治理应该是相互融合、密不可分的。从数据应用入手,在应用中明确需求,在数据ETL的过程中,逐步形成业务可使用的数据;同时形成数据模型、指标体系和对应的质量标准。数据湖强调对原始数据的存储,强调对数据的探索式分析与应用,但这绝对不是说数据湖不需要数据模型;恰恰相反,对业务的理解与抽象,将极大地推动数据湖的发展与应用,数据湖技术使得数据的处理与建模,保留了极大地敏捷性,能快速适应业务的发展与变化。

从技术视角来看,地质数据湖不同于大数据平台之处,还在于地质数据湖为了支撑数据的全生命周期管理与应用,需要具备相对完善的数据管理、类目管理、流程编排、任务调度、数据溯源、数据治理、质量管理、权限管理等能力。在计算能力上,需要支持SQL和可编程的批处理两种模式(对机器学习的支持,可以采用Spark或者Flink的内置能力);在处理范式上,可以采用基于有向无环图的工作流的模式,并提供集成开发环境。

4 总结

地质数据湖作为新一代大数据分析处理的基础设施,需要超越传统的大数据平台[3]。今后在适当时机,有必要将地质大数据中心拓展升级,真正形成地质数据湖。未来地质数据湖可能会朝以下方向发展:

4.1 云原生架构

基于地质数据湖实现存储和计算分离,计算能力和存储能力均可独立扩展;多模态计算引擎支持,SQL、批处理、流式计算、机器学习等;提供serverless态服务,确保足够的弹性。

4.2 足够用的数据管理能力

通过数据湖提供更为强大的数据管理能力,包括但不限于数据源管理、数据类目管理、处理流程编排、任务调度、数据溯源、数据治理、质量管理、权限管理等。

4.3 大数据的能力,数据库的体验

目前绝大多数数据分析人员都只有数据库的使用经验,大数据平台的能力虽强,但是对于用户来说并不友好,数据科学家和数据分析师应该关注数据、算法、模型及其与业务场景的适配,而不是花大量的时间精力去学习大数据平台的开发。

4.4 完善的数据集成与数据开发能力

对各种异构数据源的管理与支持,对异构数据的全量/增量迁移支持,对各种数据格式的支持都是需要不断完善的方向。同时,需要具备一个完备的、可视化的、可扩展的集成开发环境。

4.5 与业务的深度融合与集成

典型数据湖架构的构成基本已经成为了业界共识:分布式对象存储+多模态计算引擎+数据管理[4]。决定数据湖构建成败的关键在于数据管理,无论是原始数据的管理、数据类目的管理、数据模型的管理、数据权限的管理还是处理任务的管理,都离不开与业务的适配和集成;地质数据湖与地质数据科学家和地质数据分析师形成良性发展与互动。如何在地质数据湖预置地质行业数据模型、ETL流程、分析模型和定制算法,可能是未来地质数据湖竞争力的一个关键点。

猜你喜欢

数据源数据管理引擎
企业级BOM数据管理概要
定制化汽车制造的数据管理分析
海洋环境数据管理优化与实践
CTCS-2级报文数据管理需求分析和实现
Web 大数据系统数据源选择*
基于不同网络数据源的期刊评价研究
无形的引擎
基于真值发现的冲突数据源质量评价算法
基于Cocos2d引擎的PuzzleGame开发
分布式异构数据源标准化查询设计与实现