从Hadoop到对象存储,抛弃Hadoop,数据湖才能重获新生?

Hadoop与数据湖的关系

    • 1、Hadoop时代的落幕
    • 2、Databricks和Snowflake做对了什么
    • 3、Hadoop与对象存储(OSD)
    • 4、Databricks与Snowflake为什么选择对象存储
    • 5、对象存储面临的挑战


1、Hadoop时代的落幕


十几年前,Hadoop是解决大规模数据分析的“白热化”方法,如今却被企业加速抛弃。曾经顶级的Hadoop供应商都在为生存而战,Cloudera于2021年10月8日完成了私有化过程,黯然退市

从数据湖方向发力的Databricks,却逃脱了“过时”的命运,于2021年宣布获得16亿美元的融资。另一个大数据领域的新星——云数仓Snowflake,2020年一上市就创下近12年来最大IPO金额,成为行业领跑者

行业日新月异,十年时间大数据的领导势力已经经历了一轮更替。面对新的浪潮,我们需要做的是将行业趋势和技术联系起来,思考技术之间的关联和背后不变的本质

Hadoop与Cloudera的潮起潮落详见文章:传送门

2、Databricks和Snowflake做对了什么


Hadoop和数据湖都是2006年开始兴起的概念。为什么同时期兴起,经历十多年发展,Hadoop逐渐衰落,数据湖反而迎来了热潮?

网络上有个说法:“公有云玩家”以零成本赠送Hadoop产品,加速了Hortonworks和Cloudera等厂商的衰落。但像 nowflake这样的新兴企业,它最大的合作伙伴却是AWS等云厂商。作为云厂商的生态系统合作伙伴,Snowflake推动了大量Amazon EC2/S3的销售

在我们看来,Hadoop只是数据湖的一种实现,而新一代数据湖通过拥抱云计算和开源社区,经历了新生

Databricks和Snowflake都抓住了OLAP的数据分析场景,基于兴起的云技术在数据存储和数据消费之间构建了新的中间数据抽象层(Data Virtualization),即屏蔽了底层系统的异构性,又提供了远超Hadoop生态系统的用户体验。这是他们能够成功的根本原因

在云计算的背景下,计算存储相分离的设计概念逐渐清晰,促进了现代数据湖和数据仓库的架构在数据存储和数据消费端的进一步解耦以及业界标准接口的规范化,这使得开源社区通过这些标准接口贡献新技术的发展成为可能

同时,公有云计算平台的出现,某种程度上加速了数据的垄断和计算需求的集中,推动业界对于数据以及数据处理做出更明确的需求定义,针对性地投入开源项目,以社区这种更灵活开放的方式促进技术发展,再反哺公有平台的进化和发展

传统的关系型数据库,如Oracle、DB2、MySQL、SQL Server等采用行式存储法,而一些新兴分布式数据库所采用的列式存储相较于行式存储能加速OLAP工作负载的性能,这已经是众所周知的事实

但在我们看来,更加革命性的变化是列式存储格式的标准化。Parquet和ORC的列式存储格式都是2013年发明的,随着时间的推移,它们已经被接受为业界通用的列式存储格式。数据是有惯性的,要对数据进行迁移和格式转换都需要算力来克服惯性;而数据的标准化格式意味着用户不再被某一特定的OLAP系统所绑定(Locked In),而是可以根据需要,选择最合适的引擎来处理自己的数据

第二大突破性技术是分布式查询引擎的出现,如SparkSQL、Presto等。随着数据存储由中心式向分布式演进,如何在分布式系统之上提供快速高效的查询功能成为一大挑战,而众多MPP架构的查询引擎的出现很好地解决了这个问题。SQL查询不再是传统数据库或者数据仓库的独门秘籍

在解决了分布式查询的问题之后,下一个问题是,对于存储于数据湖中的数据,很多是非结构化的和半结构化的,如何对它们进行有效地组织和查询呢?

在2016到2017年之间,Delta Lake、Iceberg、Hudi相继诞生。这些类似的产品在相近的时间同时出现,表明它们都解决了业界所亟需解决的问题。这个问题就是,传统数据湖是为大数据、大数据集而构建的,它不擅长进行真正快速的SQL查询,并没有提供有效的方法将数据组织成表的结构。由此,在缺乏有效的数据组织和查询能力的情况下,数据湖就很容易变成数据沼泽(Data Swamp)

利用云基础架构,是Databricks和Snowflake成功的关键

如果仔细了解一下Databricks和Snowflake的发展历程,可以发现两者的出发点有所不同。Databricks是立足于数据湖,进行了向数据仓库方向的演化,提出了湖仓一体的理念;而Snowflake在创建之初就是为了提供现代版的数据仓库,近些年来也开始引入数据湖的概念,但本质上说它提供的还是一个数据仓库

Snowflake利用云技术革新了传统数据仓库。它提供了一个基于公有云的、完全托管的数据仓库,把传统的软硬件一体的消费模式改造为了软件服务的模式(SaaS)

无论是存储还是计算,Snowflake都利用了公有云提供的基础设施,从而使任何人都可以在云端使用数据仓库服务

另一方面,传统的数据湖在数据分析上存在不足,不能很好地提供OLAP场景的支持。因此,Databricks通过Delta Lake提供的表结构和Spark提供的计算引擎,构建了一套完整的基于数据湖的OLAP解决方案。Databricks的愿景是基于数据湖提供包括AI和BI在内的企业数据分析业务的一站式解决方案

与Snowflake相似的是,Databricks也充分利用了云基础架构提供的存储和计算服务,在其上构建了入门成本低、定价随使用而弹性扩展的软件服务方案

3、Hadoop与对象存储(OSD)


近年来,存储正在经历新一轮革命:从Hadoop到对象存储(OSD)

数据湖和Hadoop并不是竞争关系。作为一种架构,数据湖会将其它技术整合到一起,而Hadoop则成为了一种可以用来构建数据湖的组件。换句话说,Hadoop和数据湖的关系是互补的,在可预见的未来,随着数据湖继续流行,Hadoop还将继续存在

然而,数据湖会抛弃Hadoop吗?有可能。因为作为一种综合性技术架构,除了Hadoop HDFS外,数据湖还可以选择“对象存储”作为它的核心存储

现在越来越多的,像Databricks、Snowflake这样的数据平台类创业公司选择采用对象存储作为存储的核心

从头开始搭建一个分布式存储很难。所谓“计算出了问题大不了重试,而数据出了问题则是真出了问题”。所以很多数据平台类的公司如Databricks、Snowflake等都会借着计算存储分离的趋势,选择公有云提供的存储服务作为它们的数据和元数据存储,而公有云上最通用的分布式存储就是对象存储

在这里插入图片描述

对象存储详解见文章:传送门

4、Databricks与Snowflake为什么选择对象存储


为什么Databricks与Snowflake会选择采用对象存储作为存储的核心?

从技术角度来说,首先,对象存储即为非结构化存储,数据以原始对象的形式存在。这点贴合数据湖对于先存储原始数据,再读取完整数据信息后续分析的要求

其次,对象存储拥有更先进的分布式系统架构,在可扩展性和跨站点部署上,比传统存储更具优势。由于对象存储简化了文件系统中的一些特性,没有原生的层级目录树结构,对象之间几乎没有关联性,因此对象存储的元数据设计能更为简单,能够提供更好的扩展性。此外,数据湖业务往往也需要底层存储提供多站点备份和访问的功能,而绝大部分对象存储原生支持多站点部署。通常用户只要配置数据的复制规则,对象存储就会建立起互联的通道,将增量和/或存量数据进行同步。对于配置了规则的数据,你可以在其中任何一个站点进行访问,由于跨站点的数据具备最终一致性,在有限可预期的时间内,用户会获取到最新的数据

第三,在协议层面,由AWS提出的S3协议已经是对象存储事实上的通用协议,这个协议在设计之初就考虑到了云存储的场景,可以说对象存储在协议层就是云原生的协议,在数据接口的选择和使用上更具灵活性

第四,对象存储本身就是应云存储而生,一开始起家的用户场景即为二级存储备份场景,本身就具备了低价的特性

因此,对象存储是云时代的产物,支持原始数据存储、分布式可扩展、高灵活性、低价,都是对象存储之所以被选择的原因

5、对象存储面临的挑战


新一代数据平台的基本架构都是存算分离,即计算层和存储层是松耦合的。计算层无状态,所有的数据、元数据以及计算产生的中间数据都会存储于存储层之中。这一架构的优势包括更好的扩展性(计算、存储独立扩展),更好的可用性(计算层的失效不影响存储,因此能够很快恢复),以及更低的成本。为了适应存算分离的架构,对象存储本身也需要进一步发展

想要适应存算分离的大趋势,不是简单地把现有存储对接到计算层就可以完成的,存储本身要经历新一轮架构革命才能更好地服务于计算层

在架构之外,数据平台型业务也给对象存储的特性提出了若干新的挑战

第一个挑战是数据分析型业务所需要的性能要远高于数据备份的场景,对象存储需要能够提供与计算需求相匹配的大带宽与低延时。另一方面,对象存储还需要根据业务场景来优化性能

第二个挑战来自于数据分析所包含的众多元数据操作。因此对象存储不仅要能够提供大带宽,还要在处理小对象和元数据操作,同时提供足够的性能。这就比较考验对象存储的元数据管理能力

第三个挑战是对象存储如何兼顾性能和成本。数据湖中存储了庞大的企业数据,但在任一时间点,可能只有一小部分数据是被数据分析业务所需要的。如果所有数据都放在性能最优的物理介质上(比如非易失性内存),那么成本将变得过高,失去了云存储的经济性,而如果在对象存储的前端再加一层Cache层,无疑也会增加整个系统的复杂度。因此如何有效识别冷热数据,并将它们分区放置是对象存储需要解决的问题

第四个挑战是对象存储如何与开源生态相结合。现阶段比较成熟的在数据湖之上提供表结构的开源产品是Delta Lake、Iceberg和Hudi。同时从应用场景上来说,在传统的离线数据分析场景之外,实时数据分析的业务场景正在增加。


参考文章:https://cloud.tencent.com/developer/news/870840


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于session的不断变化问题

今天在帮同学解决一个小问题,差点阴沟翻船。 问题再现:他从github上拉了一个项目下来跑,结果发生跑不通问题出现在验证码一直不对。 我一看项目源码,验证码生成后存储再session中了,等用户发送请求验证的时候sessionI…

AI系统开发源码搭建的专业深度思考:从零到一的技术探索之路

【内容摘要】 随着人工智能技术的飞速发展,AI系统开发源码搭建已成为越来越多开发者关注的焦点。本文将从专业角度探讨AI系统开发源码搭建的过程,从需求分析、设计、开发、测试到部署,深入挖掘其中的关键技术和挑战。同时,我们将…

MySQL查询时间处理相关函数与方法实践笔记

1. 实践案例 在查询mysql数据库获取数据时&#xff0c;有这样一个需求&#xff1a;按每30分钟分组获取电量数据&#xff0c;形成1天48个数据点。 方法一&#xff1a; select hour(a.CreateTime) 时点,case when MINUTE(a.CreateTime)<30 then 1 else 2 end 半小时,sum(a…

无人驾驶智能:两车居然可以“交流”

导读“这些智能车看着个子小小的&#xff0c;却有大用途&#xff0c;可以说是无人驾驶车的雏形……”昨日&#xff0c;在重庆大学光电工程学院内&#xff0c;记者看到了几辆个头不大的智能小车&#xff0c;是大学生自主设计的无人驾驶车的雏形。据悉&#xff0c;它们在8月26日结…

【树与二叉树的转换,哈夫曼树的基本概念】

文章目录 树与二叉树的转换将二叉树转化为树森林与二叉树的转化&#xff08;二叉树与多棵树之间的关系&#xff09;二叉树转换为森林森林的先序遍历1&#xff09;先序遍历2&#xff09;后序遍历 哈夫曼树的基本概念森林转换成二叉树&#xff08;二叉树与多棵树的关系&#xff0…

【dbeaver】添加mysql高低版本选择驱动

添加mysql高低版本选择驱动 连接到数据库->全部->查询mysql MySQL 版本驱动 8.0 MySQL 5 版本驱动 5.7.x 其他需要就&#xff1a;https://downloads.mysql.com/archives/c-j/ 密码查看 项目设置密码&#xff1a; File -> Project security ->设置密码 It i…

C语言、c++史上最全最全爱心代码大全,彩色闪动、字符填充,附源码

第一种&#xff1a;红色爱心代码 直接上代码&#xff1a; #include<stdio.h> #include<Windows.h> int main() {system(" color 0c");//设计程序颜色 printf("遇见你是一件很开心的事情,爱你哟&#xff01;&#xff01;&#xff01;\n");//打…

【JavaEE初阶】 TCP滑动窗口与流量控制和拥塞控制

文章目录 &#x1f384;为什么出现滑动窗口&#x1f38b;滑动窗口丢包问题&#x1f6a9;情况一&#xff1a;数据包已经抵达&#xff0c;ACK被丢了。&#x1f6a9;情况二&#xff1a;数据包就直接丢了 &#x1f332;流量控制&#xff08;安全机制&#xff09;&#x1f333;拥塞控…

JVM之jmap java内存映射工具

jmap java内存映射工具 1、jmap jdk安装后会自带一些小工具&#xff0c;jmap命令(Memory Map for Java)是其中之一。主要用于打印指定Java进程(或核 心文件、远程调试服务器)的共享对象内存映射或堆内存细节。 jmap命令可以获得运行中的jvm的堆的快照&#xff0c;从而可以离…

谈谈如何写作(一)

序言 没有什么比一套好理论更有用了。——库尔特勒温 谈谈如何写作&#xff1f; 这个题目就像一本书《如何阅读一本书》&#xff0c;听起来似乎很无趣&#xff0c;因为各位盆友直接的反应&#xff0c;可能是这根本无需理论。 实际情况呢&#xff1f;恰恰相反&#xff0c;往往你…

最简WebClient 同步、异步调用示例

目录 一&#xff0c;序言二&#xff0c;简单示例1. 引入依赖2. 日志配置3. 调用代码4. 运行结果 三&#xff0c;完整代码 一&#xff0c;序言 WebClient是Spring WebFlux模块提供的一个非阻塞的基于响应式编程的进行Http请求的客户端工具&#xff0c;从Spring5.0开始WebClient…

力扣每日一题 -- 2919. 使数组变美的最小增量运算数

//这题本质还是一个背包问题 //怎么去思考这个问题呢 //我最开始的思想是根据经验来看&#xff0c;最小增量运算数&#xff0c;并且使数组变美丽&#xff0c;那么就有点像编辑距离的问题 //但是我看了下时间复杂度&#xff0c;不能是n^2,那么再去仔细思…

图论11-欧拉回路与欧拉路径+Hierholzer算法实现

文章目录 1 欧拉回路的概念2 欧拉回路的算法实现3 Hierholzer算法详解4 Hierholzer算法实现4.1 修改Graph&#xff0c;增加API4.2 Graph.java4.3 联通分量类4.4 欧拉回路类 1 欧拉回路的概念 2 欧拉回路的算法实现 private boolean hasEulerLoop(){CC cc new CC(G);if(cc.cou…

【Spring】c命名和p命名空间注入

p命名空间注入 导入p名称空间 xmlns:p"http://www.springframework.org/schema/p"直接输入p就会有相关的属性弹出 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xml…

免费博客搭建笔记

title: 免费博客搭建笔记 tags: 博客搭建 本次是对自己在网上学习github搭建一个 &#x1f447;个人免费静态网站的总结当然不是很完美&#x1f447; Bow to the new king iYANG (yangsongl1n.github.io) 接着我会从我的写笔记的个人习惯来逐步介绍如何搭建这个网站 1.写笔…

函数的连续性

函数在某一点极限存在&#xff0c;不一定连续 函数的左极限 函数的右极限 函数在某点连续需要满足三个条件 1、左右极限存在 2、左右极限相等 3、函数在该点的极限值等于在该点的函数值 满足1、2两个条件函数在该点极限存在。

计算机网络期末复习-Part4

1、UDP和TCP的比较 TCP提供可靠传输&#xff1b;UDP提供不可靠传输。TCP有连接&#xff1b;UDP无连接&#xff08;减小时延&#xff09;。TCP提供流量控制&#xff1b;UDP不提供流量控制。TCP提供拥塞控制&#xff1b;UDP不提供拥塞控制&#xff08;传输快&#xff09;。TCP提…

【蓝桥杯软件赛 零基础备赛20周】第3周——填空题

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 文章目录 00. 2023年第14届参赛数据0. 上一周答疑1. 填空…

Practice01-Qt6.0设置文本颜色、格式等。

Qt6.0学习&#xff0c;在此做个记录&#xff0c;方便日后查找复习 本次项目用到的控件有&#xff1a;复选框&#xff0c;单选按钮。文本编辑框。 项目目录结构&#xff1a; 项目运行效果图&#xff1a; 实现的功能&#xff1a; 勾选Underline、Italic&#xff0c;Bold时&…

Git 进阶使用

一. Git图形化操作 1.1.什么是图形化管理工具 图形化管理工具是一种通过可视化界面来操作计算机系统或应用程序的软件工具。在软件开发中&#xff0c;它通常用于管理和操作版本控制系统&#xff08;如Git、SVN等&#xff09;以及代码开发环境&#xff08;如IDE&#xff09;。与…