还在做 Hadoop 生态?那我祝你一帆风顺

这篇具有很好参考价值的文章主要介绍了还在做 Hadoop 生态?那我祝你一帆风顺。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上回说到,我决定走出大数据的围城,用另一种视角审视与复盘行业。

文章发出后收到很多读者的反馈,其中呼声比较高的一条是希望我能聊聊大数据的行业前景与思考。针对这个问题,后面我会分享一些自己的经验与思考,同时,也会邀请来自各个大厂及正在相关方向创业的朋友做客太可研究所(techinstitute),相信届时可以解答各位的一些困惑。

言归正传,在上篇文章中,我带领大家梳理了存储的定义、发展历程及分布式文件系统/对象存储技术。今天我将继续分享存储的其他关键技术——存储格式、数据库/数据仓库、数据湖,忘记前文的朋友可点击《2024 年,一个大数据从业者决定……》 复习。话不多说,存储技术 2.0 篇,直接开盘!

Vol.1

有了分布式存储解决了能不能存的问题之后,下一步就是怎么存的问题。使用哪种存储格式,取决于用户的使用场景,没有一个放之四海皆准的结论。正所谓没有没用的格式,只有没用的场景。

在早期大数据生态中,大家都是用纯文本例如 csv 存储数据,甚至有不少同学使用自己拼接的字符串存储,相当野蛮。这就带来了很多显而易见的问题,例如存储效率不高,没有很好地使用压缩,读取时性能差,文件缺乏解释性很难复用。

所以,2013年左右,当时两家著名的 Hadoop 发行商 Cloudera、Hortonworks 相继推出了自己的列式存储格式 parquet 和 orc, Cloudera、Hortonworks 这两家公司的恩怨也随着 Hadoop 技术的退火消散在了历史中,他们恩怨纠葛需要单独写一篇文章来讲。

列式存储的优势现在看来也不是什么高科技的东西,但是在当时确实大大加速了分析效率。列存的优势是压缩率更高、查询时可以裁剪、支持灵活的 schema、对并行计算友好。

当然,列存也不是全是优点,例如不适合频繁的更新、不支持随机访问、写入性能差等,这就让列存天然地适合分析场景,所以列存现在成了几乎所有 OLAP 数据库、数据湖的标配,但 OLTP 数据库几乎不会使用列存。

无论是文本格式的 csv 还是列存的 parquet,都是开放、标准的存储格式,有大量的生态兼容,小 A 生成的 parquet 文件交给小 B 使用,是完全没问题的。但是大量的数据库、数据仓库出于性能、稳定性、兼容性等种种原因会使用自己独有的存储格式,这些文件只能通过对应的数据库读取,用户只能通过数据库的 API 访问数据。这也就是数据库和数据湖两类技术本质上的不同,一个更强调性能,一个更强调开放。

Vol.2

HBase 是 Hadoop 生态中绕不过去的技术,虽然从现在视角来看,它有这样那样的问题。

HBase 是构建在 HDFS 之上的数据库,数据模型类似于 Google 的 Bigtable,旨在提供对大量结构化数据的快速随机访问。HBase 的历史可以追溯到 2006 年 11月,当时 Google 发布了 BigTable 的论文。2007 年 2 月,HBase 的最初原型做创建。同年 10月,第一个可用的 HBase 与 Hadoop 0.15.0 一起发布。2008 年 1 月,HBase 成为 Hadoop 的子项目。2010 年 5 月,HBase 成为 Apache 的顶级项目。

从上述过程不难看出 HBase 和 Hadoop 深深地绑在了一起,是一荣俱荣、一损俱损的关系。Hadoop 生态有的问题像运维复杂、扩展困难、故障排查难等,HBase 一样不少,甚至 HBase 的存在会加重这些问题。但是,在 10 年代的前几年几乎没有更好的方案,能够同时满足高速查询、写入、海量数据、可扩展这些能力。

再结合之前讨论的存储格式,很多同学肯定会好奇:HBase 既能满足高速的写入又能高速的查询,它用了什么格式。像 HBase 这类数据库一般会采用 KV 的存储格式,但又不是简单的 KV,而是自定义了一套 HFile 存储格式,并配套了一个存储引擎,包含索引、compaction、标记删除、内存表和磁盘数据管理等。虽然 HBase 技术逐渐式微,但它的设计理念深深的影响了其它分布式数据库,甚至现在还有几家云厂商把 HBase 魔改版本对外售卖。

与 HBase 同时代的还有 Cassandra,Cassandra 不在 Hadoop 体系内,是一个自成体系的数据库,实现了 Google BigTable 的论文。其最初由Facebook开发并开源,旨在解决大规模数据存储和处理的需求,具有高可用性、高性能和分布式的特点。2008 年开源,随后成为 Apache 软件基金会的顶级项目。

在 2010 年代的前几年,如果想找一个高扩展、高可用、又没那么在乎 ACID 和 SQL 接口的数据库,且不想维护 Hadoop 集群,Cassandra 是一个很好的选择,直到今天仍有许多大型互联网公司和企业在广泛使用,包括 Facebook、Instagram、Netflix、eBay 和 Twitter 等,比较有意思的一点是 Cassandra 在海外知名度还不错,在国内几乎没有声音。

相比于 HBase 的主从结构,Cassandra 的设计受到了 Google 的 Bigtable 和亚马逊的 Dynamo 论文的启发,采用了分布式架构和基于列的数据模型。Cassandra 使用了 P2P 的架构,整个集群没有 master 节点,基于 Gossip 协议实现的对等集群。这种设计的结果是放弃了强一致性,选择了可用性。此外,如果客户端想读到最新的数据需要满足 W+R>N 的条件,这里 W 是写入的副本数,R 是读的副本数,N 是集群的节点数。

2012 年,Google 发布了 Spanner 论文,随后 NewSQL 这个品类开始进入技术圈的视野,先后有两款产品分别是 CockroachDB 和 TiDB,这些新产品完全跟 Hadoop 体系没有关系,尝试使用新的思路解决大数据中结构化数据的存储问题,同时 NewSQL 又再次把 SQL 带回了正轨,再次证明了 SQL 才是结构化数据的真爱。至此,大数据和数据库两个生态开始互相竞争又融合,SQL 也再次成为了数据接口的标准。

Vol.3

大数据和数据库融合之后为结构化数据指明了方向,但大数据的范畴并不仅仅只有结构化数据处理的需求。

AI 技术的持续火热,使得大量半结构、非结构化的数据亟待处理。此外,AI 的数据使用场景并不仅仅是简单的求和、最大最小值这类的数值计算,而是更复杂的神经网络、矩阵、向量计算,这类场景几乎不可能用 SQL 表达,一定是通过 Python 或其他语言的代码来实现。而且 AI 的计算往往不是使用 CPU 而是用 GPU,这与数据库的设计又是南辕北辙。除了 AI 之外,分析领域也在快速发展,更灵活的数据使用方式需求量也越来越大,这就催生了数据湖技术。

数据湖技术从下到上依次是 对象存储 --> 存储格式 --> 开放的表格式 --> Catalog --> 计算引擎 和 存储引擎。其中最重要的就是开放的表格式技术和 Catalog,有了这两者其他计算引擎就能很自由的对数据湖进行操作。

目前主流的数据湖表格式有 3 个:Hudi、Iceberg、Delta Lake。三者各有优劣,有很多文章都对他们进行过详细的对比,参见 Comparison of Data Lake Table Formats | Dremio Blog。

无论哪项技术都对接了现有的 Spark、Flink、Doris、Clickhouse 等主流的计算引擎和 OLAP 数据库。尽管开放的表格式(Open Table Format)相对于列式存储(Column based Data Format),从技术视角只是多了一层元数据和基于时间戳的事务管理,这个小小的创新却带来了质的飞跃。

在 Hive 的年代,数据库的元数据信息都存在 Hive 的 metastore 里,也就是存在 MySQL 里,可想而知随着数据表、分区、列、视图、用户等等这些元数据信息的爆炸,MySQL 就撑不住了。另一方面,当访问元数据的并发量增加 MySQL 的单点瓶颈也会凸显。而开放的表结构优势是把元数据和数据放在一起,使得数据可以自解释,把元数据也视为一类大数据,这样大大扩展了系统的容量,元数据服务不再是瓶颈,开发者也可以更自由地访问。

从数据湖技术的发展不难看到,有时候一些技术的小创新,如果找对了场景,可以释放相当大的应用场景。

Vol.4

至此,我们已经回顾完大数据存储技术的历史及其代表技术。持续不断地有新技术涌现,无疑对技术、产品、业务有着更大的价值,与此同时,有些技术也随着新事物的诞生而逐渐没落。

对于一线的开发者而言该如何选择?架构师在纷繁的技术栈里又该如何抉择?

没人可以给出一个标准答案,我们只能从历史中尝试总结一些规律,来帮助更多人做出选择:

  • 云存储已经成为了事实标准,如果现在还有新人投入到 Hadoop 生态圈里,我只能送出真诚的祝福,并祝他一帆风顺。

  • 开放大于封闭,目前来看没有一个技术能完全解决所有用户的所有问题,那么无论是哪种技术、哪种方案都要把生态、集成作为重点考察的指标。

  • 分布式数据库和大数据融合,这两者的界限已经越来越模糊,机会还有很多。

  • 与 AI 结合的场景还有广阔的空间,结构化数据处理已经卷成红海,而AI更注重非结构化、半结构化数据的场景,还有很大的空白,向量数据库这一细分品类的出现就是很好的例子。

  • 批流结合,大数据技术中批数据和流数据有时是两套架构,甚至两套技术栈,很割裂,现在已经有很多产品想将两者融合,给用户提供统一的使用体验。

引用

  • What is HDFS? Hadoop Distributed File System overview

  • Limitations of HDFS

  • Object Storage vs. POSIX Storage | Enterprise Storage Forum

  • Storing Apache Hadoop Data on the Cloud - HDFS vs. S3 | Integrate.io

  • Hadoop Hive and 11 SQL-on-Hadoop Alternatives | Jethro

  • HBase - Overview

  • HBase Pros and Cons | Problems with HBase - DataFlair

  • Apache HBase I/O - HFile - Cloudera Blog

  • Introduction to Data Lakes | Databricks

  • Comparison of Data Lake Table Formats | Dremio Blog文章来源地址https://www.toymoban.com/news/detail-788903.html

到了这里,关于还在做 Hadoop 生态?那我祝你一帆风顺的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hadoop生态体系-HDFS

    Hadoop:允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理。 核心组件有: HDFS(分布式文件系统):解决海量数据存储 YARN(作业调度和集群资源管理的框架):解决资源任务调度 MAPREDUCE(分布式运算编程框架):解决海量数据计算 特点:扩容能力(

    2024年02月16日
    浏览(75)
  • Hadoop生态体系-2

    思想:分而治之 map:“分”,即把复杂的任务分解为若干个“简单的任务”来处理。可以进行拆分的前提是这些小任务可以 并行计算,彼此之间没有依赖关系 Reduce:“合”,对map阶段的结果进行全局汇总 MapReduce 是一个分布式运算程序的编程框架,核心功能是将用户编写的业务

    2024年02月15日
    浏览(36)
  • Hadoop生态漏洞修复记录

    漏洞一: 端口:8088 协议:TCP 服务:radan-http 漏洞: Apache Hadoop YARN 资源管理器 REST API未授权访问漏洞【原理扫描】 官方建议修复方案: 临时解决方案: 通过系统内置防火墙只允许端口被业务主机访问 厂商解决方案: 更新Hadoop到2.X以上版本并启用Kerberos认证功能,禁止匿名

    2024年02月13日
    浏览(43)
  • Hadoop生态之Mapreduce

    今天给大家带来的是Hadoop生态中的Mapreduce,看到这里诸佬们可能就有疑惑了呢,啥是Mapreduce?小小的脑袋大大的疑惑。 在上篇博客中博主使用了王者来举例子,如果把Hadoop当作王者的话,HDFS是后台存储点券数据的系统的话,那么我们今天介绍的Mapreduce就是某者用来计算优惠

    2024年02月02日
    浏览(48)
  • 大数据导论——Hadoop生态系统

    Hadoop是Apache软件基金会旗下一个开源分布式计算平台,为用户提供底层细节透明的基础框架。 经过多年的发展,Hadoop生态系统不断完善和成熟,目前已经包含了多个子项目,除了核心的HDFS和MapReduce以外,Hadoop生态系统还包括ZooKeeper,HBase,Hive,Pig,Mahout,Sqoop,Flume,Ambari等。 它实现

    2024年02月03日
    浏览(45)
  • Hadoop——大数据生态体系详解

      1.1 大数据概念 大数据(big data):指无法在一定时间范围内用常规软件工具进行捕捉、管理 和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程 优化能力的海量、高增长率和多样化的信息资产。 主要解决,海量数据的存储和海量数据的分析计

    2024年02月02日
    浏览(50)
  • 大数据hadoop生态技术简介

    Hadoop 生态是指围绕 Hadoop 大数据处理平台形成的一系列开源软件和工具,用于支持大规模数据处理、存储、管理、分析和可视化等应用场景。暂时将其核心技术分为9类:  数据采集技术框架: Flume、Logstash、FileBeat;Sqoop和Datax; Cannal和Maxwell 数据存储技术框架:  HDFS、HBas

    2024年02月09日
    浏览(44)
  • 大数据系统架构-Hadoop生态系统

    Hadoop是较早用于处理大数据集合的分布式存储计算基础架构,通过Hadoop,用户可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的为例执行告诉运算和存储。简单来说,Hadoop是一个平台,在它之上,可以更容易地开发和运行大规模数据的软件。 Hadoop体系

    2023年04月27日
    浏览(41)
  • 第01讲:大话 Hadoop 生态圈

    最近,就职于一家电商公司的小李遇到了一些麻烦事,因为领导突然给他布置了一个任务,要把他们电商平台里所有的用户在 PC 端和 App 上的浏览、点击、购买等行为日志都存放起来集中分析,并形成报表,以供老板每天查看。 最初,小李觉得这个任务比较简单,他的基本思

    2024年01月17日
    浏览(31)
  • Hadoop生态圈实战系列:第一篇 Hadoop 集群安装及使用详解

    作者:禅与计算机程序设计艺术 Apache Hadoop 是一款开源的、分布式文件系统和计算平台。它由 Apache 基金会开发,并于 2011 年成为 Apache 顶级项目之一。Hadoop 的主要特性包括: 分布式存储: Hadoop 允许将数据存储在多个服务器上,在同一个集群中,并提供高容错性和可靠性。

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包