漫谈大数据 - 数据湖认知篇

news2024/12/22 20:04:11

        导语:数据湖是目前比较热的一个概念,许多企业都在构建或者准备构建自己的数据湖。但是在计划构建数据湖之前,搞清楚什么是数据湖,明确一个数据湖项目的基本组成,进而设计数据湖的基本架构,对于数据湖的构建至关重要。

目录

数据湖定义

Wikipedia

AWS

微软

定义概括

数据湖基本特征

数据方面

保真

灵活

可管理

可追溯

计算方面

计算引擎

存储引擎

数据湖基本架构

数据湖架构图

数据湖建设的基本过程

数仓建设过程

数据摸底

模型抽象

数据接入

融合治理

业务支撑

数据湖建设过程

数据摸底

技术选型

数据接入

融合治理

小结


数据湖定义

Wikipedia

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

        数据沼泽是一种退化的、缺乏管理的数据湖,数据沼泽对于用户来说要么是不可访问的要么就是无法提供足够的价值。

AWS

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

微软

        数据湖包括一切使得开发者、数据科学家、分析师能更简单的存储、处理数据的能力,这些能力使得用户可以存储任意规模、任意类型、任意产生速度的数据,并且可以跨平台、跨语言的做所有类型的分析和处理。数据湖在能帮助用户加速应用数据的同时,消除了数据采集和存储的复杂性,同时也能支持批处理、流式计算、交互式分析等。数据湖能同现有的数据管理和治理的IT投资一起工作,保证数据的一致、可管理和安全。它也能同现有的业务数据库和数据仓库无缝集成,帮助扩展现有的数据应用。

定义概括

        百家之言,关于数据湖的定义其实很多,但是基本上都围绕着几个特性展开,我们现在就来总结一下。

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

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


数据湖基本特征

数据方面

保真

        数据湖中对于业务系统中的数据都会存储一份“一模一样”的完整拷贝。与数据仓库不同的地方在于,数据湖中必须要保存一份原始数据,无论是数据格式、数据模式、数据内容都不应该被修改。在这方面,数据湖强调的是对于业务数据“原汁原味”的保存。同时,数据湖应该能够存储任意类型/格式的数据。

灵活

        既然没办法预估业务的变化,那么索性保持数据最为原始的状态,一旦需要时,可以根据需求对数据进行加工处理。因此,数据湖更加适合创新型企业、业务高速变化发展的企业。同时,数据湖的用户也相应的要求更高,数据科学家、业务分析师(配合一定的可视化工具)是数据湖的目标客户。

可管理

        数据湖中会存在两类数据:原始数据和处理后的数据。数据湖中的数据会不断的积累、演化。因此,对于数据管理能力也会要求很高,至少应该包含以下数据管理能力:数据源、数据连接、数据格式、数据schema(库/表/列/行)。同时,数据湖是单个企业/组织中统一的数据存放场所,因此,还需要具有一定的权限管理能力。

可追溯

        数据湖是一个组织/企业中全量数据的存储场所,需要对数据的全生命周期进行管理,包括数据的定义、接入、存储、处理、分析、应用的全过程。一个强大的数据湖实现,需要能做到对其间的任意一条数据的接入、存储、处理、消费过程是可追溯的,能够清楚的重现数据完整的产生过程和流动过程。

计算方面

计算引擎

        从批处理、流式计算、交互式分析到机器学习,各类计算引擎都属于数据湖应该包括的范畴。

        一般情况下,数据的加载、转换、处理会使用批处理计算引擎;需要实时计算的部分,会使用流式计算引擎;对于一些探索式的分析场景,可能又需要引入交互式分析引擎。

        随着大数据技术与人工智能技术的结合越来越紧密,各类机器学习/深度学习算法也被不断引入,例如TensorFlow/PyTorch框架已经支持从HDFS/S3/OSS上读取样本数据进行训练。

存储引擎

        在实际的使用过程中,数据湖中的数据通常并不会被高频次的访问,而且相关的应用也多在进行探索式的数据应用,为了达到可接受的性价比,数据湖建设通常会选择相对便宜的存储引擎(如S3/OSS/HDFS/OBS),并且在需要时与外置存储引擎协同工作,满足多样化的应用需求。


数据湖基本架构

见到过这么一段有意思的问答:

Q:数据湖为什么叫数据湖而不叫数据河或者数据海?

A:        “河”强调的是流动性,河终究是要流入大海的,而企业级数据是需要长期沉淀的,因此叫“湖”比叫“河”要贴切;同时,湖水天然是分层的,满足不同的生态系统要求,这与企业需求是一致的,“热”数据在上层,方便应用随时使用;温数据、冷数据位于数据中心不同的存储介质中,达到数据存储容量与成本的平衡。

        不叫“海”的原因在于,海是无边无界的,而“湖”是有边界的,这个边界就是企业/组织的业务边界;因此数据湖需要更多的数据管理和权限管理能力。

        叫“湖”的另一个重要原因是数据湖是需要精细治理的,一个缺乏管控、缺乏治理的数据湖最终会退化为“数据沼泽”,从而使应用无法有效访问数据,使存于其中的数据失去价值。

        在企业/组织内部,数据是一类重要资产已经成为了共识;为了更好的利用数据,企业/组织需要对数据资产进行长期的原样存储有效管理与集中治理面向业务,提供统一的数据视图、数据模型与数据处理结果

        对于一个典型的数据湖而言,它与大数据平台相同的地方在于它也具备处理超大规模数据所需的存储和计算能力,能提供多模式的数据处理能力;增强点在于数据湖提供了更为完善的数据管理能力

数据湖架构图

下图给出了一个数据湖系统的参考架构

大多数数据湖实践中推荐采用S3/OSS/OBS/HDFS等分布式系统作为数据湖的统一存储。

数据湖建设的基本过程

         数据湖是比传统大数据平台更为完善的大数据处理基础支撑设施,完善在数据湖是更贴近客户业务的技术存在。所有数据湖所包括的、且超出大数据平台存在的特性,例如元数据、数据资产目录、权限管理、数据生命周期管理、数据集成和数据开发、数据治理和质量管理等,都是为了更好的贴近业务,更好的方便客户使用。

数仓建设过程

数据摸底

        在构建数据湖初始工作就是对内部的数据做一个全面的摸底和调研,包括数据来源、数据类型、数据形态、数据模式、数据总量、数据增量等。在这个阶段一个隐含的重要工作是借助数据摸底工作,进一步梳理企业的组织结构,明确数据和组织结构之间关系。为后续明确数据湖的用户角色、权限设计、服务方式奠定基础。

模型抽象

        针对企业/组织的业务特点梳理归类各类数据,对数据进行领域划分,形成数据管理的元数据,同时基于元数据,构建通用的数据模型。

数据接入

        根据第一步的摸排结果,确定要接入的数据源。根据数据源,确定所必须的数据接入技术能力,完成数据接入技术选型,接入的数据至少包括:数据源元数据、原始数据元数据、原始数据。各类数据按照第二步形成的结果,分类存放。

融合治理

        简单来说就是利用数据湖提供的各类计算引擎对数据进行加工处理,形成各类中间数据/结果数据,并妥善管理保存。数据湖应该具备完善的数据开发、任务管理、任务调度的能力,详细记录数据的处理过程。在治理的过程中,会需要更多的数据模型和指标模型。

业务支撑

        在通用模型基础上,各个业务部门定制自己的细化数据模型、数据使用流程、数据访问服务

        很多情况下,业务是在试错、在探索,根本不清楚未来的方向在哪里,也就根本不可能提炼出通用的数据模型;没有数据模型,后面的一切操作也就无从谈起,这也是很多高速成长的企业觉得数据仓库/数据中台无法落地、无法满足需求的重要原因之一。

数据湖建设过程

数据摸底

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

技术选型

        根据数据摸底的情况,确定数据湖建设的技术选型。事实上,这一步也非常的简单,因为关于数据湖的技术选型,业界有很多的通行的做法,基本原则:“计算与存储分离”、“弹性”、“独立扩展”。存储选型是分布式对象存储系统(如S3/OSS/OBS);计算引擎上建议重点考虑批处理需求和SQL处理能力,因为在实践中,这两类能力是数据处理的关键,关于流计算引擎后面会再讨论一下。无论是计算还是存储,建议优先考虑serverless的形式。

数据接入

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

融合治理

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

       数据湖采用了一种更为“敏捷”的构建方式。

小结

        数据湖作为新一代大数据分析处理的基础设施,需要超越传统的大数据平台。而数据湖未来可能的发展重点有可能是:

  • 云原生,存储和计算分离、多模态计算引擎支持等;

  • 数据管理能力,数据源管理、数据类目管理、处理流程编排、任务调度、数据溯源、数据治理、质量管理、权限管理等;

  • 完善的数据集成与数据开发能力,一个完备的、可视化的、可扩展的集成开发环境;

  • 与业务的深度融合与集成,未来会有越来越多的行业数据湖解决方案涌现出来,与数据科学家和数据分析师形成良性发展与互动。

——————

欢迎点赞收藏评论区交流

转载请标明出处 谢谢~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Embarcadero Delphi 11 和 C++Builder 11 免费社区版发布!

Embarcadero为Delphi和CBuilder的最新11.3版本提供了社区版许可证。这是Delphi或CBuilder的免费版本,适用于学生,业余爱好者和初创公司(因为许可证仅对于收入有限的公司或个人)。 什么是CE社区版? Delphi 和 CBuilde…

【Git 入门教程】第七节、Git 远程仓库(Github)

GitHub是一个基于Git的代码托管平台,它是全球最大的开源软件社区之一。GitHub允许开发者在上面创建和托管他们的Git仓库,并与其他开发者进行协作。 GitHub是一个非常流行的Git工具,它是开源社区的重要组成部分,并支持许多著名的开…

【MySQL】交叉连接、自然连接和内连接查询

一、引入 实际开发中往往需要针对两张甚至更多张数据表进行操作,而这多张表之间需要使用主键和外键关联在一起,然后使用连接查询来查询多张表中满足要求的数据记录。一条SQL语句查询多个表,得到一个结果,包含多个表的数据。效率高…

测试人员的启蒙指南

文章目录 一. 了解测试1. 生活中的测试场景2. 什么是软件测试3. 实战练习 二. 软件测试和软件开发的区别三. 软件测试和软件调试的区别四. 软件测试的发展五. 软件测试的岗位六. 一个优秀的软件测试人员具备的素质 本篇中介绍测试人员是干什么的, 起到启蒙和了解的作用, 重点是…

A 股指数分时行情数据 API 数据接口

A 股指数分时行情数据 API 数据接口 多维度分时指标,指数分时,多时间区间查询参数。 1. 产品功能 支持所有指数数据查询;支持指数分时数据查询;多时间维度分时数据;多维度的统计时间以及数据结果;秒级查询…

linux系统应用中select函数与poll函数详解

目录 第一:poll()函数详解 第二:select()函数详解 第一:poll()函数详解 1 poll函数概述 select() 和 poll() 系统调用的本质一样,poll() 的机制与 select() 类似,与 select() 在本质上没有多大差别,管理多…

外设驱动库开发笔记53:MAX31856热偶变送器驱动

在我们的产品中经常有需要温度检测的地方,而热电偶温度检测电路是我们常用的。热电偶温度检测的方法很多,有时出于简单方便的考虑我们会选择热偶温度变送器来实现,这一篇我们就来讨论使用MAX31856热电偶温度变送器实现温度的检测。 1、功能概…

【PCL】—— 点云配准ICP(Iterative Closest Point)算法

文章目录 数学原理问题定义计算平移计算旋转 案例实现参考 ​     由于三维扫描仪设备受到测量方式和被测物体形状的条件限制,一次扫描往往只能获取到局部的点云信息,进而需要进行多次扫描,然后每次扫描时得到的点云都有独立的坐标系&…

第十六章 预制件prefab(上)

本章节我们介绍一下“预制件”,也有人叫“预制体”,也就是Prefab。在游戏世界中,那些自然环境的游戏对象,我们可以提前创建在场景中,这个大家能够理解。但是,有些游戏对象,需要根据游戏逻辑来通…

20230430 ICFD学习笔记 管道流动

三个边界: (1) 速度入口 (2) 压力出口 (3) 非滑移边界 一、先利用workbench进行网格的划分,导出K文件。 二、利用Ultraeidt进行K文件的修改 (或者是在lspp中直接删除也行) K文件开头是*Keyword Part *Define coordinate system后面到*Database binary D3prop全部删除 &…

Dubbo总结

目录 什么是分布式系统 单机架构、集群架构、分布式架构 Dubbo的概念 Dubbo的核心组件 Dubbo的常用注解 Dubbo的高级特性: 序列化特性安全 地址缓存 超时机制 重试机制 多版本灰度发布 负载均衡 集群容错 服务降级 服务限流 结果缓存 Dubbo实战:…

40.java-Set集合(HashSet,LinkedHashSet,TreeSet)

Set集合 1.Set集合特点2.Set集合实现类3. HashSet3.1 底层原理3.1.1 哈希表组成3.1.2 哈希值3.1.3 对象的哈希值特点 3.2 数据添加元素的过程3.3 HashSet的三个问题3.4 实例:去除重复元素 4. LinkedHashSet5. TreeSet5.1 特点5.2 集合默认规则5.3 例子5.4 两种比较规…

JavaScript 知识总结上篇(更新版)

1. 为什么 JS 是单线程的? 因为JS里面有可视的Dom,如果是多线程,这个线程正在删除DOM节点,另一个线程正在编辑Dom节点,导致浏览器不知道该听谁的 2.如何理解同步和异步? 同步:按照代码书写顺…

Linux——中断和时间管理(下)

目录 延时控制 定时操作 低分辨率定时器 高分辨率定时器 练习 延时控制 在硬件的操作中经常会用到延时,比如要保持芯片的复位时间持续多久、芯片复位后要至少延时多长时间才能去访问芯片、芯片的上电时序控制等。为此,内核提供了一组延时操作函数。…

DDD系列:三、Repository模式

为什么需要Repository? ​ Anemic Domain Model(贫血领域模型)特征: 有大量的XxxDO对象:这里DO虽然有时候代表了Domain Object,但实际上仅仅是数据库表结构的映射,里面没有包含(或…

kafka整理

kafka整理 一、kafka概述 kafka是apache旗下一款开源的顶级的消息队列的系统, 最早是来源于领英, 后期将其贡献给apache, 采用语言是scala.基于zookeeper, 启动kafka集群需要先启动zookeeper集群, 同时在zookeeper记录kafka相关的元数据 kafka本质上就是消息队列的中间件产品…

Codeforces Round 867 (Div. 3)(A-G2)

文章目录 A. TubeTube Feed1、题目2、分析3、代码, B. Karina and Array1、题目2、分析3、代码 C. Bun Lover1、问题2、分析(1)观察样例法(2)正解推导 3、代码 D. Super-Permutation1、问题2、分析(1&#…

力扣第343场周赛

第一次力扣,等大二寒暑假,有时间再来系统刷题 目录 🌼前言 🌼一,6341.保龄球游戏的获胜者 🌼二,6342.找出叠涂元素 🌳第一次 -- 超时 🌳第二次 -- AC &#x1f33c…

二叉树相关的简单递归oj

二叉树相关的简单递归oj 前言题目二叉树的前序遍历相同的树判断单值二叉树对称二叉树另一棵树的子树创建二叉树并遍历 前言 这篇博客主要是博主感觉对二叉树oj题目不太熟悉,随便整理的一下题目和解答,方便复习,所以讲题部分主要以我自己以及为…

Java 基础入门篇(二)——— Java 基础语法

文章目录 一、注释二、字面量三、变量3.1 变量概述3.2 变量在计算机中的底层原理 四、数据类型五、关键字、标志符六、类型转换6.1 自动类型转换6.2 表达式的自动类型转换6.3 强制类型转换 七、运算符7.1 基本算数运算符7.2 符号做连接符7.3 自增自减运算符7.4 赋值运算符7.5 …