一、什么是数据湖管理
- 什么是数据湖
数据湖是一个庞大的数据集集合,具有以下特点:
- 可以托管在不同的存储系统中;
- 可能有各种各样的格式;
- 许多数据不带有可用的元数据,或者使用其他格式描述其元数据
- 可能会随时间自动变化
下图是https://www.data.gov/开放的不同数据格式的分布比例。虽然和企业的数据分布比例不完全一致,但是可以看出其具有上面描述的4个特点。比如HTML是不带有可分析的元数据的,需要做一定的处理才可以获取。
- 数据湖面向数据科学的价值
对于数据科学,数据湖提供了便利的存储层便于分析和学习任务。基于数据湖的共享存储
加上分布式的计算框架,可以提供所需的基础架构来共享和重用海量数据集。现在主要的场景包括:
- 简单处理后加载数据湖中的数据集合到DBMS或数据仓库对外服务
- 还有不少数据需要进行深度的处理比如ETL、计算等再加载到DBMS中
- 还有不少开放的数据管理价值待挖掘
- 现有的数据湖管理解决方案
目前工业界使用可靠的数据湖存储加上hadoop、spark等这些工具来进行数据管理、数据探索、数据清洗、数据集成等,解决各个组织在数据湖中数据的管理。但是依然有不少挑战:
- 当前对数据湖的使用还在比较初级的阶段,面向数据湖的搜索,提取,清洗和集成这些能力都有待加强
- 当前数据湖还只是数据存储和处理的一个介质,还不具备面向应用提供价值的完备能力,需要通过ETL后写入DBMS或者数仓提供服务
- 未来的数据湖管理要解决的核心问题
提供面向海量半结构化数据的按需的数据湖管理能力:
- 数据的探索:比如分析、计算、AI等
- 元数据的抽取:对半结构化、非结构化数据的元数据挖掘
- 数据的清洗:清洗有效的元数据以及数据
- 数据的集成:构建统一的数据视图及模型,供外部集成
二、数据湖管理的技术架构
1、数据湖的数据组织
下面是数据湖中存储数据的组织图,从中我们可以看到几个特点:
- 数据类型:相比DBMS、数仓既包含带有schema的结构化数据,同时包含非结构化数据以及半结构化数据
- 面向可分析的接入方式:
- 带schema的结构化数据:和数仓一样,通过导入工具接入
- 非结构化数据:需要通过抽取能力从中抽取可管理的元信息
- 不带schema的结构化数据:需要通过parse技术获取元数据
- 分析:数据湖的价值不再仅仅局限于数据存储,面向分析,挖掘其中的价值成为趋势
- 元数据管理:为了可分析,面向不同的数据类型,需要构建统一的数据视图(元数据管理)
- 面向未来的数据湖管理系统架构图
从下图可以看到数据湖管理系统面向数据源的摄入、以及数据的可分析及集成来构建。数据湖管理本身需要具备统一的数据模式及元数据视图,支持面向海量多种格式数据的摄入及抽取、版本、清洗、元数据分片等能力。当然这个图是比较抽象的,在实际的工业界落地需要从系统架构层面做进一步的分层。
三、数据湖管理核心技术解析
- Data Ingestion(数据摄入)
- 含义:这里的数据摄入相比面向数仓的数据摄入,不仅包含数据的导入,同时包含已有在数据湖中的数据,通过元数据发现等技术让其可管理。
- 机会与挑战:数据摄取的挑战在于面向海量数据支持实时摄入的同时,使用更复杂的索引建立数据加速能力,
使这些数据立即可用于分析
- 学术界相关研究:
- Mison、Simdjson:基于向量化处理技术支持JSON格式的高效schema识别
- Speculative Distributed CSV Parsing:支持csv文件的分布式数据识别技术
- Sparser:面向TEXTFILE原始数据的高效检索技术
- Sherlock:使用神经网络的方式识别字段类型
- Data Extraction(数据抽取)
- 含义:把原始数据抽取到可分析的结构化数据
- 机会与挑战:面向数据抽取的主要挑战在于半结构化中抽取结构化支持分析
- 学术界相关研究:
- Google Web Crawl:支持从HTML抽取结构化可分析的数据
- DATAMARAN:流式的从log文件中抽取结构化数据
- DeepDive:通过机器学习的方式,从暗数据中智能的抽取有效数据
- Metadata Management(元数据管理)
- 含义:面向数据湖统一的元数据及数据模式管理视图
- 机会与挑战:管理丰富的数据格式;支持海量元数据高效管理及查询;支持元数据的演进变化。
- 学术界相关研究:
- GOODS:google的元数据管理系统
- 通用的架构如下:
- Data Cleaning(数据清洗)
- 含义:数据清洗在企业界很常用,比如ETL。但是面向数据湖的数据清洗技术有待发展,数据清洗过程会伴随着元数据抽取、元数据变化等过程;同时这里的数据清洗不一定会产生数据,有面向schema的清洗。
- 机会与挑战:面向元数据数据异构化、schema变化等特点构建清洗系统
- 学术界相关研究:
- CLAMS:支持异构数据的数据抽取,支持引入约束与人工反馈加强清洗效果。下面是架构图:
- Dataset Versioning(数据集版本)
- 含义:数据湖中的数据是动态变化的,有新的数据摄入,以及老的数据产生新版本
- 机会与挑战:管理schema的演进以及版本之间schema的关联、随着版本的增加支持按照版本来降低成本
- Data Discovery(数据集探索)
- 含义:对数据湖管理的数据集合进行探索和发现,比如血缘、关联性、查询数据集
- 机会与挑战:数据湖中数据集数量巨大、数据信息具有不完整的特性。
- 学术界相关研究:
- LSH:支持可join表检索、可union表检索、属性检索
- JOSIE:支持搜索top-k的可join的表
四、企业界数据湖管理方案
目前在数据湖管理方案方面,AWS的lake formation&glue、阿里云DLA的数据湖管理已经有一定的建设,能够满足用户基础的数据湖管理系统。同时从功能发布来看两款产品也在不断的演进。
Data Ingestion | Data Extraction | Metadata Management | Data Cleaning | Data Discovery | |
阿里云DLA | 元数据发现及实时入湖 | 元数据发现、ETL、实时入湖 | 统一元数据 | ETL | 关键字查询 |
AWS LakeFormation&Glue | crawler | crawler、ETL | 统一元数据 | ETL | 关键字查询 |
其他 |