数据处理方式,线程与进程,多任务,Spark与MR的区别

news/2024/10/17 18:38:33/

目录

数据处理的方式有哪些

单机数据处理

集群数据处理

 分布式计算框架

 MapReduce

 ApplicationMaster

Spark分布式计算类别

进程与线程的区别

进程是计算时分配资源的最小单位

线程是执行计算任务的最小任务

多进程的执行效率没有多线程的执行效率高

多任务

Spark和MapReduce的区别

处理速度

实现方式

容错机制

调度


数据处理的方式有哪些

单机数据处理

依赖单个计算机的资源,处理的数据量较少,当数据量过大时,无法执行

集群数据处理

采用分布式技术,借助分布式服务实现海量数据处理

  • 分布式存储 HDFS  :  主-NameNode   从-DataNode
  • 分布式资源调度 Yarn  :  主-ResourceManager  从-NodeManager

 分布式计算框架

 MapReduce

  • 需要开发人员编写计算代码
  • MapReduce采用的是多任务方式(进程)进行分布式计算,每个计算任务运行在不同的服务器上
  • MapReduce包含Map和Reduce两个部分,两个部分分别以进程的方式运行
  • Map运行的数量由谁决定?
    • 默认情况下,split切割的数据会给到Map,而split默认切割一个块的的数据,所以,一个块对应一个map
  • Reduce运行数量?
    • 默认情况下,根据计算的数据量自动决定产生多少个reduce
    • hive在进行计算时,可以通过set进行设置
    • 指定的reduce个数决定了分区数 ,分区数和reudce个数是一致的

 ApplicationMaster

ApplicationMaster管理MapReduce的计算

Spark分布式计算类别

spark有很多部署方式,不同的部署方式决定spark计算时的资源调度方式

  • Local模式 使用单机资源
  • 使用master参数指定资源调度方式 默认 loca

  • standalone 使用spark自带的资源调度

  • yarn 使用hadoop的资源调度

进程与线程的区别

进程是计算时分配资源的最小单位

  • 如果要执行一个计算任务,是按照进程分配资源
  • 运行时,需要先创建进程,一个进程就有一份资源

线程是执行计算任务的最小任务

  • 线程依赖进程的资源,没有进程就没有线程
  • 默认情况下一个进程中包含一个线程,使用线程执行任务

多进程的执行效率没有多线程的执行效率高

  • 创建进程资源需要花费时间
  • spark的执行速度比Mapreduce的速度快

多任务

  • 可以通过多任务实现多个计算机任务同时执行
  • 多任务可以通过进程实现多个任务,也可以多个线程实现

Spark和MapReduce的区别

处理速度

MapReduce只要是基于磁盘计算,将数据存储在HDFS上,并在计算工程中频繁读写磁盘.

Spark是支持内存计算,当内存够大,可以比MapReduce快100倍

实现方式

MapReduce采用的是多进程方式实现多任务计算,提升计算效率

Spark采用的多线程方式实现多任务,提升计算效率

容错机制

MapReduce 通过在HDFS上存储中间数据来实现容错

Spark通过RDD的血统机制来实现容错,如果某个节点失败,可以从血统信息重新计算丢失的数据.

调度

MapReduce使用Hadoop的YARN作为资源调度器

Spark有自己的调度器,可以更高效的管理资源和任务


http://www.ppmy.cn/news/1538527.html

相关文章

Redis中的Lua脚本是否是原子性操作?详解

1. Redis中的Lua脚本是原子性操作吗? 在回答这个问题之前,我们首先要明确,Lua脚本中所指的原子性与我们通常意义上的原子性不一样。 我们通常所说的原子性是数据库中事务四大特性ACID(即原子性、一致性、隔离性、持久性&#xff0…

Linux高阶——0928—Github数据上传markdown语言

1、Github三要素 仓库、提交、分支 提交 绿色:新加 红色:删除 主分支master或main 项目的存储单位——仓库 实际代码的存储单位——分支 分支的协同开发 2、本地数据上传到云端的过程 3、markdown

【SQL】三角形判断

目录 语法 需求 示例 分析 代码 语法 SELECT name, IF(salary > 5000, High, Low) AS salary_level FROM employees; SELECT 关键字用于指定要从表中选取哪些列。name 是employees表中的一个列名,代表员工的名字。IF(salary > 5000, High, Low) 是一个函…

Linux——传输层协议

目录 一再谈端口号 1端口号范围划分 2两个问题 3理解进程与端口号的关系 二UDP协议 1格式 2特点 3进一步理解 3.1关于UDP报头 3.2关于报文 4基于UDP的应用层协议 三TCP协议 1格式 2TCP基本通信 2.1关于可靠性 2.2TCP通信模式 3超时重传 4连接管理 4.1建立…

Apache DolphinScheduler社区9月进展记录

各位热爱 Apache DolphinScheduler 的小伙伴们,社区 9 月月报更新啦!这里将记录 Apache DolphinScheduler 社区每月的重要更新,欢迎关注! 月度 Merge Star 感谢以下小伙伴上个月为 Apache DolphinScheduler 做的精彩贡献&#x…

Redis配置篇 - 指定Redis配置的三种方式,以及Redis配置文件介绍

文章目录 1 指定Redis配置的三种方式1.1 通过命令行参数来指定Redis配置1.2 通过配置文件来指定Redis配置1.3 在服务器运行时更​​改 Redis 配置 2 关于Redis配置文件 1 指定Redis配置的三种方式 1.1 通过命令行参数来指定Redis配置 在redis启动时,可以直接通过命…

针对考研的C语言学习(循环队列-链表版本以及2019循环队列大题)

题目 【注】此版本严格按照数字版循环队列的写法,rear所代表的永远是空数据 图解 1.初始化部分和插入部分 2出队 3.分部代码解析 初始化 void init_cir_link_que(CirLinkQue& q) {q.rear q.front (LinkList)malloc(sizeof(LNode));q.front->next NULL…

FLINK SQLTable API 简介及运行环境

FLINK SQL&Table API 简介 Flink本身是批流统一的处理框架,所以Flink SQL和Table API是批流统一的上层处理API。目前,这两套API仍处于活跃的开发阶段,功能尚未完全完善。 Flink SQL Flink SQL:可以直接在代码中写SQL&#…