`
Kevin12
  • 浏览: 236086 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spark RDD弹性表现和来源

阅读更多
hadoop 的MapReduce是基于数据集的,位置感知,容错 负载均衡
基于数据集的处理:从物理存储上加载数据,然后操作数据,然后写入物理存储设备;
基于数据集的操作不适应的场景:
1,不适合于大量的迭代
2,交互式查询
重点是:基于数据流的方式 不能够复用曾经的结果或者中间计算结果;

spark RDD是基于工作集的
工作流和工作集的共同特点:位置感知,自动容错,负载均衡等。
spark的位置感知比hadoop的好很多,具体如下:
hadoop位置感知:hadoop进行partition之后就不管Reducer在哪里了。
spark的位置感知:spark进行partition后再进行下一步Stage时会确定其位置,是更精致化的。
RDD:Resillient Distributed Dataset
RDD的弹性表现:
1、弹性之一:自动的进行内存和磁盘数据存储的切换;
2、弹性之二:基于Lineage的高效容错(第n个节点出错,会从第n-1个节点恢复,血统容错);
3、弹性之三:Task如果失败会自动进行特定次数的重试(默认4次);
4、弹性之四:Stage如果失败会自动进行特定次数的重试(可以只运行计算失败的阶段);只计算失败的数据分片;
5、checkpoint和persist
6、数据调度弹性:DAG TASK 和资源 管理无关
7、数据分片的高度弹性(人工自由设置分片函数),repartition


Spark RDD来源:
1,使用程序中的集合创建RDD(用于小量测试);
2,使用本地文件系统创建RDD(测试大量数据);
3,使用HDFS创建RDD(生产环境最常用的RDD创建方式);
4,基于DB创建RDD;
5,基于NoSQL,例如HBase;
6,基于S3创建RDD;
7,基于数据流创建RDD;


前三种是比较基本的,后面4种是基于数据库的,要注意数据本地性(getPreferedLocations);
1.集合创建RDD方式
package com.imf.spark.rdd

import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by lujinyong168 on 2016/2/2.
  * DT大数据梦工厂-IMF
  * 使用程序中的集合创建RDD(用于小量测试)
  */
object RDDCreateByCollections {
def main(args: Array[String]) {
val conf = new SparkConf()//创建SparkConf对象
conf.setAppName("RDDCreateByCollections")//设置应用名称
conf.setMaster("local")
val sc = new SparkContext(conf)//创建SparkContext对象
    //创建一个Scala集合
val numbers = 1 to 100
val rdd = sc.parallelize(numbers)
//    val rdd = sc.parallelize(numbers,10)//设置并行度为10
val sum = rdd.reduce(_+_)
println("1+2+3+...+99+100="+sum)
  }
}


2.local模式创建RDD
package com.imf.spark.rdd

import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by lujinyong168 on 2016/2/2.
  * DT大数据梦工厂-IMF
  * 使用本地文件系统创建RDD(测试大量数据)
  * 统计文本中的字符个数
  */
object RDDCreateByLocal {
def main(args: Array[String]) {
val conf = new SparkConf()//创建SparkConf对象
conf.setAppName("RDDCreateByLocal")//设置应用名称
conf.setMaster("local")
val sc = new SparkContext(conf)//创建SparkContext对象
val rdd = sc.textFile("D://testspark//WordCount.txt")
val linesLen = rdd.map(line=>line.length)
val sum = linesLen.reduce(_+_)
println("The total characters of the file is : "+sum)
  }
}


3.HDFS模式创建RDD
package com.imf.spark.rdd

import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by lujinyong168 on 2016/2/2.
  * DT大数据梦工厂-IMF
  * 使用HDFS创建RDD(生产环境最常用的RDD创建方式)
  */
object RDDCreateByHDFS {
def main(args: Array[String]) {
val conf = new SparkConf()//创建SparkConf对象
conf.setAppName("RDDCreateByHDFS")//设置应用名称
conf.setMaster("local")
val sc = new SparkContext(conf)//创建SparkContext对象
val rdd = sc.textFile("/library/")
val linesLen = rdd.map(line=>line.length)
val sum = linesLen.reduce(_+_)
println("The total characters of the file is : "+sum)
  }
}


分享到:
评论

相关推荐

    spark RDD 论文

    - **Spark RDD 的起源**:本文档介绍的是 Spark 中的核心抽象概念——弹性分布式数据集(Resilient Distributed Datasets, RDD),这一概念由加州大学伯克利分校的研究团队提出。Spark 作为一种集群计算框架,它的...

    【SparkCore篇07】RDD数据读取和保存1

    Spark是大数据处理领域中的一个重要框架,它提供了高效、弹性、并行的数据处理能力。在Spark中,RDD(Resilient Distributed Datasets)是其核心的数据抽象,它是一种容错的、不可变的数据集合,可以在集群中分布式...

    Spark开发指南

    Apache Spark是一个快速的通用大规模数据处理系统,它由伯克利加州大学的AMP实验室开发,旨在通过算法、机器和人之间的大规模集成来展现大数据应用的平台,其核心引擎是弹性分布式数据集(RDD)。由于其优异的性能,...

    46488_Spark大数据技术与应用_习题数据和答案.rar

    - Spark的起源、架构和设计理念 - RDD(弹性分布式数据集)的概念、特点和操作 - Spark Core模块的职责与功能 - Spark的安装步骤,包括Hadoop集成与本地模式、集群模式的配置 - 使用Spark Shell进行交互式编程 ...

    Spark从入门到精通

    - **RDD**:弹性分布式数据集,是Spark的核心抽象之一,它提供了一种高效、容错的方式来处理大量数据。 - **数据处理过程**: - **读取数据**:在Spark中,数据被转换为RDD对象。 - **分析数据**:通过对RDD应用...

    Spark技术内幕 深入解析Spark内核架构设计与实现原理 高清 完整书签

    Spark的核心特性,如弹性分布式数据集(Resilient Distributed Datasets, RDD)、数据并行处理模型以及对批处理、交互式查询(Spark SQL)、流处理(Spark Streaming)和机器学习(MLlib)等应用场景的支持。...

    Apache Spark 2.0.2 中文文档

    - **弹性分布式数据集 (RDD) 概念**:解释 RDD 的定义、特点及其操作方式,包括转换操作和行动操作。 - **并行集合**:介绍如何使用 Spark 创建并行化的集合。 - **外部数据集**:讲解如何读取和写入各种外部数据...

    Spark github源码 例子很有价值

    "Spark github源码 例子很有价值"这个标题表明,通过分析这些源码,我们可以学习到Spark如何实现其核心功能,如弹性分布式数据集(RDD)、DataFrame、Dataset以及Spark SQL等。 描述中提到"github无法下载的可以直接...

    《Spark编程基础及项目实践》试卷及答案2套.pdf

    2. **Spark工作机制**:Spark通过RDD(弹性分布式数据集)进行数据处理,RDD是不可变的数据分区集合。工作流程包括作业提交、任务调度、数据分发和结果收集。Spark利用内存计算提高性能,通过Stage划分任务,减少...

    Spark V3.0 概述.pdf

    Spark提供了一个名为弹性分布式数据集(Resilient Distributed Datasets,简称RDD)的计算模型,与Hadoop的MapReduce相比,RDD支持更快的数据迭代,适用于复杂的算法计算,包括机器学习和图形计算。 在选择Spark...

    spark1.4的本地模式编程练习(2)附加代码

    2. **tutorial**: 教程文件可能详细解释了Spark的主要组件,比如RDD(弹性分布式数据集)、DataFrame和DataSet。RDD是Spark的核心抽象,它是不可变的、分区的数据集合。DataFrame是Spark SQL中的结构化数据处理模型...

    spark学习资料

    本资料来源于厦门大学林子雨博士的课程,全面涵盖了Spark的核心概念和技术应用,旨在帮助学习者深入理解和掌握Spark的相关知识。 一、大数据技术概述(Chapter1) 在大数据技术概述部分,林子雨博士首先阐述了...

    基于Spark的行为日志分析系统.zip

    Spark的核心是弹性分布式数据集(Resilient Distributed Datasets, RDD),它是一种可以并行操作的数据结构。RDD具有容错性,能够高效地在集群中进行计算。此外,Spark提供了DataFrame和DataSet等高级API,使得数据...

    spark搜狗日志数据分析实战源码(搜索结果和点击排名都是第一)

    在源码中,我们可能看到`SparkContext`和`RDD`(弹性分布式数据集)的使用,这些都是Spark并行计算的基础。通过设置合适的分区策略,可以优化数据的分布和计算效率。 在实际运行过程中,我们还需要关注性能调优,...

    Spark大数据处理:技术、应用与性能优化 (大数据技术丛书).pdf

    1. **Spark核心概念**:Spark的核心概念包括RDD(弹性分布式数据集)、DataFrame和Dataset。RDD是Spark的基础,提供了容错性和并行计算的能力;DataFrame和Dataset是基于Spark SQL的抽象,提供更高级的数据操作和...

    Spark大数据处理技术PDF 高清带目录完整版 夏俊鸾黄洁程浩等

    2. **Spark架构**:深入解析Spark的弹性分布式数据集(Resilient Distributed Datasets, RDD)概念,解释Spark的核心组件,如Driver、Executor、Master和Worker节点的角色与交互。 3. **Spark编程模型**:讲解Scala...

    大数据spark3.0入门到精通教程[视频课程].txt打包整理.zip

    2. **Spark架构**:深入理解Spark的RDD(弹性分布式数据集)模型,介绍DAG(有向无环图)执行模型,以及Spark的内存管理和容错机制。 3. **Spark Shell和Spark SQL**:通过Spark Shell实践交互式数据分析,学习...

    Spark案例源码和数据集.rar

    Spark的核心是弹性分布式数据集(Resilient Distributed Dataset, RDD),RDD是不可变的、分区的数据集合,具备容错性。Spark的工作模式主要基于DAG(有向无环图),通过Stage划分任务,优化执行效率。 3. **Spark...

Global site tag (gtag.js) - Google Analytics