本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- zysnba
- xiangjie88
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- zw7534313
- qepwqnp
- 解宜然
- 龙儿筝
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- arpenker
- tanling8334
- kaizi1992
- gaojingsong
- xpenxpen
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- zhanjia
- ajinn
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- kingwell.leng
- mwhgJava
- lich0079
最新文章列表
Spark源码系列(六)Shuffle的过程解析
Spark大会上,所有的演讲嘉宾都认为shuffle是最影响性能的地方,但是又无可奈何。之前去百度面试hadoop的时候,也被问到了这个问题,直接回答了不知道。
这篇文章主要是沿着下面几个问题来开展:
1、shuffle过程的划分?
2、shuffle的中间结果如何存储?
3、shuffle的数据如何拉取过来?
Shuffle过程的划分
Spark的操作模型是基于RDD的,当调用RD ...
Spark源码系列(五)分布式缓存
这一章想讲一下Spark的缓存是如何实现的。这个persist方法是在RDD里面的,所以我们直接打开RDD这个类。
def persist(newLevel: StorageLevel): this.type = { // StorageLevel不能随意更改 if (storageLevel != StorageLevel.NONE && newLevel != ...
Spark源码系列(四)图解作业生命周期
这一章我们探索了Spark作业的运行过程,但是没把整个过程描绘出来,好,跟着我走吧,let you know!
我们先回顾一下这个图,Driver Program是我们写的那个程序,它的核心是SparkContext,回想一下,从api的使用角度,RDD都必须通过它来获得。
下面讲一讲它所不为认知的一面,它和其它组件是如何交互的。
Driver向Master注册Application过 ...
Spark源码系列(三)作业运行过程
作业执行
上一章讲了RDD的转换,但是没讲作业的运行,它和Driver Program的关系是啥,和RDD的关系是啥?
官方给的例子里面,一执行collect方法就能出结果,那我们就从collect开始看吧,进入RDD,找到collect方法。
def collect(): Array[T] = {
val results = sc.runJob(this, (iter: ...
Spark源码系列(一)spark-submit提交作业过程
前言
折腾了很久,终于开始学习Spark的源码了,第一篇我打算讲一下Spark作业的提交过程。
这个是Spark的App运行图,它通过一个Driver来和集群通信,集群负责作业的分配。今天我要讲的是如何创建这个Driver Program的过程。
作业提交方法以及参数
我们先看一下用Spark Submit提交的方法吧,下面是从官方上面摘抄的内容。
详细探究Spark的shuffle实现
Shuffle
Shuffle是MapReduce框架中的一个特定的phase,介于Map phase和Reduce phase之间,当Map的输出结果要被Reduce使用时,输出结果需要按key哈希,并且分发到每 ...
Spark源码分析之-Storage模块
Storage模块整体架构
Storage模块主要分为两层:
通信层:storage模块采用的是master-slave结构来实现通信层,master和slave之间传输控制信息、状态信息,这些都是通过通信层来实现的。
存储层:storage模块需要把数据存储到disk或是memory上面,有可能还需replicate到远端,这都是由存储层来实现和提供相应接口。
而其他模块若要和st ...
spark eclipse写wordcount
安装spark,见上文
http://blackproof.iteye.com/blog/2182393
配置window开发环境
window安装scala
下载scala http://www.scala-lang.org/files/archive/scala-2.10.4.msi
安装即可
window配置eclipse
下载eclipse
http:// ...
Spark源码分析之-deploy模块
Deploy模块整体架构
deploy模块主要包含3个子模块:master, worker, client。他们继承于Actor,通过actor实现互相之间的通信。
Master:master的主要功能是接收worker的注册并管理所有的worker,接收client提交的application,(FIFO)调度等待的application并向worker提交。
Worker:wor ...
Spark源码分析之-scheduler模块
Background
Spark在资源管理和调度方式上采用了类似于Hadoop YARN的方式,最上层是资源调度器,它负责分配资源和调度注册到Spark中的所有应用,Spark选用Mesos或是YARN等作为其资源调度框架。在每一个应用内部,Spark又实现了任务调度器,负责任务的调度和协调,类似于MapReduce。本质上,外层的资源调度和内层的任务调度相互独立,各司其职。本文对于Spark ...
Spark Core源码分析: Spark任务模型
概述
一个Spark的Job分为多个stage,最后一个stage会包括一个或多个ResultTask,前面的stages会包括一个或多个ShuffleMapTasks。
ResultTask执行并将结果返回给driver application。
ShuffleMapTask将task的output根据task的partition分离到多个buckets里。一个ShuffleMap ...
Spark Core源码分析: Spark任务执行模型
DAGScheduler
面向stage的调度层,为job生成以stage组成的DAG,提交TaskSet给TaskScheduler执行。
每一个Stage内,都是独立的tasks,他们共同执行同一个compute function,享有相同的shuffledependencies。DAG在切分stage的时候是依照出现shuffle为界限的。
Java代码
...
Spark Core源码分析: RDD基础
RDD
RDD初始参数:上下文和一组依赖
Java代码
abstract class RDD[T: ClassTag](
@transient private var sc: SparkContext,
@transient
spark出现GC overhead limit exceeded和java heap space
spark执行任务时出现java.lang.OutOfMemoryError: GC overhead limit exceeded和java.lang.OutOfMemoryError: java heap space
最直接的解决方式就是在spark-env.sh中将下面两个参数调节的尽量大
export SPARK_EXECUTOR_MEMORY=6000M export ...
spark内核揭秘-03-spark核心组件
spark核心组件如下所示:
在SparkContext初始化的时候,会初始化一系列内容:
查看内存使用情况:
创建和启动scheduler:
集群核心组件中的Block tracker是用于block和partition对应关系的管理。
集群核心组件中的shuffle tracker是用于记录shuffle操作的过程细节。
从集群中也可以 ...
Spark集群的安装与部署
一,安装Scala
下载 :http://www.scala-lang.org/download/
配置环境变量的方式同Java,为了方便全部写在一起放入/etc/profile.d目录
hadoop.sh
#set Java Enviromen ...
spark架构设计&编程模型 02
启动spark-shell:
简单的RDD:
上述代码中使用的sc,这是Spark-Shell帮助我们自动生成的SparkContext的实例:
我们把生成的RDD的每个元素都乘以3:
上述的操作都是transformations我们需要触发一个action才能执行: