`
bit1129
  • 浏览: 1051614 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Spark六十二】Spark数据本地性以及调试注意的问题

 
阅读更多

数据的本地性

数据本地性的意思就是尽量的避免数据在网络上的传输。Hadoop的MR之所以慢,频繁的读写HDFS是原因之一,为了解决这个问题,Spark将数据都放在了内存中(当然这是理想的情况,当内存不够用时数据仍然需要写到文件系统中)。
但是如果数据需要在网络上传输,也会导致大量的延时和开销,毕竟disk IO和network IO都是集群的昂贵资源。
数据本地性是尽量将计算移到数据所在的节点上进行。毕竟移动计算要比移动数据所占的网络资源要少得多。而且,由于Spark的延时调度机制,使得Spark可以在更大的程度上去做优化。比如,拥有数据的节点当前正被其他的task占用,那么这种情况是否需要将数据移动到其他的空闲节点呢?答案是不一定。因为如果预测当前节点结束当前任务的时间要比移动数据的时间还要少,那么调度会等待,直到当前节点可用。

文件系统本地性:计算任务最好在离数据最近的节点上,计算和数据最好在一台机器上
内存本地性:数据已经加载到内存中,那么,计算任务最好能够直接访问内存,即计算任务发生在内存所在的机器上

 

Spark程序调试注意的问题:

 

package spark.examples.shuffle

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

object SparkWordCountHashShuffle {
  def main(args: Array[String]) {
    System.setProperty("hadoop.home.dir", "E:\\devsoftware\\hadoop-2.5.2\\hadoop-2.5.2");
    val conf = new SparkConf()
    conf.setAppName("SparkWordCount")
//   conf.setMaster("local[3]")
    conf.setMaster("local") //不加[3]则给ResultTask添加断点时,会挂住断点3次,方便调试;加上,则只挂住一次
    conf.set("spark.shuffle.manager", "hash");
    val sc = new SparkContext(conf)
    val rdd = sc.textFile("file:///D:/word.in.3",4);
    val rdd1 = rdd.flatMap(_.split(" "))
    val rdd2 = rdd1.map((_, 1))
    val rdd3 = rdd2.reduceByKey(_ + _, 3);
    rdd3.saveAsTextFile("file:///D:/wordout" + System.currentTimeMillis());

    println(rdd3.toDebugString)
    sc.stop
  }
}

 

使用conf.setMaster("local[3]"),则ResultTask的runTask方法只会挂住一次,而使用conf.setMaster("local")则断点会挂住3次

分享到:
评论

相关推荐

    Spark 案例测试数据

    Spark 案例测试数据Spark 案例测试数据Spark 案例测试数据Spark 案例测试数据Spark 案例测试数据Spark 案例测试数据Spark 案例测试数据Spark 案例测试数据Spark 案例测试数据Spark 案例测试数据Spark 案例测试数据...

    Spark 快速大数据分析

    Spark 快速大数据分析Spark 快速大数据分析Spark 快速大数据分析Spark 快速大数据分析Spark 快速大数据分析Spark 快速大数据分析

    Spark快速数据处理

    本书系统讲解了Spark的应用方法,包括如下内容:第1章介绍如何在多种机器上安装Spark,以及如何配置一个Spark集群。第2章介绍如何在交互模式下运行第一个Spark作业。第3章介绍如何在Spark集群上构建一个生产级的脱机...

    sparkStreaming消费数据不丢失

    sparkStreaming消费数据不丢失,sparkStreaming消费数据不丢失

    Spark快速数据处理.pdf

    《Spark快速数据处理》系统讲解Spark的...如何创建和保存RDD(弹性分布式数据集),如何用Spark分布式处理数据,如何设置Shark,将Hive查询集成到你的Spark作业中来,如何测试Spark作业,以及如何提升Spark任务的性能。

    [中文]Spark快速数据处理

    Spark内存计算框架适合各种迭代算法和交互式数据分析,能够提升大数据处理的实时性和准确性,现已逐渐获得很多企业的支持,如阿里巴巴、百度、网易、英特尔等公司。 Spark快速数据处理系统讲解Spark的使用方法,包括...

    Spark SQL常见4种数据源详解

    Spark SQL的DataFrame接口支持多种数据源的操作。一个DataFrame可以进行RDDs方式的操作,也可以被注册为临时表。把DataFrame注册为临时表之后,就可以对该DataFrame执行SQL查询。 Spark SQL的默认数据源为Parquet...

    实验七:Spark初级编程实践

    1、实验环境: ...(1) 在spark-shell中读取Linux系统本地文件“/home/hadoop/test.txt”,然后统计出文件的行数; 图3 spark统计行数 (2) 在spark-shell中读取HDFS系统文件“/user/hadoop/test.txt”

    基于Spark的电影数据集分析

    该项目是大三下学期的课程设计,使用的数据集来自知名数据网站 Kaggle 的 tmdb-movie-metadata 电影数据集,以Python为编程语言,使用大数据框架Spark对数据进行了预处理,然后分别从多个方面对数据进行了分类和分析...

    spark项目代码以及数据

    spark项目代码以及数据 spark项目代码以及数据 spark项目代码以及数据

    基于Spark的零售交易数据分析

    该项目是大三下学期的课程设计,选取了共541909条数据,以Python为编程语言,使用大数据框架Spark对数据进行了预处理,然后分别从多个方面对数据进行了分类和分析,并对分析结果进行可视化。里面包含我的课程设计...

    Spark大数据处理

    第1章 Spark简介 1.1 Spark是什么 1.2 Spark生态系统BDAS 1.3 Spark架构 1.4 Spark分布式架构与单机多核架构的异同 1.5 Spark的企业级应用 1.5.1 Spark在Amazon中的应用 1.5.2 Spark在Yahoo!的应用 1.5.3 Spark在...

    基于spark的心脏病信息大数据分析源码+数据.zip

    基于spark的心脏病信息大数据分析源码+数据.zip基于spark的心脏病信息大数据分析源码+数据.zip基于spark的心脏病信息大数据分析源码+数据.zip基于spark的心脏病信息大数据分析源码+数据.zip基于spark的心脏病信息大...

    spark-集群与大数据处理

    spark——大型集群快速和通用数据处理 对与当前大数据的学习很有参考价值

    基于spark的大数据论文资料

    胡俊、基于Spark的大数据挖掘技术的研究与实现_李文栋、基于Spark的机器学习平台设计与实现_唐振坤、基于Spark的机器学习应用框架研究与实现_孙科、基于Spark的若干数据挖掘技术研究_宁永恒、基于Spark平台推荐系统...

    spark高级数据分析

    主要有用scala和spark进行数据分析、音乐推荐和Audioscrobbler数据集、用决策树算法预测森林植被、基于K均值聚类的网络流量异常检测、基于潜在语义分析算法分析维基百科、用GraphX分析伴生网络、纽约出租车轨迹的...

    Spark大型集群上的快速和通用数据处理架构

    与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 ...

    实训指导书_使用Spark SQL进行法律服务网站数据分析.zip

    实训指导书_使用Spark SQL进行法律服务网站数据分析.zip

Global site tag (gtag.js) - Google Analytics