Spark和Mapreduce对比

一,MapReduce的主要缺点

1.MapReduce是基于进程进行数据处理,进程相对线程来说,在创建和销毁的过程比较消耗资源,并且速度较慢。

2.MapReduce运行的时候,中间有大量的磁盘io过程。也就是磁盘数据到内存,内存到磁盘反复的读写过程。

3.MapReduce只提供了较为底层的编程API,如果想要开发比较复杂的程序,那么就需要编写大量的代码。

二,线程和进程的对比

进程(Process)和线程(Thread)是操作系统中用于执行程序的两个基本概念,它们之间有几个重要的区别:

资源分配:

进程是程序在执行时分配资源的基本单位,每个进程拥有独立的内存空间、文件描述符、堆栈等资源。

线程是进程内的执行单元,共享同一进程的资源,包括内存空间、文件描述符等。不同线程之间可以共享全局变量等数据。

并发性:

进程之间是相互独立的,每个进程都有自己的执行流程,进程之间的通信需要通过特定的机制,如进程间通信(Inter-Process Communication,IPC)。

线程是在同一个进程内部运行的,它们共享相同的地址空间,可以直接访问进程的资源,因此线程之间的通信更加方便和高效。

切换开销:

由于进程拥有独立的资源空间,进程切换的开销较大,包括保存和恢复进程的上下文、更新页表等操作。

线程共享相同的资源空间,因此线程切换的开销较小,通常只需要保存和恢复线程的上下文即可。

并发性控制:

进程之间的并发性控制相对简单,由操作系统负责管理进程的调度和资源分配。

线程之间的并发性控制更加复杂,需要程序员显式地使用同步机制(如互斥锁、信号量等)来保证线程之间的数据一致性和访问的互斥性。

总的来说,进程是操作系统中资源分配的基本单位,而线程是操作系统中执行调度的基本单位。进程之间相互独立,线程之间共享同一进程的资源,因此线程之间的通信和同步更加方便和高效

三,Spark想对MapReduce的优点:

1.Spark的底层是基于线程来执行任务

2.引入了新的数据结构--rdd(弹性分布式数据集),能够让Spark程序主要基于内存进行运行。内存的读写数据相对磁盘来说,要快很多。

3.Spark提供了更加丰富的(顶层)编程API,能够非常轻松的实现功能开发

相关推荐
不搬砖的程序员不是好程序员8 分钟前
StarRocks 无avx2 SSE指令集编译
大数据·database
Aloudata16 分钟前
数据工程实践:Aloudata CAN 如何通过 NoETL 实现真·管研用一体?
大数据·数据分析·数据治理·etl·指标平台
Aloudata17 分钟前
指标中台选型技术实测:Aloudata CAN 如何通过 NoETL 语义层驾驭复杂 SQL 生成
大数据·数据库·sql·数据分析·指标平台
TTBIGDATA21 分钟前
【Hue】Ambari开启 Kerberos 后,Hue 使用 Spark SQL出现凭证不统一问题处理
大数据·sql·spark·ambari·kerberos·hue·bigtop
小飞象—木兮29 分钟前
《电商运营分析手册》:定义、价值、产品规划与定价策略、指标体系与公式详解、电商运营框架、运营思维与经营复盘···(附相关材料下载)
大数据·人工智能·产品运营
jkyy201431 分钟前
赋能TOB端|以智能科技,筑牢糖尿病慢病精细化管理防线
大数据·人工智能·健康医疗
蓝眸少年CY34 分钟前
什么是 -大数据
大数据
新新学长搞科研1 小时前
【CCF主办 | 高认可度会议】第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026)
大数据·开发语言·网络·人工智能·算法·r语言·中国计算机学会
Cx330❀3 小时前
从零实现Shell命令行解释器:原理与实战(附源码)
大数据·linux·数据库·人工智能·科技·elasticsearch·搜索引擎
岱宗夫up3 小时前
.env 文件是干啥的?为什么不能提交到 Git?
大数据·git·elasticsearch·搜索引擎·gitee·github·gitcode