Hadoop 和大数据的关系是什么?和 Spark的关系是什么?

前言

最近在知乎上面看到这样一个问题:Hadoop 和大数据的关系?和 Spark 的关系?

刚好我个人是大数据引擎开发,所以对于 Hadoop 也算比较了解,所以今天我就来分享一下我的看法。

先说结论,Hadoop 属于大数据技术这个领域的一个分支,它真正开启了大数据技术到工业使用的普惠时代,你现在听到的 Hadoop 这一词,一般情况是指 Hadoop 这个技术生态,它不再局限于 Hadoop 原先自身已有的技术,而是指建立在这个基础之上的其他所有相关的技术,比如 Spark、Hive、HDFS、Yarn、HBase、Zookeeper 等等。所以 Spark 你可以理解为它是 Hadoop 生态技术的一部分。

在 Hadoop 出来之前,国内真正用大数据技术的公司很少,你可能只会听到国内一堆人在那鼓吹大数据,但实际用大数据技术来解决业务问题的工业实践却很少。国外也主要是谷歌内部在用,毕竟人家全球搜索的数据量太大,也是业务趋势所需。

Hadoop 是什么?

Hadoop 是 2006 年由道格卡丁(Doug Cutting)开源出来分布式计算平台,其前身是Apache Lucene 子项目 Nutch 的一部分。

Hadoop 框架之所以能够开源能出来,其设计思想很大程度上借鉴了谷歌三驾马车论文的思想,Hadoop MapReduce 计算框架借鉴了谷歌《MapReduce: Simplified Data Processing on Large Clusters》这篇论文,Hadoop HDFS 则是借鉴了谷歌《The Google File System》这篇论文,后面 Doug Cutting 结合这两篇论文的思想,开发出今天的 Hadoop MapReduce 计算框架 和 HDFS(Hadoop Distributed File System), 不得不说,谷歌对于大数据领域的贡献,还是真的有东西的。

Hadoop 主要包含三部分:MapReduce 分布式任务计算模型、HDFS 分布式文件系统、Yarn 资源管理框架。

MapReduce 任务框架,它把大数据计算任务分为了 Map 任务和 Reduce 任务,用户在开发大数据任务时,只需要开发 Map 任务的逻辑和 Reduce 任务逻辑即可。这种编程模型简化了开发大数据任务复杂度,不过后面随着 Hive 出来,用户直接使用 SQL 来开发 Hadoop 任务,这种开发模型几乎也没有人使用了。

HDFS 分布式文件系统,主要是将文件分为 Block 来进行存放,一个 Block 一般是 256 MB,副本存放数一般是 3,主要是为了防止文件损坏,而进行容错。HDFS 一般有两类节点:NameNode 和 DataNode,NameNode 管理文件的元数据,DataNode 则是实际数据文件的存放节点。

Yarn 则是 Hadoop 的计算资源管理框架,它既可以运行 Hadoop MapReduce 任务,也可以运行 Spark 任务,同时也可以运行 Apache Flink 任务,它是以 Container 来封装具体申请的资源,比如一个 Container 的内存为 4096 MB,CPU 为 2 Core(软隔离),一个任务申请 4 个 Container。现在企业逐渐开始使用 K8S 来管理资源,核心还是为了公司机器资源管理的统一。

Spark 是什么

Spark 本质是一种计算框架,其内置了 SQL、流式传输和计算、机器学习和图处理模块。它没有实际的数据存储层,所以它的数据源一般来自于外部。用户可以使用 SQL 来编写 Spark 计算任务,同时也可以使用 Java、Scala、Python 来编写 Spark 计算任务。

Spark 计算框架相对于 Hadoop MapReduce 任务最大的一个区别,就是它可以在内存中存储 Shuffle 的数据,而 Hadoop MapReduce 则需要将 Shuffle 的数据放到磁盘,由于内存和磁盘在读取和写入不是一个量级,所以 Spark 计算任务比 Hadoop MapReduce 快的非常多,一般企业现在离线作业方面,都是使用的 Spark。


我是雷克,专注于科技互联网、程序员经验、量化交易、大数据 & 数据库、AI大模型的分享,欢迎关注 。

相关推荐
初晴~1 分钟前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
DolphinScheduler社区4 分钟前
作业帮基于 Apache DolphinScheduler 3_0_0 的缺陷修复与优化
大数据
盖世英雄酱581366 分钟前
InnoDB 的页分裂和页合并
数据库·后端
SeaTunnel6 分钟前
京东科技基于 Apache SeaTunnel 复杂场景适配 #数据集成
大数据
小_太_阳26 分钟前
Scala_【2】变量和数据类型
开发语言·后端·scala·intellij-idea
直裾29 分钟前
scala借阅图书保存记录(三)
开发语言·后端·scala
喝醉酒的小白1 小时前
Elasticsearch 配置文件
大数据·elasticsearch·搜索引擎
星就前端叭1 小时前
【开源】一款基于Vue3 + WebRTC + Node + SRS + FFmpeg搭建的直播间项目
前端·后端·开源·webrtc
一只敲代码的猪1 小时前
Llama 3 模型系列解析(一)
大数据·python·llama
智慧化智能化数字化方案2 小时前
深入解读数据资产化实践指南(2024年)
大数据·人工智能·数据资产管理·数据资产入表·数据资产化实践指南