当前位置: 首页 > article >正文

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,能够非常轻松的实现功能开发


http://www.kler.cn/a/469981.html

相关文章:

  • Freemarker模板进行判空
  • 微信小程序获取图片使用session(上篇)
  • 深度评测uni-app x:开启跨平台开发新篇章
  • 【HarmonyOS 5.0】从0到1开发购物应用App(二):登录页对接口
  • 新型大数据架构之湖仓一体(Lakehouse)架构特性说明——Lakehouse 架构(一)
  • F#语言的网络编程
  • SpringBoot开发——内置的 ObjectUtils 工具类详解
  • 【C++】类和对象(下):友元、static成员、内部类、explicit 和 匿名对象
  • VUE3配置后端地址,实现前后端分离及开发、正式环境分离
  • 【C++】const关键字_运算符重载_继承
  • Spring Boot教程之四十七:Spring Boot ——JDBC
  • BMS应用软件开发 — 2 单体电池的基本结构和工作原理
  • linux redis/: Permission denied,当前用户对该目录没有访问权限
  • Jdbc笔记01
  • 探索报表软件的世界:山海鲸、Tableau与Power BI比较
  • 头文件iostream的一些函数使用
  • 半导体数据分析: 玩转WM-811K Wafermap 数据集(二) AI 机器学习
  • ElasticSearch基础-文章目录
  • mapreduce 工作流程
  • 头歌python实验:网络安全应用实践-恶意流量检测
  • 【FTP 协议】FTP主动模式
  • Rabbitmq消息补偿机制
  • 【机器学习】从监督学习的懵懂起步至迁移学习的前沿瞭望
  • iOS - 自定义引用计数(MRC)
  • Cursor 实战技巧:好用的提示词插件Cursor Rules
  • 深度解读 “驭风行动”