spark记录(1)spark Core之RDD

Spark运行模式

  • Local

多用于本地测试,如在eclipse,idea中写程序测试等。

  • Standalone

Standalone是Spark自带的一个资源调度框架,它支持完全分布式。

  • Yarn

Hadoop生态圈里面的一个资源调度框架,Spark也是可以基于Yarn来计算的。

  • Mesos

资源调度框架。

¬  要基于Yarn来进行资源调度,必须实现AppalicationMaster接口,Spark实现了这个接口,所以可以基于Yarn。

1.概念

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。

2.RDD的五大特性:

https://blog.csdn.net/zym1117/article/details/79532458

2.1RDD是由一系列的partition组成的

  RDD是一个由多个partition(某个节点里的某一片连续的数据)组成的的list;将数据加载为RDD时,一般会遵循数据的本地性(一般一个hdfs里的block会加载为一个partition)。

2.2函数是作用在每一个partition(split)上的

  一个函数计算每一个分片,RDD的每个partition上面都会有function,也就是函数应用,其作用是实现RDD之间partition的转换。

2.3RDD之间有一系列的依赖关系

  RDD会记录它的依赖 ,依赖还具体分为宽依赖和窄依赖,但并不是所有的RDD都有依赖。为了容错(重算,cache,checkpoint),也就是说在内存中的RDD操作时出错或丢失会进行重算。

2.4分区器是作用在K,V格式的RDD上

  可选项,如果RDD里面存的数据是key-value形式,则可以传递一个自定义的Partitioner进行重新分区,例如这里自定义的Partitioner是基于key进行分区,那则会将不同RDD里面的相同key的数据放到同一个partition里面

2.5RDD提供一系列最佳的计算位置

  最优的位置去计算,也就是数据的本地性

3.RDD理解图:

注意:

¬  textFile方法底层封装的是读取MR读取文件的方式,读取文件之前先split,默认split大小是一个block大小。

¬  RDD不存储数据

¬  什么是K,V格式的RDD?

  • 如果RDD里面存储的数据都是二元组对象,那么这个RDD我们就叫做K,V格式的RDD。

¬  哪里体现RDD的弹性(容错)?

  • partition数量,大小没有限制,体现了RDD的弹性。
  • RDD之间依赖关系,可以基于上一个RDD重新计算出RDD。

¬  哪里体现RDD的分布式?

  • RDD是由Partition组成,partition是分布在不同节点上的。

¬  RDD提供计算最佳位置,体现了数据本地化。体现了大数据中“计算移动数据不移动”的理念。

原文地址:https://www.cnblogs.com/kpsmile/p/10421338.html

时间: 2024-08-29 21:14:24

spark记录(1)spark Core之RDD的相关文章

spark core之RDD编程

  spark提供了对数据的核心抽象--弹性分布式数据集(Resilient Distributed Dataset,简称RDD).RDD是一个分布式的数据集合,数据可以跨越集群中的多个机器节点,被分区并行执行.  在spark中,对数据的所有操作不外乎创建RDD.转化已有RDD及调用RDD操作进行求值.spark会自动地将RDD中的数据分发到集群中并行执行. 五大特性 a list of partitions  RDD是一个由多个partition(某个节点里的某一片连续的数据)组成的的lis

Spark Core 的RDD

(1)RDD的介绍 ?????RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变(RDD中的数据,不能增删改),可分区.元素可并行计算的集合.??具有数据流的模型的特点,自动容错.位置感知性调度和可伸缩性.RDD允许用户在执行多个查询时显示的将工作集缓存在内存中.后续的查询能够重用工作集,这极大地提升了查询速度.??RDD可以从 三方面理解:??? - 数据集:RDD是数据集合的抽象,是复杂物理介质上存在数据的一

《OD学spark》20160925 Spark Core

一.引言 Spark内存计算框架 中国Spark技术峰会 十二场演讲 大数据改变世界,Spark改变大数据 大数据: 以Hadoop 2.x为主的生态系统框架(MapReduce并行计算框架) 存储数据.处理数据 分布式 Spark: 类似于MapReduce的另外一种分布式计算框架 核心: 数据结构:RDD,集合List[T] MapReduce 最大的痛点: IO性能瓶颈,也是所有分布式计算框架的痛点 (1)磁盘IO, input(disk) -> map -> DISK(local)-&

spark记录(9)SparkCore的调优之Spark内存模型

摘抄自:https://www.cnblogs.com/qingyunzong/p/8946637.html 一.概述 Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色.理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优.本文旨在梳理出 Spark 内存管理的脉络,抛砖引玉,引出读者对这个话题的深入探讨.本文中阐述的原理基于 Spark 2.1 版本,阅读本文需要读者有一定的 Spark 和 Java 基础,了解

spark TopN问题:dataframe和RDD比较

spark版本:spark 2.0.2 scala版本:2.11.8 服务器版本:CentOS 6.7 spark TopN问题,其实就是分组.排序.组内取值问题. 在shell下输入 spark-shell 进入spark后输入以下命令: //使用dataframe解决spark TopN问题:分组.排序.取TopN import org.apache.spark.sql.expressions.Window import org.apache.spark.sql.functions._ va

Spark(Python) 从内存中建立 RDD 的例子

Spark(Python) 从内存中建立 RDD 的例子: myData = ["Alice","Carlos","Frank","Barbara"]myRdd = sc.parallelize(myData)myRdd.take(2) ----In [52]: myData = ["Alice","Carlos","Frank","Barbara"

spark记录(0)Spark初始

部分摘自:https://www.cnblogs.com/qingyunzong/p/8886338.html 1.什么是Spark Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎.Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行计算框架,Spark拥有Hadoop MapReduce所具有的优点:但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写

Spark 教程:Spark的体系架构

最近看到一篇关于Spark架构的博文,作者是 Alexey Grishchenko.看过Alexey博文的同学应该都知道,他对Spark理解地非常深入,读完他的 “spark-architecture” 这篇博文,有种醍醐灌顶的感觉,从JVM内存分配到Spark集群的资源管理,步步深入,感触颇多(腾云科技ty300.com).因此,在周末的业余时间里,将此文的核心内容译成中文,并在这里与大家分享.如在翻译过程中有文字上的表达纰漏,还请大家指出. 首先来看一张Spark 1.3.0 官方给出的图片

【Spark 内核】 Spark 内核解析-下

Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spark内核原理,能够帮助我们更好地完成Spark代码设计,并能够帮助我们准确锁定项目运行过程中出现的问题的症结所在. Spark Shuffle 解析 Shuffle 的核心要点 ShuffleMapStage与ResultStage 在划分stage时,最后一个stage称为finalStage,它本质上是一个ResultSt

Spark机器学习:Spark 编程模型及快速入门

http://blog.csdn.net/pipisorry/article/details/52366356 Spark编程模型 SparkContext类和SparkConf类 我们可通过如下方式调用 SparkContext 的简单构造函数,以默认的参数值来创建相应的对象.val sc = new SparkContext("local[4]", "Test Spark App") 这段代码会创建一个4线程的 SparkContext 对象,并将其相应的任务命