收录于话题
#数据中台
20个内容
作者丨石秀峰
文章共4955个字,建议阅读需18分钟
1、初识数据湖
Data lake,我第一次接触这个概念,是在2014年IBM组织的数据治理交流论坛上。当时只是认为“数据湖”就是一个概念,没什么新意,“不就是把不同结构的数据实现统一存储,Hadoop不就是干这个活的吗?本质上还是换汤不换药、新瓶装老酒,又一个新概念”!2、数据湖的定义
后来发现,主流的大数据和云计算公司都在推这个叫“数据湖”的技术。于是,我特意上网百度了一下,“数据湖”的概念原来早在2011年被首次提出,维基百科对它给出了如下的定义:数据湖(Data Lake)是一个以原始格式存储数据的存储库或系统,它按原样存储数据,而无需事先对数据进行结构化处理。一个数据湖可以存储结构化数据(如关系型数据库中的表),半结构化数据(如CSV、日志、XML、JSON),非结构化数据(如电子邮件、文档、PDF)和二进制数据(如图形、音频、视频)。亚马逊AWS对数据湖做了进一步解释:“数据湖是一个集中式存储库,允许您以任意规模存储所有结构化和非结构化数据。您可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。”这时,我对“数据湖”有了更深一步的认知:数据湖技术是不断发展的,它可以以更方便、更廉价的方式解决不同类型数据结构的统一存储问题,同时还能够为机器学习提供全局数据。我们可以将“数据湖”理解为一个融合了大数据集成、存储、处理、机器学习、数据挖掘、数据可视化等技术,促进数据价值变现的完整解决方案。3、数据湖与数据仓库的区别
谈到“数据湖”人们总是喜欢用数据仓库与其进行比较(可能是从概念和用途上来讲他们确实有些相似),以下是AWS给出的数据仓库和数据湖的对比:
通过上表,我们不难发现“数据湖”有着数据仓库无法比拟的优势:
首先,在数据处理和存储能力方面,数据湖可以处理结构化、半结构化、非结构化的所有数据结构的数据,而数据仓库只能处理结构化数据。数据仓库在处理数据之前要先进行数据梳理、定义数据结构、进行数据清洗才进行入库操作,而数据湖是不管“三七二十一”连上数据源就能将原始数据“一锅端过来”,这就为后续数据湖的机器学习、数据挖掘带来了无限可能!其次,在数据质量和安全方面,数据仓库作用范围有限,它只能用于收集、处理和分析特定业务问题所必需的数据,而数据湖却能对任何数据,甚至无法监管的原始数据实施数据治理,以提升数据质量和安全性。最后,在灵活性上数据湖具备天然优势。传统的数仓,因为模型范式的要求,业务不能随便的变迁,这涉及到底层数据的各种变化,这导致了传统数仓无法支持业务的变化。对于数据湖来说,即使像互联网行业不断有新的应用,业务不断发生变化,数据模型也不断的变化,但数据依然可以非常容易的进入数据湖,对于数据的采集、清洗、规范化的处理,完全可以延迟到业务需求的时候再来处理。这跟早期的数仓思维就很不一样,数据湖相对于企业来说,灵活性比较强,能更快速的适应前端应用的变化。
亚马逊AWS算是“数据湖”技术的鼻祖了,早在2006年3月,亚马逊就推出了全球首款公有云服务Amazon S3,其强大的数据存储能力,奠定了AWS数据湖领导地位的基础。
上图是AWS数据湖的一个典型架构,我们看到数据湖并不是一个产品、也不是一项技术,而是由多个大数据组件、云服务组成的一个解决方案。
当然,最核心的组件是Amazon S3,它可以存储二进位为基础的任何信息,包含结构化和非结构化的数据,例如:企业信息系统ERP、CRM等系统中的关系型数据,从手机、摄像机来的照片、音视频文件,从汽车上、风力发电机等各种设备来的数据文件等等。数据源连接,AWS 提供了一个叫AWS Glue产品,Glue是胶水的意思,支持不同的数据库服务之间的连接。Glue主要有两个功能,一个是ETL,即,数据的抽取、转换和加载。另一个功能,是数据目录服务的功能,因为把这些数据都存在数据湖里面,在这个过程中,要对这些数据打上标签,把它做分类的工作。Glue就像爬虫一样对数据湖里的海量数据,进行自动爬取,生成数据目录的功能。大数据处理,AWS数据湖可以分为三个阶段对数据进行处理。第一阶段批处理:通过把各种类型的原始数据加载到Amazon S3上,然后通过AWS Glue对数据湖中的数据进行数据处理,也可以使用Amazon EMR进行数据的高级处理分析。第二阶段流处理和分析,这个任务是基于Amazon EMR、Amazon Kinesis来完成的。第三阶为机器学习,数据通过 Amazon Machine Learning、Amazon Lex、Amazon Rekognition进行深度加工,形成可利用的数据服务。数据服务:AWS数据湖可为不同角色的用户提供不同的数据服务,数据科学家可以基于数据湖进行数据探索和数据挖掘,数据分析师可以基于数据进行数据建模、数据分析等;业务人员可以查询、浏览数据分析师的分析结果,也基于数据目录自助式进行数据分析。基于数据湖可以开发各类SaaS应用,同时数据湖提供数据开放能力,支持将数据以API接口的形式开放出去以供外部应用调用。安全与运维:由于AWS数据湖运行在云端,数据安全人们关注的重点。亚马逊的Amazon VPC为云端数据湖提供了管理和监控功能, VPC 支持指定 IP 地址范围、添加子网、关联安全组以及配置路由表,AWS IAM、AWS KMS为数据湖的安全保驾护航,为构建出一个安全的云数据湖提供支撑。
数据湖从技术层面也是一个大数据平台,传统上搭建一个集数据存储、数据处理、机器学习、数据分析等应用为一体的大数据平台需要十几个甚至几十个大数据组件,同时还需要为相关组件构建集群,以满足大批量数据处理、计算和存储的需要。这个过程往往是非常复杂的,可能需要数月才能完成。2018年,AWS 推出了LakeFormation,据说是可以帮助企业在几天内就能构建出安全的数据湖。期待很快在国内推出,我都想去测试一把了!好了,下面我们谈一谈基于AWS数据服务组件,到底该如何构建出一个“数据湖”?AWS官网中给出“数据湖”从创建到应用的五个步骤,如下图所示:
笔者将这五个步骤归纳为“建湖、聚数、治数、用数”八个字:建湖即初始化存储,聚数即迁移数据,治数即数据清洗、数据准备、元数据管理、数据安全和合规性管理,用数即数据分析、数据服务。1、建湖--闲庭信步筑数湖
首先,基于AWS Identity、IAM服务创建数据湖运行工作流的所需的管理员和权限策略所需的角色,即:为数据湖创建管理员和指定用户组。然后,注册数据湖,指定数据湖存储中心Amazon S3的路径,并设置“数据湖”权限,以允许其他人管理“数据目录”和数据湖中的数据。最后,设置Amazon Athena以便查询导入到Amazon S3数据湖中的数据。至此,一个简单的数据湖就构建完成了。当然不同的应用场景下我们还需要设置不同服务,对于希望把存放在数据湖和Redshift数据仓库中的数据做交叉融合分析的用户,可以通过设置Amazon Redshift Spectrum,使得Redshift可以查询存储在Amazon S3中的数据,从而实现数据仓库与数据湖的数据融合分析。2、聚数--百条大川终归海
随着大数据时代的到来,企业数据量的明显激增,各种各样的数据铺天盖地而来。有来自企业内部信息系统的数据,例如:ERP系统、CRM系统等,经过多年的沉淀,企业积累的大量的历史数据,是企业数据分析的主要来源。有来自于各种IoT设备产生的实时数据,而且这些数据常以混合数据格式生成的,包括结构化数据、半结构化数据和非结构化数据。有来自企业的互联网数据,包括互联网业务产生的数据,以及通过网页爬虫采集的其他网站的数据……,这些新的大规模的海量的数据,不仅量大、种类繁多,而且来的又非常猛,犹如“洪水猛兽”。AWS为实现不同数据类型数据的数据采集、处理提供了多种工具,例如:AWS Glue、Database Migration、Kinesis、Internet of Things等,支持将各种类型的数据轻松迁移至Amazon S3中进行统一管理。这个过程,就正好像就像“数据湖”字面含义,我们就找一大片湿地(S3),然后这些像洪水一样来自“四面八方”的数据先蓄在这个湖里面,形成数据“百川归海”之势,然后在利用一些工具来对它进行治理、查询和分析。3、治数--疏川导滞按需流
数据湖有着卓越的数据存储能力,支持大量的、多种类型的大数据统一存储。然而,企业的业务是实时在变化的,这代表着沉积在数据湖中的数据定义、数据格式实时都在发生着转变,如果不加以治理,企业的“数据湖”就有可能变成“垃圾”堆积的“数据沼泽”,而无法支撑企业的数据分析和使用。“流水不腐,户枢不蠹”,我们只有让“数据湖”中的“水”流动起来,才可以让“数据湖”不变成“数据沼泽”。AWS Glue提供ETL和数据目录能力,让数据从数据源迁移过来的时候就能做一定的数据转换,并形成清晰的数据目录。Amazon EMR、Amazon Glue支持对数据湖中的数据分区域、分阶段的进行清洗和处理,进一步净化湖中的“水源”。之后,数据通过 Amazon Machine Learning、Amazon Lex、Amazon Rekognition进行深度加工,形成可利用的数据服务,这样循环往复,持续提升数据湖中的“水质”。同时,Amazon S3、DynamoDB、Redshift具备很好的数据安全机制,数据的传输和存储都是加密的,加密密钥只有客户自己掌握,防止数据泄露带来的风险。另外,还有Amazon VPC安全策略、AWS IAM、AWS KMS等安全组件为AWS数据湖保驾护航,为企业数据的存储、处理、使用提供一个安全、合规的数据环境。总之,通过在数据湖的设计、加载和维护过程中加入强大的数据处理、元数据管理、数据质量检核和数据安全的相关组件,并由所有这些领域的经验丰富的专业人员积极参与,可显著提高数据湖的价值。否则,你的数据湖可能会变成数据沼泽。4、用数--水到渠成价值增
数据湖的出现,最初就是为了补充数据仓库的缺陷和不足,为了解决数据仓库漫长的开发周期,高昂的开发成本,细节数据丢失、信息孤岛无法彻底解决、出现问题无法真正溯源等问题。但是随着大数据技术的发展,数据湖不断演变,汇集了各种技术,包括数据仓库、实时和高速数据流技术、机器学习、分布式存储和其他技术。数据湖逐渐发展成为一个可以存储所有结构化、非结构化数据,对数据进行大数据处理、实时分析和机器学习等操作的统一数据管理平台,为企业提供数据“采集、存储、治理、分析、挖掘、服务”的完整解决方案,从而实现“水到渠成”的数据价值洞察。AWS 提供了在数据湖上运行的最广泛、最具成本效益的分析服务集合,每项分析服务都专门为广泛的分析用例而构建:
利用AmazonAthena,使用标准 SQL 直接查询存储在S3中的数据,实现交互式分析;
利用AmazonEMR满足对使用Spark和Hadoop框架的大数据处理,Amazon EMR 提供了一种托管服务,可以轻松、快速且经济高效地处理海量数据;
利用AmazonRedshift 可快速构建PB级结构化数据运行、复杂分析查询功能的数据仓库;
利用AmazonKinesis,轻松收集、处理和分析实时的流数据,如 IoT 遥测数据、应用程序日志和网站点击流;
利用AmazonQuickSight轻松构建可从任何浏览器或移动设备访问的精致可视化效果和内容丰富的控制面板;
同时,AWS 提供了一系列广泛的机器学习服务和工具,支持在AWS数据湖上运行机器学习算法,深度挖掘数据价值。
这些工具和服务,能够为不同角色的用户,例如数据科学家、数据分析师、业务人员、数据管理员等提供强大的功能支持,从而帮助企业实现以“数据为驱动”的数字化转型。
传统信息系统是由流程驱动的,企业的所有业务都是围绕着流程而进行的,这个阶段数据并没有引起人们的重视。到了数据仓库阶段,企业对数据的应用也仅是处于辅助层面,企业的管理决策、业务创新主要还是靠人的经验,数据只是一个参考。但随着数字化时代的来临,大数据技术不断的深入应用,人们发现大数据的问题发现能力、预测能力要远远超过人们的经验。越来越多的企业选择基于数据进行企业的经营决策,基于数据提升组织绩效,基于数据做产品的创新。企业正在从“流程驱动”的信息化时代,走向“数据驱动”的数字化时代。
“数据湖”是应时代而生的一个产物,它的价值不仅在于可以将海量的、不同类型的数据进行统一存储,并提供数据目录和查询服务。数字化的时代,数据更加大量、更加实时、更加面向未来,机器学习、人工智能成为一个企业数字化转型的关键性因素。数据湖支持海量的、实时的数据处理和分析,甚至这种数据处理与分析都不需要预定义数据模型,增强了数据的洞察能力,它使得这些海量数据的价值就更加比以前有所提高,帮助人们在局部的数据里面找到更多的规律。可以说“数据湖”简直是为“机器学习”而生。有效的利用“数据湖”,充分的挖掘数据潜在价值,能帮助企业更好的细分市场,以助于企业能有针对性的为企业发展提供决策支撑,更好的掌握市场动向,更好的对市场反应产生新的洞见,更好的设计规划或改进产品,更好的为客户提供服务。从而,提升企业的竞争力,甚至创新企业的商业模式!