spark
文章平均质量分 86
小江_xiaojiang
这个作者很懒,什么都没留下…
展开
-
共享变量(Broadcast Variable和Accumulator)
共享变量工作原理默认情况下,如果在一个算子的函数中使用到了某个外部的变量,那么这个变量的值会被拷贝到每个task中。此时每个task只能操作自己的那份变量副本。如果多个task想要共享某个变量,那么这种方式是做不到的。因此,Spark提供了两种共享变量,一种是Broadcast Variable(广播变量),另一种是Accumulator(累加变量)。Broadcast Variable会将使原创 2017-07-10 19:19:05 · 538 阅读 · 0 评论 -
创建RDD
进行Spark核心编程时,首先要做的第一件事,就是创建一个初始的RDD。该RDD中,通常就代表和包含了Spark应用程序的输入源数据。然后在创建了初始的RDD之后,才可以通过Spark Core提供的transformation算子,对该RDD进行转换,来获取其他的RDD。Spark Core提供了三种创建RDD的方式,包括:使用程序中的集合创建RDD;使用本地文件创建RDD;使用HDFS文件原创 2017-07-09 15:15:38 · 629 阅读 · 0 评论 -
常用action介绍
reducereduce:将RDD中的所有元素进行聚合操作。第一个和第二个元素聚合,值与第三个元素聚合,值与第四个元素聚合,以此类推。案例:10个数字进行累加java:// 有一个集合,里面有1到10,10个数字,现在要对10个数字进行累加 List numberList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); JavaR原创 2017-07-09 16:03:21 · 419 阅读 · 0 评论 -
RDD持久化原理
RDD持久化原理Spark非常重要的一个功能特性就是可以将RDD持久化在内存中。当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内存中,并且在之后对该RDD的反复使用中,直接使用内存缓存的partition。这样的话,对于针对一个RDD反复执行多个操作的场景,就只要对RDD计算一次即可,后面直接使用该RDD,而不需要反复计算多次该RDD。巧妙使用R原创 2017-07-09 16:37:29 · 649 阅读 · 0 评论 -
Spark性能优化:开发调优篇
1、前言 在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。在美团•大众点评,已经有很多同学在各种项目中尝试使用Spark。大多数同学(包括笔者在内),最初开始尝试使用Spark的原因很简单,主要就是为了让大数据计算转载 2017-09-22 15:10:28 · 262 阅读 · 0 评论 -
Spark内核架构剖析
先来章整个SparkContext的架构图:1.通过SparkContext的createTaskScheduler获取TaskSchedulerImpl和SparkDeploySchedulerBackendprivate[spark] var (schedulerBackend, taskScheduler) = SparkContext.cre原创 2017-09-05 11:53:37 · 504 阅读 · 0 评论 -
spark Shuffle过程分析
普通shuffle过程shuffle过程是spark运算的重要过程,也是spark调优的关键地方之一,在spark中的reduceByKey,groupByKey,sortByKey,countByKey,join,cogroup等操作时,都会触发shuffle过程。shuffle过程发生在shuffleMapTask与resultTask之间,当shuffleMapTask的输出数据先放到内原创 2017-09-22 14:52:44 · 526 阅读 · 0 评论 -
Spark性能优化:资源调优篇
在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪转载 2017-09-22 15:12:45 · 388 阅读 · 0 评论 -
Spark性能优化:数据倾斜调优
前言 继《Spark性能优化:开发调优篇》和《Spark性能优化:资源调优篇》讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为《Spark性能优化指南》的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题。1.数据倾斜调优调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此转载 2017-09-22 15:20:05 · 304 阅读 · 0 评论 -
Spark RDD 分区数详解
基础知识spark.default.parallelism:(默认的并发数)= 2当配置文件spark-default.conf中没有显示的配置,则按照如下规则取值:1、本地模式(不会启动executor,由SparkSubmit进程生成指定数量的线程数来并发): spark-shell spark.default.parallelism = 1 s原创 2017-10-10 14:05:23 · 12199 阅读 · 3 评论 -
常用transformation介绍
mapmap:将RDD中的每个元素传入自定义函数,获取一个新的元素,然后用新的元素组成新的RDD。案例:将集合中每一个元素都乘以2java:// 构造集合List numbers = Arrays.asList(1, 2, 3, 4, 5);// 并行化集合,创建初始RDDJavaRDD numberRDD = sc.parallelize(numbers);// 使用原创 2017-07-09 15:49:20 · 678 阅读 · 0 评论 -
操作RDD
transformation和action介绍Spark支持两种RDD操作:transformation和action。transformation操作会针对已有的RDD创建一个新的RDD;而action则主要是对RDD进行最后的操作,比如遍历、reduce、保存到文件等,并可以返回结果给Driver程序。例如,map就是一种transformation操作,它用于将已有RDD的每个元素传原创 2017-07-09 15:29:39 · 404 阅读 · 0 评论 -
Spark中宽依赖和窄依赖
Spark中RDD的高效与DAG图有着莫大的关系,在DAG调度中需要对计算过程划分stage,而划分依据就是RDD之间的依赖关系。针对不同的转换函数,RDD之间的依赖关系分类窄依赖(narrow dependency)和宽依赖(wide dependency, 也称 shuffle dependency)。窄依赖是指父RDD的每个分区只被子RDD的一个分区所使用,子RDD分区通常对应常数个原创 2017-07-12 18:55:49 · 609 阅读 · 0 评论 -
基于排序机制的wordcount程序
案例需求:对文本文件内的每个单词都统计出其出现的次数。按照每个单词出现次数的数量,降序排序。java代码:import java.util.Arrays;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.原创 2017-07-10 19:20:01 · 488 阅读 · 0 评论 -
Spark基本工作原理与RDD
参考地址:http://www.cnblogs.com/thinkpad/p/5107722.htmlSpark 是什么 Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用分布式并行计算框架。 Spark拥有hadoop MapReduce所具有的优点,但和MapReduce 的最大不同之处在于Spark是基于原创 2017-07-02 17:25:01 · 569 阅读 · 0 评论 -
wordcount程序
使用spark-shell开发wordcount程序1、登录master节点,进入spark-shell#bin/spark-shell --master spark://172.16.48.201:7077 --executor-memory 1024m --driver-memory 1024m --total-executor-cores 4executor-memory是slave原创 2017-07-02 17:45:57 · 446 阅读 · 0 评论 -
将java开发的wordcount程序部署到spark集群上运行
package cn.spark.study.core;import java.util.Arrays;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.apache.spa转载 2017-07-02 17:58:29 · 2182 阅读 · 0 评论 -
Spark架构原理
1、Spark运行架构1.1 术语定义Application:Spark Application的概念和Hadoop MapReduce中的类似,指的是用户编写的Spark应用程序,包含了一个Driver 功能的代码和分布在集群中多个节点上运行的Executor代码;Driver:Spark中的Driver即运行上述Application的main()函数并且创建SparkCont转载 2017-07-02 18:42:43 · 565 阅读 · 0 评论 -
Spark在不同集群中的运行架构
转载地址:http://www.cnblogs.com/shishanyuan/archive/2015/08/19/4721326.htmlSpark注重建立良好的生态系统,它不仅支持多种外部文件存储系统,提供了多种多样的集群运行模式。部署在单台机器上时,既可以用本地(Local)模式运行,也可以使用伪分布式模式来运行;当以分布式集群部署的时候,可以根据自己集群的实际情况选择Stan转载 2017-07-02 22:25:05 · 546 阅读 · 0 评论 -
Spark在不同集群中的运行演示
转载地址:http://www.cnblogs.com/shishanyuan/archive/2015/08/19/4721326.html在以下运行演示过程中需要启动Hadoop和Spark集群,其中Hadoop需要启动HDFS和YARN,启动过程可以参见第三节《Spark编程模型(上)--概念及Shell试验》。1 Standalone运行过程演示在Spark集群的节点中,4原创 2017-07-02 22:42:03 · 587 阅读 · 0 评论 -
高级编程之二次排序
需求:按照文件中的第一列排序。如果第一列相同,则按照第二列排序。输入样例:1 52 43 61 32 11 1输出样例:1 11 31 52 12 43 6java实现代码:(1)定义二次排序类package cn.spark.study.core;import java.io.Serializable;import scala.ma原创 2017-07-12 18:55:14 · 267 阅读 · 0 评论 -
高级编程之topn
案例:对每个班级内的学生成绩,取出前3名输入样例:class1 90class2 56class1 87class1 76class2 88class1 95class1 74class2 87class2 67class2 77输出样例:class: class1959087class: class2888777java代码实现:impor原创 2017-07-12 18:55:31 · 340 阅读 · 0 评论 -
Spark性能优化:shuffle调优
shuffle调优调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占到一小部转载 2017-09-22 15:21:30 · 395 阅读 · 0 评论