本文整理自B站视频「大数据怎么处理?Hadoop是什么?跟HDFS, Spark, Flink, Hive, Hbase是什么关系?」,通过AI音视频总结工具 Ai好记 进行转录整理,以下为整理后的内容。

从 MySQL 到大数据:为什么需要 Hadoop

一个程序员做了个商城网站,卖得太好了,每天产生巨量的用户行为和订单数据。

像 MySQL 处理几百 G 数据就比较极限了,数据一旦到 PB 级别,MySQL 根本扛不住,需要专门的工具来处理。

Hadoop 就是一套专门用于大数据处理的工具,你可以把它理解成应用和大数据之间的一个中间层。
以前数据量小,应用程序读写MySQL;现在数据量大了,应用程序就改为读写 Hadoop。

在这里插入图片描述

大数据之所以难处理,核心就一个字——「切」。将处理不过来的大数据切分成一份份小数据,再对这些小份数据进行存储和计算。

HDFS:解决大数据的存储问题

PB 级别的大数据,一台服务器装不下,那就用多台服务器来装。HDFS(Hadoop Distributed File System)会把大文件切分成 128MB 的数据块(block),分布到多台服务器的硬盘上。

存放数据的服务器叫 DataNode。怕一台崩了影响数据完整性,就多复制几份,在多台服务器备份。

在这里插入图片描述

MapReduce:解决大数据的计算问题

数据存好了,怎么算?比如统计商城所有用户订单的性别和消费金额,1280G 的数据没法一次性加载到内存里。

解法跟存储类似:将数据切分成多个分片(split),分给多个服务器计算,再把结果聚合起来。你需要定义两个函数:

  • map 函数:告诉计算机每个分片里的每行数据怎么算
  • reduce 函数:告诉计算机 map 算好的结果怎么汇总

这个通用的计算框架就是 MapReduce。

在这里插入图片描述

YARN:资源调度器

MapReduce 的计算任务那么多,每个任务都需要 CPU 和内存,怎么安排?

YARN 就是资源调度器,将每个任务需要的资源抽象成容器(Container),本质上是限制了 CPU 和内存的计算资源。YARN 的容器跟 Docker/K8S 的容器概念有点像,但不是一回事。

在这里插入图片描述

HDFS(存储)+ MapReduce(计算)+ YARN(资源调度)= Hadoop 三大核心组件。

Hive:给数据分析师准备的 SQL 翻译器

以前数据在 MySQL 里,统计一下写点 SQL 就行。到了大数据场景,却要写 MapReduce 函数,数据分析师受不了。Hive 就是 SQL 和 MapReduce 之间的中间层,把用户输入的类似 SQL 的语句翻译成 MapReduce 程序,在 Hadoop 集群上执行。

Spark:内存加速版的 MapReduce

MapReduce 的中间结果放磁盘,频繁读写磁盘文件,速度慢。Spark 把中间结果放内存,速度快很多。它也有 SparkSQL,可以用 SQL 查询,性能比 Hive on MapReduce 好。

在这里插入图片描述

Flink:实时流计算

MapReduce 和 Spark 都是离线的,数据一批一批处理。Flink 不一样——数据来一条处理一条,适合实时性要求高的在线数据处理场景。

在这里插入图片描述

HBase:毫秒级在线查询

用 Hive 从海量数据里读写一两条数据,接近分钟级。Flink 实时性高,但面向数据处理,不是在线读写。HBase 就是分布式数据库,能在海量数据里做毫秒级高并发读写。

在这里插入图片描述

全家桶协作流程

数据写入 HDFS,从多个 DataNode 读取。数据分析时,用户可以写 SQL 给 Hive,Hive 解析为 MapReduce 任务,配合 YARN 在 Hadoop 集群上执行。追求性能就换成 Spark,实时场景用 Flink,在线实时查询用 HBase。

小结

  • HDFS → 存数据
  • MapReduce → 算数据
  • YARN → 管资源
  • Hive → SQL 翻译器
  • Spark → 内存加速版 MapReduce
  • Flink → 流式计算
  • HBase → 分布式数据库

这一套下来就是 Hadoop 全家桶。实际工程中,往往需要多个组件配合使用,没有银弹——离线批处理选 Spark,实时计算选 Flink,临时查询用 HiveSQL,高并发场景上 HBase。

FAQ

1、Hadoop 和 Spark 是什么关系?
Spark 不是 Hadoop 的替代品,而是升级版。Hadoop 的 MapReduce 慢在磁盘读写,Spark 用内存加速。两者可以共用 HDFS 和 YARN。

2、Flink 比 Spark 快吗?
场景不同。Spark 适合批处理和微批次流处理,Flink 是真正的逐条流处理。实时性要求高的场景选 Flink,能接受秒级延迟的批处理场景 Spark 就够了。

3、HBase 和 MySQL 的区别?
HBase 是列式存储的 NoSQL 数据库,适合海量数据的随机读写,但不支持复杂 SQL 查询和事务。MySQL 是关系型数据库,数据量上去后性能急剧下降。

4、新手学大数据应该先学哪个?
建议先理解 HDFS 和 MapReduce 的原理,然后上手 Spark。Hive 的 SQL 上手门槛最低,可以先从 HiveSQL 开始感受大数据查询是什么体验。

以上内容由 Ai好记 整理。Ai好记 是一款音视频转图文笔记的AI学习助手,支持解析B站、抖音、小宇宙等平台链接及本地、网盘的音视频文件,解析后自动生成精华速览、思维导图和结构化笔记等内容形式,帮助你把几小时的视频内容变成可搜索、可复习的图文笔记。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐