Spark深入第一步DAGScheduler
来源:互联网 发布:什么是网络存储 编辑:程序博客网 时间:2024/05/21 00:56
在Spark集群上运行wordcount程序
spark-shell --master spark://s600:7077
def textFile(
path: String,
minPartitions: Int = defaultMinPartitions): RDD[String] = withScope {
assertNotStopped()
hadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text],
minPartitions).map(pair => pair._2.toString).setName(path)
}
SparkConf类的作用:
设置Spark环境的配置,使用build模式,返回对象自身;
SparkContext
AtomicBoolean使用原子类型保证线程安全;
assertNotStopped(); //断定系统当前没有关闭;
SparkContext对象构建过程:
spark.driver.allowMultipleContexts:允许多个Spark上下文默认是false;
val listenerBus = new LiveListenerBus(this);//创建一个Spark事件的监听总线
val executorEnvs = HashMap[String, String]();//将环境变量存储在HashMap结构中传给Executor
val sparkUser = Utils.getCurrentUserName();
_conf.contains("spark.master");//是否设置master
_conf.contains("spark.app.name");//是否设置App的名字
判断Master是否是yarn节点;
SparkContext的textFile(path: String)方法说明:
hadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text],
minPartitions).map(pair => pair._2.toString).setName(path)
hadoopFile()参数说明;
path:文件路径
InputFormatClass:输入格式类
keyClass:
valueClass:
minPartitions:最小分区数目
DAGScheduler:有向无环图调度器
为每个作业计算阶段有向无环图,DAGScheduler以来TaskScheduler类;
在DAGScheduler中有几个关键概念:
Jobs:由ActiveJob类实现,在DAGScheduler中运行的job分为result job和map-stage job;
提交给调度器的顶层工作项
Stages:任务集合,由Stage类具体实现,Stages分为ResultStage和ShuffleMapStage;
如果Jobs重用相同的RDDs,则它们之间可以共享同一个Stages;
Task:
Cache tracking: 避免重复计算,
Preferred Locations:DAGScheduler为每个Stage中task计算所在运行的位置基于RDDs
Cleanup:清理所有数据结构在依赖这些数据结构的running jobs结束;
TaskScheduler是底层的任务调度接口,由TaskSchedulerImpl实现;针对单独SparkContext进行任务调度;
DAGScheduler为每个Stages传送任务集给schedulers去调度。schedulers负责将任务传送给集群,并运行
和错误重试;最后结果收集并返回events给DAGScheduler
spark-shell --master spark://s600:7077
def textFile(
path: String,
minPartitions: Int = defaultMinPartitions): RDD[String] = withScope {
assertNotStopped()
hadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text],
minPartitions).map(pair => pair._2.toString).setName(path)
}
SparkConf类的作用:
设置Spark环境的配置,使用build模式,返回对象自身;
SparkContext
AtomicBoolean使用原子类型保证线程安全;
assertNotStopped(); //断定系统当前没有关闭;
SparkContext对象构建过程:
spark.driver.allowMultipleContexts:允许多个Spark上下文默认是false;
val listenerBus = new LiveListenerBus(this);//创建一个Spark事件的监听总线
val executorEnvs = HashMap[String, String]();//将环境变量存储在HashMap结构中传给Executor
val sparkUser = Utils.getCurrentUserName();
_conf.contains("spark.master");//是否设置master
_conf.contains("spark.app.name");//是否设置App的名字
判断Master是否是yarn节点;
SparkContext的textFile(path: String)方法说明:
hadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text],
minPartitions).map(pair => pair._2.toString).setName(path)
hadoopFile()参数说明;
path:文件路径
InputFormatClass:输入格式类
keyClass:
valueClass:
minPartitions:最小分区数目
DAGScheduler:有向无环图调度器
为每个作业计算阶段有向无环图,DAGScheduler以来TaskScheduler类;
在DAGScheduler中有几个关键概念:
Jobs:由ActiveJob类实现,在DAGScheduler中运行的job分为result job和map-stage job;
提交给调度器的顶层工作项
Stages:任务集合,由Stage类具体实现,Stages分为ResultStage和ShuffleMapStage;
如果Jobs重用相同的RDDs,则它们之间可以共享同一个Stages;
Task:
Cache tracking: 避免重复计算,
Preferred Locations:DAGScheduler为每个Stage中task计算所在运行的位置基于RDDs
Cleanup:清理所有数据结构在依赖这些数据结构的running jobs结束;
TaskScheduler是底层的任务调度接口,由TaskSchedulerImpl实现;针对单独SparkContext进行任务调度;
DAGScheduler为每个Stages传送任务集给schedulers去调度。schedulers负责将任务传送给集群,并运行
和错误重试;最后结果收集并返回events给DAGScheduler
0 0
- Spark深入第一步DAGScheduler
- 深入Spark内核:任务调度(2)-DAGScheduler
- spark dagscheduler
- spark深入理解之DAGScheduler<一>提交任务
- 【Spark】DAGScheduler源码浅析
- Spark分析之DAGScheduler
- spark 2.1 DAGScheduler.handleTaskCompletion
- Spark源码阅读笔记:DAGScheduler
- 【Spark】DAGScheduler源码浅析2
- Spark的TaskScheduler和DagScheduler
- Spark TaskScheduler和DagScheduler介绍
- Spark的TaskScheduler和DagScheduler
- Spark的TaskScheduler和DagScheduler
- DAGScheduler
- Spark Core Runtime分析: DAGScheduler, TaskScheduler, SchedulerBackend
- [Spark源码剖析] DAGScheduler划分stage
- [Spark源码剖析] DAGScheduler提交stage
- Spark DAGScheduler 功能及源码解析
- 蓝桥杯心得
- 配置maven环境和创建第一个maven项目
- 微信小程序输入框大全
- 九数组分数
- 2017寒假练习赛总结(实时更新)
- Spark深入第一步DAGScheduler
- 深度搜索【基本解题方法】【总结】
- hdu 5210 Delete
- windows sftp客户端与树莓之间通过ssh互传文件
- 欢迎使用CSDN-markdown编辑器
- C语言-----开发工具的使用shell
- 7.5.5
- 从Android studio开始--使用技巧
- CSS3--弹性盒子(Flex Box)