一、基本概念1.1数仓发展历史
数据湖是以集中方式存储各种类型数据,提供弹性的 容量和吞吐能力,能够覆盖广泛的数据源,支持多种计算与处理分析引擎直接对数据进行访问的统一存储平台。它 能够实现数据分析、机器学习,数据访问和管理等细粒度的授权、审计等功能。
数据湖对存取的数据没有格式类型的限制,数据产生后,可以按照数据的原始内容和属性,直接存储到数据湖, 无需在数据上传之前对数据进行任何的结构化处理。数据湖可以存储结构化数据(如关系型数据库中的表),半结 构化数据(如 CSV、JSON 、XML、日志等),非结构化数据(如电子邮件、文档、PDF 等)以及二进制数据 (如图形、音频、视频等)
1.2数据湖、数据仓、湖仓一体发展历程
(1)数据仓库,适合结构化数据,但不适合非结构化数据。
(2)数据湖:支持多种格式存储数据库。但不支持事务处理、不保证数据质量in过去缺乏一致性/隔离性,无法实现混合追加和读取数据,以及完成批处理和流式作业。
(3)lakehouse:直接在用于数据湖的低成本存储上实现与数据仓库中类似的数据结构和数据管理功能。
1.3数据湖
1.3.1数据湖特征
1.3.2数据湖架构
通用数据湖架构
1.3.3云原生数据湖的特征
1.4数据湖与数据仓库对比
首先,数据捕获时未定义架构。数据湖在功能上可以实现各种类型数据的存储,数据湖中的数据可以是非结构 化的、未处理的形态,数据可以在确定需要使用时才会对数据进行对应处理与转换;而数据仓库则通常存放的是经 过处理的、结构化的数据,数据存储的 Schema 在数据存储之前就需要被定义好。
其次,存储到数据湖中的数据通常会按照原始形态直接存储,随着业务和使用场景的发展,会使用不同的计算 存储的数据进行分析与处理,数据湖中的数据在一个企业组织中通常会被多个不同应用、系统和部门使覆盖的场景广泛并且范围也会动态延展,因此需要提供更多的灵活性以适应快速变化的应用场景;数据通常使用场景是在数据收集期间就已经明确,数据仓库通常集中在 BI、业务、运营等商业决策相关场 仓库也可以把已经存在的数据转换到新场景,但在灵活性方面不如数据湖,需要有更多的数据转换时间 投入。
1.5批处理和流式处理区别:
(1)数据范围:批处理对数据集中的所有或大部分数据进行查询或处理。流处理对滚动时间窗口内的数据或仅对最近的数据记录进行查询或处理。
(2)数据大小 ,批处理针对的是大批量数据(如GB或者PB级别)。流处理针对的是单条记录或包含几条记录的微批数据(如KB或者MB)。
(3)性能 ,批处理所需的时间一般是几分钟至几小时的延迟。流处理所需的时间几毫秒至几秒的延迟。
(4)场景 ,批处理使用的场景分析起来很复杂。流处理只需要简单的响应调用,聚合和滚动指标。
二、阿里大数据治理平台2.1产品架构
DataWorks(大数据开发治理平台)是阿里云重要的PaaS(Platform-as-a-Service)平台产品,为您提供数据集成、数据开发、数据地图、数据质量和数据服务等全方位的产品服务,一站式开发管理的界面,帮助企业专注于数据价值的挖掘和探索。
DataWorks支持多种计算和存储引擎服务,包括离线计算MaxCompute、开源大数据引擎E-MapReduce、实时计算(基于Flink)、机器学习PAI、云原生数据仓库 AnalyticDB for PostgreSQL,云原生数据仓库AnalyticDB for MySQL,并且支持用户自定义接入计算和存储服务。DataWorks为您提供全链路智能大数据及AI开发和治理服务。
2.2.1数据集成
数据集成有两个定位,第一是数据中台对接外界核心枢纽,即对接云上系统之间数据流转的打通;第二是跨云跨网一站式数据传输,即在数据集成中,所有数据的进出都可以提供一站式的解决方案。
批量配置数据源和批量配置同步任务。
向导模式和脚本模式,向导模式配置数据源后,参数自动生成。
过程:选择数据源-添加同步任务。
规则类型,8种,例如,目标表前缀;新增字段、字段赋值;目标表子端替换;
同步任务运行方式:测试运行、补数据运行和周期运行。
同步速度调优:任务切分(切分键、作业并发数)、资源占用;
2.2.2数据建模
DataWorks 数据建模同时支持关系(ER、3NF)建模和维度建模(星型,雪花)。不同类型的模型没有最好,只有更适合。用户应该从企业的实际场景出发选择建模方式。根据经验总结,大多数企业都会同时存在以上两种建模方式,底层模型用关系建模,力求做到数据精简,往上维度建模就更适合,靠数据冗余带来可用性、分析性和可操作性。
2.2.3数据开发-降本增效利器
DataWorks数据开发(DataStudio、StreamStudio、HoloStudio)面向各引擎提供可视化开发的主界面,赋予用户智能代码开发、多引擎混编工作流、规范化任务发布的强大能力,让用户轻松构建离线数仓、实时数仓与即席分析系统。支持引擎:MaxCompute、E-MapReduce、Flink、Hologres、AnalyticDB for PostgreSQL,满足用户不同的企业级业务场景。
大幅提升工作效率
从容面对复杂场景
提供更规范、科学的开发模式
2.2.4数据治理
2.2.5数据服务
2.3应用场景
https://support.huaweicloud.com/usermanual-dgc/dgc_01_0024.html
3.1产品架构
华为云整个的数据湖解决方案,完整覆盖了数据处理的生命周期,并且明确支持了数据治理,并提供了基于模型和指标的数据治理流程工具,在华为云的数据湖解决方案中逐渐开始往“湖仓一体化”方向演进。
DGC基于数据湖底座,提供数据集成、开发、治理、开放等能力。DGC支持对接所有华为云的数据湖与数据库云服务作为数据湖底座,例如数据湖探索(Data Lake Insight,简称DLI)、MRS hive、数据仓库服务DWS等,也支持对接企业传统数据仓库,例如Oracle、Greenplum等。DGC包含如下功能组件:
批量数据迁移基于分布式计算框架,利用并行化处理技术,支持用户稳定高效地对海量数据进行移动,实现不停服数据迁移,快速构建所需的数据架构。
使用数据开发模块,用户可进行数据管理、脚本开发、作业开发、作业调度、运维监控等操作,轻松完成整个数据的处理分析流程。
支持的功能
说明
数据管理
支持管理DWS、DLI、MRS Hive等多种数据仓库。支持可视化和DDL方式管理数据库表。
脚本开发
提供在线脚本编辑器,支持多人协作进行SQL、Shell、Python/ target=_blank class=infotextkey>Python脚本在线代码开发和调测。支持使用变量和函数。
作业开发
提供图形化设计器,支持拖拉拽方式快速构建数据处理工作流。预设数据集成、SQL、Shell等多种任务类型,通过任务间依赖完成复杂数据分析处理。支持导入和导出作业。
资源管理
支持统一管理在脚本开发和作业开发使用到的file、jar、archive类型的资源。
作业调度
支持单次调度、周期调度和事件驱动调度,周期调度支持分钟、小时、天、周、月多种调度周期。
运维监控
支持对作业进行运行、暂停、恢复、终止等多种操作。支持查看作业和其内各任务节点的运行详情。支持配置多种方式报警,作业和任务发生错误时可及时通知相关人,保证业务正常运行。
3.4总结
华为的数据湖解决方案比较完整,DLI承担了所有的数据湖构建、数据处理、数据管理、数据应用的核心功能。DLI最大的特色是在于分析引擎的完备性,包括基于SQL的交互式分析以及基于Spark+Flink的流批一体处理引擎。在核心存储引擎上,DLI依然通过内置的OBS来提供,和AWS S3的能力基本对标。华为数据湖解决方案在上下游生态上做的比AWS相对完善,对于外部数据源,几乎支持所有目前华为云上提供的数据源服务。
DLI可以与华为的CDM(云数据迁移服务)和DIS(数据接入服务)对接:1)借助DIS,DLI可以定义各类数据点,这些点可以在Flink作业中被使用,做为source或者sink;2)借助CDM,DLI甚至能接入IDC、第三方云服务的数据。
为了更好的支持数据集成、数据开发、数据治理、质量管理等数据湖高级功能,华为云提供了DAYU平台。DAYU平台是华为数据湖治理运营方法论的落地实现。DAYU涵盖了整个数据湖治理的核心流程,并对其提供了相应的工具支持;甚至在华为的官方文档中,给出了数据治理组织的构建建议。DAYU的数据治理方法论的落地实现如图11所示(来自华为云官网)。
四、阿里云数据湖方案
对象存储 OSS 是基于阿里云自研的分布式存储引擎——盘古搭建,提供体系化的数据采 力,支持结构化/半结构化/非结构化数据源。体系由数据湖对象存储 OSS、云原生数据湖分析 DLA、数据湖构建 DLF、E-MapReduce、 Works 等产品强强组合,在存储与计算分离架构下,提供“湖存储”、“湖加速”、“湖计算”的企业级数据湖解决方案。
4.2数据湖构建(Data Lake Formation,简称 DLF)
4.2.1产品架构
阿里云数据湖构建(Data Lake Formation,简称 DLF)是一款全托管的快速帮助用户构建云上数据湖及Lakehouse的服务,为客户提供了统一的元数据管理、统一的权限与安全管理、便捷的数据入湖能力以及一键式数据探索能力。DLF可以帮助用户快速完成云原生数据湖及Lakehouse方案的构建与管理,并可无缝对接多种计算引擎,打破数据孤岛,洞察业务价值。
4.2.2应用场景
4.2.3阿里DDI(databricks datainsight 数据洞察)
产品核心:
产品引擎与服务:
产品关键信息与优势
4.2.3.1产品架构
4.2.3.2应用场景
1、数据湖分析
使用阿里云对象存储OSS作为云上存储,DDI集群提供灵活的计算资源,OSS上的数据可以被多个DDI集群共享,减少数据冗余。同时,DataInsight Notebook支持多用户同时协同工作,您可以在Notebook中完成作业编辑、提交和结果查看。
2、实时数仓
利用Databricks Delta Lake的ACID事务特性,可以构建云上大数据的实时数仓。
五、华为数据湖探索(Data Lake Insight,以下简称DLI)5.1产品架构
数据湖探索(Data Lake Insight,以下简称DLI)是完全兼容Apache Spark、Apache Flink、openLooKeng(基于Presto)生态,提供一站式的流处理、批处理、交互式分析的Serverless融合处理分析服务。DLI是完全托管的大数据处理分析服务,企业使用标准SQL、Spark、Flink程序就可轻松完成多数据源的联合计算分析,挖掘和探索数据价值。数据无需复杂的抽取、转换、加载(ETL),使用SQL或程序就可以对云上CloudTable、RDS、DWS、css、OBS、ECS自建数据库以及线下数据库的异构数据进行探索。
5.2功能介绍
DLI用户可以通过可视化界面、Restful API、JDBC、ODBC、Beeline等多种接入方式对云上CloudTable、RDS和DWS等异构数据源进行查询分析,数据格式兼容CSV、JSON、Parquet、Carbon和ORC五种主流数据格式。
(1)大数据ETL处理
(2)异构数据源联邦分析
(3)海量日志分析
Dremio由MapR的前员工:Tomer Shiran(CEO)和Jacques Nadeau(CTO)于2015年创立。融资总额为4500万美元。其总部位于美国,2017年发布了v1.0产品,客户包括帝亚吉欧(Diageo)、微软、瑞银、Nutanix和皇家加勒比游轮公司。
6.2产品架构
Dremio是一款DaaS(Data-as-a-Service)数据即服务平台,可对接多类数据源来进行BI分析,该产品直接使用数据湖的源数据进行快速访问以达到直接进行数据分析而不经过数据的清洗、处理、加工、建模等方式。数据湖的意思就是将不同存储类型、不同种类的数据汇聚在一起,这个存储集群统一对外就是一个数据湖了。而Dremio通过直接在云数据湖存储中进行实时的、交互式的查询来释放数据价值。
Dremio的技术特点:
在Dremio中,查询数据是直达数据湖存储的,无论数据是存储在S3、ADLS、Hadoop、MySQL、Mongodb等载体上。Dremio使用了包括不限于以下技术来加速每次的查询:
Dremio的Predictive Pipelining技术使得来自数据源的数据只有在执行引擎真正需要到时才会去拉取,这个做法能显著降低引擎等待数据的时间成本。同样地,C3技术则是会自动地在数据存取时将数据缓存到本地的NVMe存储载体,使得查询访问数据湖中的数据能有NVMe存取速度级别的表现。
Dremio的执行引擎是建立在Apache Arrow及其生态技术上的,一个Dremio集群能够根据存储数据的体量规模弹性伸缩。
通过在Dremio提供的客户端页面的几下点击,就能够创建反射,反射是一种物理层面上对数据结构的优化,能够加速各种查询模式,根据你的需要可以创建任意数量的反射,Dremio会隐形并自动地在查询计划中合并反射,并保证查询到最新数据。
AF被设计出来是用于取代处理小规模数据的ODBC和JDBC协议,AF在高速、分布式传输协议的基础上,为Dremio和应用的数据传输提供了1000x倍速度提升的吞吐。
Dremio提供了一个应用安全和商业意义的抽象层,以支持用户能够探索数据,以及派生出新的虚拟数据集。
Dremio的语义层是一个能够索引出所有用户元数据的集成化、可搜索的目录。在此语义层上,虚拟数据集以及空间构成了语义层,并且都是能够倍索引和搜索的。
通过虚拟上下文的管理,Dremio让可以使得筛选、转换、联表、聚合一个或多个数据源的数据变得快速,容易并且成本低。另外,Dremio的虚拟数据集是通过标准SQL定义的,如此我们使用起来旧不需要再另外学习一套查询语法了。
Dremio其实就如同关系型数据库一样,并且Dremio可以暴露ODBC、JDBC、REST以及Arrow Flight协议的接口,这样我们就可以在一些BI应用上连接Dremio获取数据。
Dremio提供行级和列级的权限控制,可以让我们基于敏感数据、基于角色来控制对数据的访问权限。
Dremio的data graph管理着数据源、虚拟数据集以及查询语句之间的关系,我们可以通过data graph获知到当前查询的数据集的来源。
七.Databricks7.1公司概况
1、Databricks 于 2013 年在旧金山成立,是大型数据分析工具的最大供应商之一,由美国伯克利大学AMP实验室的开源处理引擎系统Apache Spark的多位创始人联合创立,专注于大数据和AI人工智能,致力于提供基于Spark的云服务及开放统一的数据平台。
2、Databricks开创了云计算领域的“Lakehouse”结构概念,这一术语是由“Data Lakes”与“Data Warehouses”合成而成。目前Databricks提供四种产品:Spark、Delta Lake、MLflow(开发和维护 AI 生命周期管理平台)和Koalas(数据分析工具)。
3、公司定位:
4、市场地位
7.2.1Delta Lake
Delta Lake 是一个统一的数据管理系统,为云上数据湖带来数据可靠性和快速分析。Delta Lake 运行在现有数据湖之上,并且与 Apache Spark 的 API 完全兼容。使用Delta Lake,您可以加快高质量数据导入数据湖的速度,团队也可以在云服务上快速使用这些数据,安全且可扩展。
7.2.2产品架构
1、Databricks 产品支持执行 Spark、Python、Scala、JAVA 和 R 等语言,甚至支持 SQL,适用于不同类型的用户。
2、强大的数据版本控制:Databricks 原生支持 DELTA 格式。Delta Lake 是完全兼容 ACID 的,这就解决了 Spark 的 不兼容 ACID 这一主要问题。
7.2.3湖仓一体
1、团队背景
(1)LinkedIn开发Apache Kafka实时信息列队技术的程序员,创立confluent,核心是利用Apache Kafka。
2、融资情况
2021-6-25美股上市,市值143.64亿美元。
3、商业化产品
商业化产品有3大类:
4、不同实时计算工具的对比
Spark 做批处理、Flink 做流处理、Clickhouse 做交互分析,这是最简单的一套。再复杂一点,可能还要部署 HBase 做 KV 查询,用 ElasticSearch 做文本检索。
产品
Spark streaming
不是特别适合于做秒级甚至亚秒级的计算
Kafka streaming
很难满足我们对大体量的复杂计算的需求
Storm
没有批处理能力
Flink
批流结合
8.2产品架构
Confluent是用来管理和组织不同数据源的流媒体平台,可以实时地把不同源和位置的数据集成到一个中心的事件流平台。而且还强调了这个平台很可靠、性能很高,总之就是很好用,很强大。Confluent目前提供了社区版和商业版两个版本,社区版永久免费,商业版面向企业收费。
(1)Confluent Control Center(控制中心),让我们很容易地管理kafka的连接,创建,编辑,和管理与其他系统的连接。我们可以从producer到consumer监控data streams,保证我们的每一条消息都被传递,还能测量出消息的传输耗时多久。使用confluent control center能让开发人员不写一句代码,也能构建基于kafka的数据生产管道。
(2)Confluent Replicator(数据复制与迁移),Confluent Platform使我们可以比以往更轻松地在多个数据中心内维护多个Kafka群集。管理数据中心之间的数据复制和topic配置,比方说:ative-active地理定位部署:允许用户访问最近(附近)的数据中心,以优化其架构,实现低延迟和高性能
我们可以利用Confluent Replicator从Confluent Control Center或CLI工具配置管理所有这些方案的复制。
(3)Confluent Auto Data Balancer(解决负载均衡),随着集群的增长,topic和partition以不同的速度增长,随着时间的推移,添加和删除会导致跨数据中心资源的工作负载不平衡。有一些brokers是空闲的(数据倾斜),而其他brokers则对大量或多个partitions负载,从而减慢了消息传递的速度。当执行时,Confluent Auto Data Balancer会监控您的群集中的broker数量,partition大小,partition数量以及群集中的broker数量。它允许我们转移数据以在整个群集中创建均匀的工作负载,同时限制重新平衡流量,以最大限度地减少重新平衡时对生产工作负载的影响。
(4)Confluent JMS Client,Confluent Platform包含适用于Kafka的JMS兼容客户端。通过用Kafka替换旧的JMS消息代理,现有的应用程序可以与我们的现代流式平台集成,而无需重新编写应用程序。
(5)Confluent Security Plugins,目前,有一个可用于Confluent REST Proxy的插件,它有助于验证传入的请求并将经过身份验证传到kafka请求。
Kafka Brokers(开源)。构成Kafka的消息,数据持久性和存储层。
Kafka Java Clients(开源)。Java 库,写消息到kafka 或者从kafka 读消息。
Kafka Streams(开源)。Kafka Streams是一个库使kafka转换成功能齐全的流处理系统。
Kafka Connect(开源)。一种可扩展的和可靠的连接Kafka框架与外部系统(如数据库,键值存储,搜索索引和文件系统)的框架。
除了Kafka以外, Confluent Platform 包括更多的工具和服务,使构建和管理数据流平台更加容易。
Confluent Control Center(闭源)。管理和监控Kafka最全面的GUI驱动系统。
Confluent Kafka Connectors(开源)。连接SQL数据库/Hadoop/Hive
Confluent Kafka Clients(开源)。对于其他编程语言,包括C/C++,Python
Confluent Kafka REST Proxy(开源)。允许一些系统通过HTTP和kafka之间发送和接收消息。
Confluent Schema Registry(开源)。帮助确定每一个应用使用正确的schema当写数据或者读数据到kafka中。
总的来说,Confluent Platform平台的组件给你的团队朝着建立统一而灵活的方式建立一个企业范围的数据流平台。