数据湖—为更好的体系结构,存储,安全性和数据治理而设计

  我开始写这篇文章的目的是演示一种有关如何在AWS和Azure上构建数据湖的实用方法。 但是,意识到在深入实践之前先讨论一些最佳架构模式非常重要。 我还将写几篇有关演示实用方法的文章。

  

  数据驱动的结果,预测和预测业务趋势对任何业务都是必不可少的。 今天,我们所做的每一件事都至少看到了某种分析。 从点击网站(点击流分析),在线购买(客户行为),遗传学,客户关系管理,公用事业,医疗保健甚至选举,我们就可以看到分析正在被使用。 分析不再是一个要获得业务优势的问题,但是对于保持业务而言,它已经变得至关重要。 它导致组织构建数据湖或升级现有数据仓库。

  这使我们提出了一个非常有趣的问题,常常使许多人困惑。 我应该使用数据仓库还是Data Lake? 通常,组织应该同时具有数据仓库和数据湖,更确切地说,数据仓库位于数据湖中。

  数据仓库与数据湖

  数据仓库是经过优化的数据库,可以分析来自交易系统或不同业务部门的结构化数据。 预先定义了架构和数据结构,重点是实现更快的SQL驱动的操作报告和分析。 数据仓库中的数据经过清理,充实和转换,可以充当"单一事实来源"。

  但是,数据湖同时存储来自业务应用程序,移动应用程序,IoT设备和社交媒体的结构化和非结构化数据。 数据捕获时未定义架构。 这意味着您可以存储数据而无需进行仔细的设计,也无需知道要得出哪些见解。 这推动了大数据分析,搜索分析,机器学习,实时分析,日志分析和点击流分析等。

  从理论上讲,Data Lake听起来像是一站式解决所有问题的方法,但并不奇怪,很多Data Lake都失败了。 Data Lake解决了两个主要问题,即"消除数据孤岛"和"存储不同的数据源"。 但是,这也带来了许多挑战,需要正确的架构,存储,数据治理和安全模型来推动业务成果。

  

  > Characteristics of DataLake

  数据湖的期望

  Data Lake应该能够提供:

  1.不同的来源:Data Lake应该使高速高效的过程能够从任何来源收集数据。 来自不同来源的数据有助于执行完整而深入的分析。

  2.数据可访问性:它应该以安全授权的方式支持组织/部门范围内的数据访问,从多个来源到数据专业人员和企业,而无需IT部门的束缚。

  3.及时性:数据很重要,但前提是必须及时接收数据。 所有用户都有一个有效的时间窗口,在此期间正确的信息会影响他们的决策。

  4.自助服务:借助组织范围的数据,数据湖应使用户能够使用所需的工具集构建其报告和模型。

  现在,我们将在设计数据湖时讨论最佳设计注意事项。 这些是构建有效的数据驱动的未来数据湖的基础。

  

  > Pillar of Data Lake

  架构

  毫不奇怪,大多数现代数据湖都是使用微服务架构构建的。 微服务体系结构的中心是围绕着构建一组小型服务,这些小型服务专注于业务功能并且可以独立部署。 微服务架构是构建解耦,敏捷和自动化的数据湖应用的理想选择。 理想的架构应具有-

  解耦应用程序:应将所有过程解耦,以免发生故障时导致故障。 例如,处理一组数据管道失败将不会阻止对其余数据管道的处理。

  消除单点故障:单点故障会导致整个系统崩溃。 相反,多点故障可确保在工程师努力解决故障时,对未受影响的数据管道进行处理。 这也有助于防止类似(DDoS)的攻击。 应该为硬件和应用程序都实现这种方法。

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

  解耦计算和存储它允许独立扩展存储资源,并在垂直方向(向同一台计算机添加容量)和水平方向(添加更多计算机)进行计算。 这导致最佳配置。

  审核和日志记录:如此众多的应用程序和流程以分离模式运行,因此记录事件以对问题和流程进行分类变得至关重要。 从数据治理的角度来看,记录各种API和事件的审核跟踪变得至关重要。 如果有任何违规或未经授权的访问,这将很容易理解服务的使用方式。 几乎所有云平台都提供需要启用以存储日志的审核服务。 始终采取预防措施,以使审计日志不可变且不受篡改。

  存储

  存储是现代数据湖的核心。 Data Lake为具有不同背景和工具偏好的不同客户提供服务,例如数据科学家,分析师和业务用户,他们各自需要一套不同的工具和对数据的访问权限。 集中存储有助于更好地进行治理,维护和使用多种工具的能力。 通过集中显示数据,所有应用程序和工具都可以轻松读取和写入数据。 由于存储已经集中和分离,因此该方法可灵活地替换工具。 但是,具有以下特征很重要:

  

  > Storage characteristics

  可扩展性:企业数据湖充当整个组织或部门数据的集中数据存储。 它必须能够扩展而不会遇到固定的任意容量限制。 AWS S3或Azure存储之类的服务有助于实现这一目标。

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

  数据持久性:数据一旦存储,就不会由于磁盘,设备,灾难或任何其他原因而丢失。 核心存储层的超高耐久性可实现出色的数据健壮性

  安全性:在云或内部部署中,数据安全性是最大且重要的考虑因素。 数据必须经过加密,防潮,不可变(在任何需要的地方),并且必须符合规定。 数据丢失就是业务丢失。

  治理和审计:能够应用治理规则,数据不变性,识别PII数据以及提供完整的数据使用审计日志的能力对于满足法规和法定要求至关重要,而且至关重要。

  存储任何内容:数据湖的主要设计考虑因素之一应该是存储任何格式的数据(结构化和非结构化)并提供快速的检索时间。 强烈建议在这种用例中使用对象存储。

  存储文件的大小和格式:小文件的大小小于Hadoop文件系统(HDFS)的默认块大小128 MB。 在类似于Hadoop的框架中,每个学历提升文件在群集的名称节点的内存中均表示为一个对象,每个对象通常占用150个字节。 这意味着大量文件将消耗大量内存。 大多数基于Hadoop的框架都无法有效使用小型文件。 另一个重要方面是文件的格式(行与列存储)。 通过列式文件格式化,可以仅读取,解压缩和处理当前查询所需的值。 流行的文件格式是ORC和Parquet,每种格式都有其用例和优点。

  摄取

  数据提取是从各种来源(例如点击流,数据中心日志,传感器,IoT设备,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数据管道。 它还提供数据分类选项。

  特征:

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

  永久集群与临时集群:某些业务需求集群运行24 * 7,这意味着资源一直在积极使用。 但是,某些业务每天或每周需要处理几个小时的数据。 在那种情况下,保持集群运行并招致成本是没有意义的。 对于Hadoop群集,数据存储在节点上,这使得在不丢失数据的情况下很难终止群集。 但是,类似AWS EMR的服务允许将数据存储到AWS S3。 这样可以轻松终止EMR群集,并在需要时重新启动群集。 这非常划算。

  托管集群:管理Hadoop集群非常麻烦。 它需要大量的投资,维护,并且非常昂贵。 如今,AWS,Azure和Google等各种供应商都为托管群集提供了非常快速地终止和创建群集的功能。 这使企业可以将精力集中在数据结果上,而不是支持服务器。

  消费

  Data Lake的主要推动力之一是允许具有不同技能的客户使用工具偏好不同的数据。 数据分类,不变的原始数据,集中存储,不同层次的处理数据以及读取模式允许使用不同的工具。 我们可以将消费者分为以下几类

  数据仓库:业务用户需要高性能的数据仓库来对PB级数据运行复杂的SQL查询,以返回复杂的分析输出。 多种设计因素允许工具提供快速的结果。 诸如AWS Redshift Spectrum,Google BigQuery和Azure SQL数据仓库之类的工具提供了巨大的压缩,区域映射,列式存储,并能够以高性能对存储文件运行复杂的查询。 此外,云平台还提供了可用性,耐用性,安全性和成本效益。

  交互式查询:在几个用例中,数据分析师需要运行SQL查询来分析海量数据湖数据。 诸如Apache hive,Apache Presto,Amazon Athena和Impala之类的工具使用数据目录来构建SQL友好的逻辑架构,以查询存储在选定格式文件中的基础数据。 这允许直接在数据文件上查询结构化和非结构化数据。

  机器学习:数据科学家通常需要针对庞大的数据集运行机器学习算法以进行预测。 数据湖提供对企业范围数据的访问,以探索和挖掘数据以获取业务见解。 数据科学家可以使用诸如Dataiku,Tensorflow和Sagemaker之类的工具,也可以在以AWS为平台的平台上运行用R或Python编写的算法,该平台提供了使用经济高效的现场EC2实例在按需存储的EMR火花簇上旋转按需EMR火花集群的功能。 集中式数据存储。

  人工智能和自动化:在数据湖或数据湖托管的解决方案上使用Alexa的聊天机器人和语音分析等解决方案可显着改善客户体验并减少运营开销。 这些解决方案可以与安全的网站或移动应用程序集成。 如果您有兴趣构建出色的聊天机器人,请通过单击此处,参阅我的博客以使用AWS服务构建聊天机器人解决方案。

  

  > Data Lake Architecture built on AWS S3

  数据治理

  在Data Lake中,从多个来源收集了组织范围内的数据,包括消费者个人可识别信息(PII)数据。 该数据包含分析人员可以用来识别和改进业务的重要信息。 但是,必须保护这些敏感数据,并遵守隐私法律和法规。 这使得数据治理成为设计数据湖的关键支柱。 数据治理是指对企业中数据的可用性,可用性,完整性和安全性的全面管理。 主要取决于业务策略和技术实践。 从一开始就应将治理纳入设计的一部分,或者至少应将最低标准纳入其中。 数据治理主要涵盖以下领域。

  数据目录:由于数据湖中存储着大量数据,因此很难跟踪哪些数据已经可用,并且可能导致数据淹没。 解决方案是数据目录。 数据目录是元数据的集合,结合了数据管理和搜索工具,可帮助分析师和其他用户查找所需的数据。 数据目录充当可用数据的清单,并提供信息以评估适用数据的预期用途。 最有效的方法是维护中央数据目录,并在各种处理框架(如Apache Hadoop,Apache Spark,AWS Athena和其他各种可用工具)中使用它。 这样可以确保元数据的完整性并应用简单的数据治理规则。

  数据质量:数据质量与数据完整性,准确性,一致性,数据屏蔽和标准化有关。 它确保应用了所有这些属性并正确分类了数据,然后才能将其使用。

  合规与法规:根据所运营的业务领域,必须满足一些合规要求。 GDPR,HIPAA和ISO标准示例。 不遵守可能会导致巨额罚款,甚至采取更严格的行动。 这也削弱了信任和业务信誉。 有多种产品和服务可帮助实现此目标,例如AWS Macie可帮助识别PII信息,AWS HSM提供完全受控和安全的密钥管理服务(KMS)。

  安全

  对于本地和基于云的企业Data Lake来说,安全都是至关重要的,应将安全放在首位。 安全性应该从一开始就进行设计,并且需要将其纳入非常基本的体系结构和设计中。 此外,只有在企业整体安全基础架构和控件的框架内部署和管理数据湖的安全性,才能成功。 安全可以分为以下几类:

  数据安全性-静态加密和传输中加密:组织的数据是一项资产,需要加以保护,以免被窥探。 几乎所有数据都必须处于安全状态(存储在文件和数据库中)。 默认情况下,所有云提供商都为其存储层提供加密机制。 此外,可以使用密钥管理服务来实现加密,并选择加密算法,由谁(云提供商或客户)来管理和旋转密钥。 对于非常安全的系统或由于组织需要在其机器上管理密钥的法规要求,可以使用硬件安全模块(HSM)。 传输中的数据意味着在设备和服务(例如API)之间通过网络进行数据移动。 这可以通过使用带有证书的TLS / SSL传输来实现。

  网络安全:下一个重要方面是网络的安全性。 对于云解决方案,虚拟私有云(VPC)提供了云中的网络隔离。 它提供了灵活性,可以使用安全组以及传统方法(如网络ACL和CIDR阻止限制)来限制连接。 通过使用VPC端点,流量可以通过专用网络而不是公共网络传播。 所有这些策略都创建了网络非军事区(DMZ)。 另一个方面是网络防火墙,它可以控制访问并监视网络中的Web流量。 它还授权出站会话。 它位于OSI层的"网络层"属性中,因此它仅在网络级别提供访问控制。

  访问控制:企业数据湖包含组织范围内的数据,因此确保正确的身份验证策略变得很重要。 每个组织都使用通用技术(例如活动目录)维护标准身份验证,该活动目录可用于为Data Lake生态系统产品提供身份验证。 本地和云平台都支持将公司标识基础结构映射到云提供商的权限基础结构的方法。 此外,可以使用身份访问管理(IAM)控制细粒度的访问。 像AWS这样的云平台使用AWS IAM和存储桶策略来访问数据文件,从而提供细粒度的访问管理。 这样可以确保只有正确的用户组才能访问所需的资源。

  应用程序安全性:保护应用程序免受外部攻击至关重要。 众所周知,网络防火墙没有检测/阻止威胁的机制。 为此,我们应该使用Web应用程序防火墙,以帮助保护您的Web应用程序或API免受可能影响可用性,损害安全性或消耗过多资源的常见Web利用。 应用程序防火墙使您能够创建阻止常见攻击模式(例如SQL注入或跨站点脚本)的安全规则,并过滤出您定义的特定流量模式,从而控制流量如何到达应用程序。 另一种方法是实现微服务架构,例如将应用程序与存储或其他应用程序分离,以减少攻击面。 如果使用云,则设计应包含自动配置组,该组可以自动添加资源以吸收高流量攻击,例如分布式拒绝服务(DDoS)。

  免责声明-本文中提出的观点是作者自己的观点,并不反映与该作者相关的任何组织的观点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值