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

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

查看所有标签

猜你喜欢:

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

比特币

比特币

李钧、长铗 / 中信出版社 / 2014-1-1 / 39.00元

2009年,比特币诞生。比特币是一种通过密码编码,在复杂算法的大量计算下产生的电子货币。虽然是虚拟货币,比特币却引起了前所未有的全球关注热潮。 这一串凝结着加密算法与运算能力的数字不仅可以安全流通、换取实物,1比特币价值甚至曾高达8 000元人民币。有研究者认为比特币具备打破几千年来全球货币由国家垄断发行的可能性。在不经意间,比特币引起的金融新浪潮已悄然成型。 虚拟货币并不是新鲜事物,......一起来看看 《比特币》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具