数据湖:设计更好的架构、存储、安全和数据治理

2023-11-15

问题导读:
1、对数据湖有哪些预期?
2、数据湖架构如何设计?
3、如何做好数据治理工作?
4、如何保障数据湖的安全?



前言

对任何业务来说,数据驱动的结果、预告和对趋势的预测都是必不可少的。今天,在我们所做的每件事中,都能看到某种分析的逻辑在背后。从点击网站(点击流分析)、在线购买(客户行为)、遗传学、CRM、公用事业、医疗保健,甚至选举,我们都可以看到分析的存在。分析的能力不再让你获得优势,它已经变成了你保持业务不被淘汰的必要条件。它倒逼组织建立数据湖或升级现有的数据仓库。
这就引出了一个非常有趣但也令人困惑的问题:我应该用数据仓库还是数据湖?答案其实很简单。一般情况下,你应该同时拥有数据仓库和数据湖,更准确地说,数据仓库位于数据湖中。

数据仓库 vs 数据湖

数据仓库是为分析来自不同系统或业务线的结构化数据而优化的数据库。为了支持更快的SQL驱动操作报告和分析,模式和数据结构都已经预先定义了。数据仓库中的数据已经被清理、丰富和转换为“单一的真理来源”。

然而,数据湖存储来自商业应用程序、移动应用程序、物联网设备和社交媒体的结构化和非结构化数据。模式在数据刚捕获阶段是不需要提前定义的。这意味着你可以存储数据,而不需要仔细设计,也不需要知道要获得什么样的见解。它支持大数据分析、搜索分析、机器学习、实时分析、日志分析和点击流分析等。

理论上,数据湖听起来像是所有问题的一站式解决方案,但并不令人惊讶的是,很多数据湖都失败了。数据湖解决了两个主要问题:“消除数据竖井”和“存储异类源”。然而,这也带来了许多挑战,需要正确的体系结构、存储、数据治理和安全模型来驱动业务结果。


数据湖的特性

对数据湖的预期

数据湖应该能够交付:
1.    不同的数据源:数据湖应该支持从任何数据源高效高速收集数据,来自不同来源的数据有助于执行完整和深入的分析;
2.    数据可访问性:它应该允许组织/部门范围内的数据以一种安全的授权方式从多个来源访问数据,数据专业人员和企业不受IT部门的官僚主义影响;
3.    及时性:数据很重要,但只有在及时收到数据的情况下才重要。所有用户都有一个有效的时间窗口,在此期间,正确的信息可以影响他们的决策;
4.    自助式服务:对于组织范围的数据,数据湖应该允许用户使用所需的工具集构建他们的报告和模型。
我们接下来要讨论怎样设计更好的数据湖,下图提到的微服务架构、安全、治理、和存储是构建有效的、数据驱动的、未来感十足的数据湖的四大支柱。



数据湖的四大支柱

架构

大多数现代数据湖都是使用微服务体系结构构建的,其核心是构建一套专注于业务功能并可独立部署的小型服务。微服务体系结构是构建解耦的、敏捷的和自动化的数据湖应用程序的理想选择。一个理想的架构应该有:

解耦应用程序:所有进程都应该解耦,以避免出现故障时无法应对。例如,处理一组数据管道的失败不应阻止处理其余的数据管道。
消除单点故障:单点故障可能导致整个系统崩溃。而多点故障可以确保在工程师解决故障时,其他的数据管道可以不受影响。这也有助于防止类似DDoS的攻击。这种方法应该同时用于硬件和应用程序。

敏捷:在小的sprint中与业务合作交付最可行的产品(MVP)。业务和IT作为合作伙伴在sprint中添加特性。这确保了没有意外,而且有效的微服务模型允许并发应用程序部署。

计算与存储解耦合:允许存储和计算资源的独立扩展,可以垂直地(向同一台机器添加容量)和水平地(添加更多的机器),以接近最佳配置。

审核和日志记录:由于有如此多的应用程序和进程以一种解耦的模式运行,因此记录事件以分类问题和流变得非常重要。从数据治理的角度来看,记录各种API和事件的审计记录变得非常重要。如果存在任何破坏或未经授权的访问,这对于理解服务是如何被使用非常方便。几乎所有的云平台都提供审计服务,需要启用这些服务来存储日志。始终采取预防措施,使审计日志不可变,不受篡改。

存储
存储是现代数据湖的核心。数据湖服务于具有不同背景和工具偏好的不同客户,比如数据科学家、分析师和业务用户,他们都需要一组不同的工具和对数据的访问。集中存储有助于更好的治理、维护和使用多种工具的能力。通过集中呈现数据,所有应用程序和工具都可以轻松读写数据。这种方法提供了替换工具的灵活性,因为存储已经集中并解耦了。然而,拥有以下特征是很重要的:



存储特性

可伸缩性:企业数据湖充当整个组织或部门数据的集中式数据存储。它必须具备扩展性,没有容量的限制。像AWS S3或Azure存储这样的服务有助于实现这一点。

高可用性:数据读取的及时性和不间断可用性是决策的关键。跨多可用性区域的复制有助于实现高数据可用性。多区域数据复制确保有效的灾难恢复。对于用户跨多个区域工作的业务,跨不同区域复制数据有助于更快地为数据提供服务,因为数据距离用户或应用程序更近。

数据持久性:数据一旦存储,就不会因为磁盘、设备、灾难或任何其他原因而丢失。核心存储层具有非常高的持久性,可以实现出色的数据健壮性
安全性:无论是云计算还是本地计算,数据安全性都是最重要的考虑因素。数据必须是加密的、耐篡改的、不可变的(在需要的地方),并且符合要求的规则。数据丢失就是业务丢失。

治理和审计:应用治理规则、数据不变性、识别PII数据以及提供数据使用的完整审计日志的能力对于满足法规和法定要求至关重要。
存储任何内容:数据湖的主要设计考虑事项之一应该是存储任何格式的数据(结构化和非结构化),并提供快速的检索时间。对于此类使用场景,强烈建议使用对象存储。

存储文件的大小和格式:一个小文件有大小小于Hadoop文件系统(HDFS)默认块大小为128 MB的。在Hadoop框架,集群中的每个文件被表示为一个对象的名字节点的内存,每个占150个字节。这意味着大量文件将大量消耗内存。大多数基于Hadoop的框架在使用小文件时效率不高。另一个重要的方面是文件的格式(行存储vs列存储)。通过柱状文件格式,可以只读取、解压和处理当前查询所需的值。流行的文件格式是ORC和Parquet,它们都有自己的用例和优点。

汇聚

数据汇聚是将数据从不同来源(如点击流、数据中心日志、传感器、物联网设备、API和数据库)获取的过程。根据源的类型以及是否需要实时处理数据,可以实时或批量地获取数据。在数据湖中,数据以原始格式(结构化或非结构化)引入。可以使用流行的数据复制工具、流工具或ETL工具摄取数据。数据摄入的主要目的是快速有效地以原始格式获取数据。在这个阶段没有应用转换,如果有了可用的原始数据,我们可以回到需要的时间点。建议有效地组织数据存储,以实现更快的数据访问。组织结构的例子——主题区域/数据源/对象/年/月/日被广泛使用。

数据处理

这涉及到构建数据管道并处理数据。理想情况下,第一步应该是创建一个数据目录(我们将在数据治理部分详细讨论它)。通常,在数据处理过程中应该生成多层独立的数据,如标准化、清理和特定于应用程序的转换数据,用于不同的目的,如机器学习、数据仓库或分析。这个阶段还包括为处理数据选择正确的框架。

大数据框架:要在高速下处理大量数据,分布式框架是首选。分布式框架意味着数据集被划分为多个文件(默认为128 MB),然后在多台机器上并行处理,然后合并数据。分布式使更短的时间内处理大型数据集成为可能。有各种各样的框架,比如Apache Hadoop、Apache Spark,还有一些商业可用的云框架。最流行的框架之一是Spark 2.0,它是高度内存密集型的,并提供了各种选项,如处理时间序列数据、图形数据和Spark SQL来简化编码。AWS提供了AWS EMR,这是一个托管服务,并提供了许多预先安装的工具,可以选择您所选择的框架。

ETL工具:像Informatica PowerCenter、Talend、Microsoft SQL server SSIS和Matillion这样的ETL工具非常适合运行ETL数据管道。它还提供了数据编目选项。

Features:可伸缩性:理想的数据处理框架应该允许在任何时间点进行垂直伸缩(在同一台机器上增加计算能力)和水平伸缩(并行地增加更多机器),并根据数据负载需求实现从零到最小的停机时间。自动分组是一种基于CPU或IOPS等重要参数自动增加计算能力的好方法。

永久集群与临时集群:一些业务需要24*7运行的集群,这意味着资源一直在被积极使用。然而,有些业务需要每天或每周花几个小时处理数据。在这种情况下,不间断运行集群并产生成本是没有意义的。在Hadoop集群中,数据存储在节点上,这使得在不丢失数据的情况下终止集群非常困难。然而,像AWS EMR这样的服务允许将数据存储到AWS S3。这允许轻松地终止EMR集群,并在需要时重新启动集群。这是非常划算的。

托管集群:管理Hadoop集群相当麻烦。它需要大量的投资和维护,而且相当昂贵。现在,AWS、Azure和谷歌等供应商都在提供托管集群,能够快速终止和创建集群。这允许企业将精力集中在数据结果上,而不是支持服务器。

消费

数据湖的主要推动力之一是允许拥有不同技能集的客户使用不同首选工具的数据。数据编目、不可变的原始数据、集中存储、多层数据处理和只读模式的多种工具使用。我们可以把消费者分成以下几类:

数据仓库:业务用户需要高性能的数据仓库来运行pb级数据上的复杂SQL查询,以返回复杂的分析输出。一些设计因素使得工具能够提供快速的结果。AWS Redshift spectrum、谷歌BigQuery和Azure SQL Data warehouse等工具提供了巨大的压缩、区域映射、柱状存储,以及在存储文件上高性能运行复杂查询的能力。此外,云平台还提供了可用性、持久性、安全性和成本效益。

交互式查询:对于一些用例,数据分析师需要运行SQL查询来分析大量的数据湖数据。Apache hive、Apache Presto、Amazon Athena和Impala等工具使用数据目录构建SQL友好的逻辑模式,以查询存储在选定格式文件中的底层数据。这允许在数据文件上直接查询结构化和非结构化数据。

机器学习:数据科学家经常需要针对一个巨大的数据集运行机器学习算法来进行预测和预测。数据湖提供了对企业范围数据的访问,以探索和挖掘数据以获得业务洞察力。数据科学家可以使用Dataiku、Tensorflow和Sagemaker等工具,或者在AWS等平台上运行用R或Python编写的算法,AWS提供了在集中式数据存储上使用经济实惠的spot EC2实例按需要旋转EMR spark集群的能力。

人工智能和自动化:像在数据湖之上使用Alexa的聊天机器人和语音分析这样的解决方案,或者数据湖托管解决方案显著改善了客户体验,减少了运营开销。这些解决方案可以与安全网站或移动应用程序集成。



构建在AWS S3上的数据湖架构

数据治理

在数据湖中,从多个来源收集组织范围的数据,包括消费者个人识别信息(PII)数据。该数据包含分析员可以用来识别和改进业务产品的重要信息。然而,这些敏感数据必须受到保护,符合隐私法律法规。这使得数据治理成为设计数据湖的关键支柱。数据治理是指对企业中数据的可用性、可用性、完整性和安全性的全面管理。它主要取决于业务策略和技术实践。治理应该在一开始就作为设计的一部分合并,或者至少从一开始就应该合并最低标准。数据治理主要包括以下方面:

元数据管理:由于数据湖中存储了大量数据,因此很难跟踪哪些数据已经可用,并可能导致数据溢出。对此的一个解决方案是数据目录。数据目录是与数据管理和搜索工具相结合的元数据的集合,这些工具可以帮助分析人员和其他用户找到他们需要的数据。数据目录作为可用数据的目录,并提供用于评估健身数据的预期用途的信息。最有效的方法是维护一个中央数据目录,并跨各种处理框架(如Apache Hadoop、Apache Spark、AWS Athena和各种其他可用工具)使用它。这确保了元数据的完整性,并应用了简单的数据治理规则。

数据质量:数据质量与数据完整性、准确性、一致性、数据屏蔽和标准化有关。在使数据可用之前,它确保应用了所有这些属性并正确地分类了数据。
遵从性和规则:必须根据所操作的业务领域实现几个遵从性要求。例如GDPR, HIPAA和ISO标准。如果不遵守,可能会被处以巨额罚款,甚至采取更严厉的行动。它也削弱了信任和商业信誉。有一些产品和服务可以帮助实现这一点,比如AWS Macie帮助识别PII信息,AWS HSM提供完全控制和安全的密钥管理服务(KMS)。

安全

对于本地和基于云的企业数据湖,安全性都是至关重要的,应该是最优先考虑的问题。安全性应该从一开始就进行设计,并且需要在非常基本的架构和设计中进行整合。此外,只有在企业的整体安全基础设施和控制框架中部署和管理数据湖的安全性,才能成功。安全可分为以下几类:
数据安全:静态和传输中的加密:组织的数据是一种需要保护的资产,不被窥探。几乎所有数据都必须在静止状态下(存储在文件和数据库中)得到保护。默认情况下,所有云提供商都为其存储层提供加密机制。此外,可以通过选择加密算法以及由谁(云提供商或客户)管理和旋转密钥,使用密钥管理服务来实现加密。对于非常安全的系统或由于监管需要,组织希望管理其机器上的密钥,可以使用硬件安全模块(HSM)。传输中的数据意味着数据在网络上在设备和服务(如API)之间移动。这可以通过使用带有证书的TLS/SSL传输来实现。

网络安全:下一个重要方面是网络安全。对于云解决方案,虚拟私有云(VPC)提供了云中的网络隔离。它提供了使用安全组和使用传统方法(如网络ACL和CIDR块限制)限制连接的灵活性。VPC端点的使用允许流量通过私有网络而不是公共网络传输。所有这些策略都创建了一个网络非军事区(DMZ)。另一个方面是网络防火墙,它控制访问并监视网络上的web流量。它还授权出站会话。它与OSI层中的网络层属性位于一起,所以它只在网络层上提供访问控制。
访问控制:企业数据湖包含组织范围的数据,因此确保正确的身份验证策略变得非常重要。每个组织都使用常用的技术来维护标准认证,比如active directory,它可以用于为数据湖生态系统产品提供认证。本地和云平台都支持将企业身份识别基础设施映射到云提供商的许可基础设施上的方法。此外,可以使用身份访问管理(IAM)控制细粒度访问。像AWS这样的云平台使用AWS IAM和bucket策略来访问数据文件,提供精细的访问管理。这确保只有正确的用户集可以访问所需的资源。

应用程序安全性:保护应用程序免受外部攻击是至关重要的。一般来说,网络防火墙没有检测/防止威胁的机制。为此,我们应该使用web应用程序防火墙来帮助保护您的web应用程序或api,防止常见的web攻击影响可用性、危害安全性或消耗过多的资源。应用程序防火墙允许您创建阻止常见攻击模式(如SQL注入或跨站点脚本编写)的安全规则,以及过滤您定义的特定流量模式的规则,从而控制流量如何到达应用程序。另一种方法是实现微服务体系结构,比如将应用程序与存储或其他应用程序解耦,以减少表面的攻击。如果使用云,设计应该包含自动提供组,它可以自动添加资源来吸收高流量攻击,比如分布式拒绝服务(DDoS)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据湖:设计更好的架构、存储、安全和数据治理 的相关文章

  • Python 数组(Arrays)

    数组 Array 是有序的元素序列 若将有限个类型相同的变量的集合命名 那么这个名称为数组名 组成数组的各个变量称为数组的分量 也称为数组的元素 有时也称为下标变量 用于区分数组的各个元素的数字编号称为下标 数组是在程序设计中 为了处理方便
  • 为什么db是先写日志,而redis是后写日志

    预写式日志 Write Ahead Logging WAL 基本上所有的数据库都实现了这个WAL技术 来保证原子性和持久性 WAL的核心思想是 在数据写入到数据库之前 先写入到日志 这一定程度上也可以提高效率 因为不需要每次都和磁盘交互 可
  • 各种开源应用的实践经验

    在实际的项目中 很多地方需要用到开源项目 而现在的开源项目太多 从开源项目的首页去看的话 也未必能得到足够充分的信息 多数时候是选用淘汰法 选剩下两到三个项目然后自己再去一个一个地去试用 选择合适的开源组件确实是一件麻烦事 本文将记录下选择
  • Arthas 定位CPU跑满问题,源头竟是Apache Beanutils

    一 背景 大早上 线上k8s 机子 某个机子 cpu 飙高 导致k8s 健康检查失败 线上环境会自动执行jstack 上传到oss 通知到 钉钉告警群 直接分析锁 cpu 高的线程 二 过程分析 2 1 排查cpu 占用最高的线程 使用js
  • JAVA-0基础学习笔记-day01

    0基础学Java笔记day01 01 01 计算机基础知识 计算机概述 了解 A 什么是计算机 计算机在生活中的应用举例 计算机 Computer 全称 电子计算机 俗称电脑 是一种能够按照程序运行 自动 高速处理海量数据的现代化智能电子设

随机推荐

  • Java经典面试题 带答案(五)

    Java经典面试题 带答案 五 Java 面试笔试题汇总 一 编程语言 Java 2 二 软件工程方面 9 三 智力测试 9 四 数据库 12 五 Java框架方面 14 六 XML方面 17 七 网络基础方面 17 八 算法方面 19 1
  • eclispe黑色配色方案,插件配置

    http blog csdn net zhwangkaixuan article details 9303359 使用android官方的ADT感觉界面白色的太怪了 看就了眼睛不舒服 上网找了一个eclispe的插件可以定制编辑器的配色方案
  • Docker学习笔记05-----镜像仓库之官方Docker Hub

    官方Docker Hub https hub docker com 1 创建Repository 2 构建容器镜像 2 1 创建Dockerfile FROM java 8 MAINTAINER itmrl LABEL name hello
  • Qt颜色选择器(HSV)

    目录 引言 HSV颜色空间 实现思路 代码实现 引言 基于Qt实现的HSV颜色选择器 效果如下 HSV颜色空间 HSV Hue Saturation Value 是根据颜色的直观特征创建的颜色模型 如下图所示 Hue为色调 通过角度表示不同
  • 3_Nginx重载、热部署、日志切割

    文章目录 常用命令 重载配置文件 热部署 流程 日志切割 常用命令 获取帮助 nginx h 使用指定的配置文件 nginx c conf file 在命令行中覆盖配置文件中的指令 nginx g 指定运行目录 nginx p 发送信号 n
  • 【Vue学习笔记3】使用Vite开启一个Vue3工程项目

    1 什么是Vite Vite是一个web开发构建工具 Vite 的竞品是 Webpack 而且按照现在的趋势看 使用率超过 Webpack 也是早晚的事 Vite 主要提升的是开发的体验 Webpack启动调试环境需要 3 分钟都很常见 V
  • linux环境下的Qt编程问题解决

    1 gcc编译器无法使用 原因可能是没有安装g 终端输入命令 sudo apt get install g 2 编译程序报错Could not start process make qmake all 解决办法 终端输入命令 sudo ap
  • 机器学习(第二章)—— 模型评估

    目录 一 评估指标的局限性 二 ROC曲线 三 余弦距离的应用 四 A B测试的陷阱 五 模型的评估方法 六 超参数优化 七 过拟合与欠拟合 准确率的局限性 精确率与召回率的权衡 平方根误差的 意外 什么是ROC曲线 为什么要进行在线A B
  • include过滤器

    include过滤器分为core gui io scene video几个文件夹以及 IEventReceiver h Irrlicht h Irrlicht h IrrlichtDevice h Irrlicht h IrrlichtDe
  • 【Selenium】webdriver.ChromeOptions()官方文档参数

    Google官方Chrome文档 在此记录一下 Chrome Flags for Tooling Many tools maintain a list of runtime flags for Chrome to configure the
  • CLIP与Chinese-CLIP:多模态预训练模型解读和图文检索体验

    欢迎关注公众号 AICV与前沿 一起学习最新技术吧 欢迎关注公众号 AICV与前沿 一起学习最新技术吧 欢迎关注公众号 AICV与前沿 一起学习最新技术吧 1 CLIP回顾 CLIP是2021年OpenAI提出的基于图文对比学习的多模态预训
  • MyBatis-Plus 使用拦截器实现数据权限控制

    前言背景 平时开发中遇到根据当前用户的角色 只能查看数据权限范围的数据需求 列表实现方案有两种 一是在开发初期就做好判断赛选 但如果这个需求是中途加的 或不希望每个接口都加一遍 就可以方案二加拦截器的方式 在mybatis执行sql前修改语
  • C++中类静态方法与实例方法的区别

    生成时机 静态方法在编译的时候就已经加载了并分配了内存 而实例方法只有在对象创建之后才会为实例方法分配内存 因此调用静态方法速度快 但是会占用内存 调用方式 静态方法归整个类所有 因此调用它不需要实例化 可以直接调用 类 静态方法 实例方法
  • stock趋势交易系统

    进场步骤 1 趋势 2 做单区间 回调区间就是做单区间 比如回调至最长红柱的1 3以内开始 变红或拉长不再开始 做单区间级别比趋势级别低一个级别 MACD绿柱缩短 3 决策点 比做单区间第一个级别 4 筛选 比如 看这个决策点是怎么得来的
  • js函数重载

    function createOverload var callMap new Map function overload args const key args map args gt typeof args join 得到形如 stri
  • 雷达中和计算机视觉中的目标识别检测及跟踪区别在哪里?

    作者 梦里寻梦 苦瓜 编辑 汽车人 原文链接 https www zhihu com question 58615878 answer 2100196576 https www zhihu com question 58615878 ans
  • 漏洞复现- - -CVE-2016-5195 Dirty Cow脏牛提权漏洞

    目录 一 漏洞分析 二 形成原因 三 漏洞检测复现 1 编译poc 文件 2 复现漏洞 四 漏洞修复 方法一 方法二 一 漏洞分析 脏牛 Dirty COW 编号 CVE 2016 5195 是2016年10月18日被曝出的存在于Linux
  • VScode中js文件代码没有高亮问题

    问题 VScode中js文件js代码没有高亮 显示白色 解决方法 文件 gt 首选项 gt 设置 找到setting json 然后注释掉这段代码 重新打开文件 JS代码就有高亮了 白色看着实在别扭
  • python元组 列表 字符串最后一个下标_python字符串列表元组序列操作

    Table of Contents generated with DocToc python系列 字符串 列表 元组的操作 序列的访问及运算符 序列是为满足程序中复杂的数据表示 python支持组合数据类型 可以将一批数据作为一个整体进行数
  • 数据湖:设计更好的架构、存储、安全和数据治理

    问题导读 1 对数据湖有哪些预期 2 数据湖架构如何设计 3 如何做好数据治理工作 4 如何保障数据湖的安全 前言对任何业务来说 数据驱动的结果 预告和对趋势的预测都是必不可少的 今天 在我们所做的每件事中 都能看到某种分析的逻辑在背后 从