上篇文章讲到DAGScheduler会把job划分为多个Stage,每个Stage中都会创建一批Task,然后把Task封装为TaskSet提交到TaskScheduler。
这里我们来一起看下TaskScheduler是如何把Task分配到应用程序的Executor上去执行。
重点是这里的task分配算法。
如下图是DagScheduler中把TaskSe……继续阅读 »
wangting
5个月前 (07-13) 82浏览
1个赞
DAGScheduler的主要作用有2个:
一、把job划分成多个Stage(Stage内部并行运行,整个作业按照Stage的顺序依次执行)
二、提交任务
以下分别介绍下DAGScheduler是如何做这2件事情的,然后再跟源码看下DAGScheduler的实现。
一、如何把Job划分成多个Stage
1) 回顾下宽依赖和窄依赖
窄依赖:父RDD的每个分……继续阅读 »
wangting
6个月前 (06-24) 100浏览
1个赞
Master作为Spark Standalone模式中的核心,如果Master出现异常,则整个集群的运行情况和资源都无法进行管理,整个集群将处于无法工作的状态。
Spark在设计的时候考虑到了这种情况,Master可以起一个或者多个Standby Master,当Master出现异常的时候,Standy Master 将根据一定规则确定一个接管Master。……继续阅读 »
wangting
6个月前 (06-14) 89浏览
0个赞
SparkContext是整个spark程序通往集群的唯一通道,他是程序的起点,也是程序的终点。
我们的每一个spark个程序都需要先创建SparkContext,接着调用SparkContext的方法, 比如说 sc.textFile(filepath),程序最后也会调用sc.stop()来退出。
让我们来一起看下SparkContext里面到底是如何实现……继续阅读 »
wangting
6个月前 (06-07) 139浏览
1个赞
之前在 大话Spark(2)里讲过Spark Yarn-Client的运行模式,有同学反馈与Cluster模式没有对比, 这里我重新整理了三张图分别看下Standalone,Yarn-Client 和 Yarn-Cluster的运行流程。
1、独立(Standalone)运行模式

独立运行模式是Spark自身实现的资源调度框架,由客户端、Master节点……继续阅读 »
wangting
6个月前 (06-05) 123浏览
0个赞
Shuffle本意是 混洗, 洗牌的意思, 在MapReduce过程中需要各节点上同一类数据汇集到某一节点进行计算,把这些分布在不同节点的数据按照一定的规则聚集到一起的过程成为Shuffle.
在Hadoop的MapReduce框架中, Shuffle是连接Map和Reduce之间的桥梁, Map的数据要用到Reduce中必须经过Shuffle这个环节. 由……继续阅读 »
wangting
7个月前 (05-25) 1034浏览
0个赞
本文以WordCount为例, 画图说明spark程序的执行过程
WordCount就是统计一段数据中每个单词出现的次数,
例如hello spark hello you 这段文本中hello出现2次, spark出现1次, you出现1次.
先上完整代码:
object WordCount {
def main(args: Array[String])……继续阅读 »
wangting
7个月前 (05-24) 332浏览
0个赞
Spark On Yarn 有两种运行模式:
Yarn – Cluster
Yarn – Client
他们的主要区别是:
Cluster: Spark的Driver在App Master主进程内运行, 该进程由集群上的YARN管理, 客户端可以在启动App Master后退出.
Client: Driver在提交作业的Clien……继续阅读 »
wangting
7个月前 (05-21) 1783浏览
0个赞
说到Spark就不得不提MapReduce/Hadoop, 当前越来越多的公司已经把大数据计算引擎从MapReduce升级到了Spark. 至于原因当然是MapReduce的一些局限性了, 我们一起先来看下Mapreduce的局限性和Spark如何做的改进.
Spark概述
MapReduce局限性
1 仅支持Map和Reduce两种操作
2 处理效率极低
……继续阅读 »
wangting
7个月前 (05-18) 260浏览
0个赞