spark 概述

栏目: 服务器 · 发布时间: 5年前

内容简介:MapReduce和spark的对比spark 基本概念一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构成,一个Stage由多个没有Shuffle关系的Task组成

MapReduce和spark的对比

MapReduce Spark
数据存储结构:磁盘HDFS文件系统的split 使用内存构建弹性分布式数据集RDD对数据进行运算和cache
编程范式:Map + Reduce DAG: Transformation + Action
计算中间结果落到磁盘,IO及序列化、反序列化代价大 计算中间结果在内存中维护存取速度比磁盘高几个数量
Task以进程的方式维护,需要数秒时间才能启动任务 Task以线程的方式维护对于小数据集读取能够达到亚秒级的延迟

spark 基本概念

  • RDD:是Resillient Distributed Dataset(弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型
  • DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系
  • Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task
  • Application:用户编写的Spark应用程序
  • Task:运行在Executor上的工作单元
  • Job:一个Job包含多个RDD及作用于相应RDD上的各种操作
  • Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表了一组关联的、相互之间没有Shuffle依赖关系的任务组成的任务集
  • Spark运行架构包括集群资源管理器(Cluster Manager)、运行作业任务的工作节点(Worker Node)、每个应用的任务控制节点(Driver)和每个工作节点上负责具体任务的执行进程(Executor)
    资源管理器可以自带或Mesos或YARN

spark程序的架构

一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构成,一个Stage由多个没有Shuffle关系的Task组成

spark程序的执行流程

当执行一个Application时,Driver会向集群管理器申请资源,启动Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行Task,运行结束后,执行结果会返回给Driver,或者写到HDFS或者其他数据库中

RDD概念

为了防止数据的反复的读写,提升效率

一个RDD是一个分布式的对象集合,本质上是一个只读的记录集合,想要对它改变就要经过各种转换。每个RDD可以分成多个分区,每个分区就是一个数据集的片段,保存在集群中的不同节点上。

RDD提供了map join group by等等很多的操作符主要包含 转换(Transformation)和动作(Action) 两种。

转换操作只会记录转换的轨迹 动作操作才会真正的去计算

常用的Transformations 操作

map : 返回一个新的数据集

flatMap: 跟map类似 不过输入和输出可以不一样

filter : 筛选返回新的数据集

groupByKey: 根据key进行分组,每个key对应一个Iterable

reduceByKey : 对每个key对应的value进行reduce操作

sortByKey : 按照key进行排序

join : 当调用类型(K,V)和(K,W)的数据集时,返回(K,(V,W))对的数据集以及每个键的所有元素对

常用的action操作

reduce : 将RDD中的所有元素进行聚合操作

collect : 将RDD中所有元素获取到本地客户端

count : 获取RDD元素总数

take : 获取RDD中前n个元素

saveAsTextFile :将RDD元素保存到文件中,对每个元素调用toString方法

countByKey :对每个key对应的值进行count计数

foreach :遍历RDD中的每个元素

RDD之间的依赖关系——窄依赖和宽依赖

窄依赖 表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应于一个子RDD的分区

比如 map filter union

宽依赖 表现为存在一个父RDD的一个分区对应一个子RDD的多个分区

比如 groupByKey

Stage的划分 遇到宽依赖就断开划分一个新的Stage,遇到窄依赖就继续往Stage中加task

spark的部署方式有三种

  • Standalone(类似于MapReduce1.0,slot为资源分配单位)一般不用
  • Spark on Mesos(和Spark有血缘关系,更好支持Mesos)
  • Spark on YARN

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从入门到精通:Prezi完全解读

从入门到精通:Prezi完全解读

计育韬、朱睿楷、谢礼浩 / 电子工业出版社 / 2015-9 / 79.00元

Prezi是一款非线性逻辑演示软件,它区别于PowerPoint的线性思维逻辑;而是将整个演示内容铺呈于一张画布上,然后通过视角的转换定位到需要演示的位置,并且它的画布可以随时zoom in和zoom out,给演示者提供了一个更好的展示空间。 Prezi对于职场人士和在校学生是一个很好的发挥创意的工具,因为它的演示逻辑是非线性的,所以用它做出来的演示文稿可以如思维导图一样具有发散性,也可以......一起来看看 《从入门到精通:Prezi完全解读》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具