spark 源码 ---1-SparkContext-初始化

本文详细介绍了SparkContext在2.2版本的初始化过程,特别是driver的初始化,包括SparkConf设置、SparkContext的创建以及SparkSession的使用。文章还探讨了Spark的远程通信机制,涉及NettyRpcEnv、RpcEndpointRef和RpcEndpoint的创建,以及通信框架的运作。此外,还解释了不同模式下SchedulerBackend和TaskScheduler的创建,如LocalSchedulerBackend和StandaloneSchedulerBackend等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SparkContext -- v 2.2

  • Spark的对外接口,代表了与spark 集群交互的连接,负责向调用这提供Spark的各种功能
  • 主要功能:
    • 在集群上,创建RDD,累加器,广播变量等
  • driver 和 executor都会创建 sparkContext

 

初始化过程 -- driver

  • 前置条件SparkConf设置:

    • spark.master 必须设置
      • 本地模式为 local[*]
      • 集群模式为 master地址,如:spark://192.168.0.147:7077
  • 初始化或者从缓存获取SparkContext :

    • SparkContext##getOrCreate(config: SparkConf)
  • 程序入口点

    • new SparkContext(config) <== v 2.0.0以前
    • SparkSession.builder.appName("Simple Application").getOrCreate() <== v 2.0.0 开始推荐
      • 提供了一个统一的切入点来使用Spark的各项功能
      • SparkConf、SparkContext和SQLContext都已经被封装在SparkSession当中,简化操作
        • 创建Dataset和Dataframe
        • 读取各种数据(json,jdbc)
        • 使用SparkSQL
        • 存储/读取Hive表
  • 重要组件初始化并启动

    • SparkUI

      • 客户端webui,默认端口4040
    • schedulerBackend [后台线程]:管理系统,与master,worker通信,决定如何获取资源,配合TaskSchedulerImpl运行task

      • 具体实现类:
        • local模式:
          • LocalSchedulerBackend
        • spark standalone模式:
          • StandaloneSchedulerBackend
        • 其他模式,通过外部加载方式动态调用:
          • 加载META-INF.services文件中的配置的ExternalClusterManager实现类
          • 实例化类,并调用canCreate方法匹配url,匹配成功的通过该Manager创建对应的schedualBackend,与taskScheduler
          • yarn模式(源码位置:resource-managers/yarn):
            • 在resources的META-INF.services文件中配置为:org.apache.spark.scheduler.cluster.YarnClusterManager
            • YarnClusterManager#canCreate实现为判断masterURL == "yarn"
            • TaskScheduler创建:YarnClusterManager#createTaskScheduler
              • cluster模式:YarnClusterScheduler
              • client模式:YarnScheduler
            • SchedulerBackend创建:YarnClusterManager#createSchedulerBackend
              • cluster模式:YarnClusterSchedulerBackend
              • client模式:YarnClientSchedulerBackend
      • 意图:不同集群资源获取方式不一样,相对于不同的集群提供不同的策略实现
      • 接口方法
        • reviveOffers,找到合适work的合适的executor资源给task运行
      • 在standalone模式下,StandaloneSchedulerBackend负责集群资源的获取和调度。继承自CoarseGrainedSchedulerBackend。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值