ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2、Spark Core职责之初始化(1)——SparkContext

2020-03-24 13:03:37  阅读:259  来源: 互联网

标签:SparkContext Core TaskScheduler RDD Executor Spark Stage


SparkContext(Spark上下文)

/**
 * Main entry point for Spark functionality. A SparkContext represents the connection to a Spark
 * cluster, and can be used to create RDDs, accumulators and broadcast variables on that cluster.
 *
 * @note Only one `SparkContext` should be active per JVM. You must `stop()` the
 *   active `SparkContext` before creating a new one.
 * @param config a Spark Config object describing the application configuration. Any settings in
 *   this config overrides the default configs as well as system properties.
 */
class SparkContext(config: SparkConf) extends Logging {

介绍:SparkContext是Spark程序的主入口点,一个SparkContext实例就代表一个到Spark集群的连接,即可被用来在集群上创建RDDs、累加器、广播变量。注意每个JVM有且只能有一个处于活跃状态的SparkContext,换句话说,在一个JVM当中,如果要创建一个新的SparkContext,必须先通过stop()函数停掉处于活跃状态的SparkContext。

 

 

 此图是Spark官网的图,可以看出,SparkContext处于Driver端,所有与集群和各节点的操作都要经过SparkContext。那么SparkContext究竟运行哪些服务:

名称 说明
SparkConf
Spark配置类,配置以键值对形式存储,封装了一个ConcurrentHashMap类实例settings用于存储Spark的配置信息。
SparkEnv
SparkContext中非常重要的类,它维护着Spark的执行环境,所有的线程都可以通过SparkContext访问到同一个SparkEnv对象。
DAGScheduler
 为高级的、基于Stage的调度器, 负责创建 Job,将 DAG 中的 RDD 划分到不同的 Stage,并将Stage作为Tasksets提交给底层调度器TaskScheduler执行。
TaskScheduler
 为Spark的任务调度器,Spark通过他提交任务并且请求集群调度任务。因其调度的 Task 由 DAGScheduler 创建,所以 DAGScheduler 是 TaskScheduler 的前置调度。
RpcEndpointRef
 RpcEndpointRef是客户端发起请求的入口,它可以从RpcEnv中获取,并且聪明的做本地调用或者RPC。
Heartbeater
 heartbeater是一个后台周期性的执行器。周期性的调用heartbeatTask这个任务。
HeartbeatReceiver
 心跳接收器,所有 Executor 都会向HeartbeatReceiver 发送心跳,当其接收到 Executor 的心跳信息后,首先更新 Executor 的最后可见时间,然后将此信息交给 TaskScheduler 进一步处理。
LiveListenerBus
 SparkContext 中的事件总线,可以接收各种使用方的事件,并且异步传递Spark事件监听与SparkListeners监听器的注册。
ExecutorAllocationManager
 Executor 动态分配管理器,根据负载动态的分配与删除Executor,可通过其设置动态分配最小Executor、最大Executor、初始Executor数量等配置。
SparkStatusTracker
 低级别的状态报告API,只能提供非常脆弱的一致性机制,对Job(作业)、Stage(阶段)的状态进行监控。
HadoopConfiguration
 Spark默认使用HDFS来作为分布式文件系统,用于获取Hadoop配置信息。
ContextCleaner
 上下文清理器,为RDD、shuffle、broadcast状态的异步清理器,清理超出应用范围的RDD、ShuffleDependency、Broadcast对象。
SparkUI
 为Spark监控Web平台提供了Spark环境、任务的整个生命周期的监控。

以上的对象为SparkContext使用到的主要对象,可以看到SparkContext包含了Spark程序用到的几乎所有核心对象可见SparkContext的重要性;创建SparkContext时会添加一个钩子到ShutdownHookManager中用于在Spark程序关闭时对上述对象进行清理,在创建RDD等操作也会判断SparkContext是否已stop;通常情况下一个Driver只会有一个SparkContext实例,但可通过spark.driver.allowMultipleContexts配置来允许driver中存在多个SparkContext实例。

          参考文档: 1、http://spark.apache.org/docs/latest/cluster-overview.html 2、https://www.cnblogs.com/xia520pi/p/8609602.html

标签:SparkContext,Core,TaskScheduler,RDD,Executor,Spark,Stage
来源: https://www.cnblogs.com/renyang/p/12558321.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有