spark 概述

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

内容简介: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

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

查看所有标签

猜你喜欢:

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

CSS

CSS

David Sawyer McFarland / O'Reilly / 2006-08-24 / USD 34.99

Book Description Web site design has grown up. Unlike the old days, when designers cobbled together chunky HTML, bandwidth-hogging graphics, and a prayer to make their sites look good, Cascading St......一起来看看 《CSS》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具