当前位置 博文首页 > Shockang的博客:SparkEnv 是什么?有什么作用?
本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系
Spark 对任务的计算都依托于 Executor 的能カ,所有的 Executor 都有自己的 Spark 执行环境 SparkEnv 。
有了 SparkEnv ,就可以将数据存储在存储体系中,就能利用计算引对计算任务进行处理,就可以在节点间进行通信等。
SparkEnv 还提供了多种多样的内部组件,实现不同的功能。
SparkEnv 是一个很重要的组件,虽然在创建 SparkContext 的时候也涉及它(只是因为 local 模式的需要),但是它与 Executor 的关系则更为紧密。
/**
* 开发者 API(指面向开发者的低层次不稳定的 API)
*
* 保存正在运行的Spark实例( master 或者 worker )的所有运行时环境对象,
*
* 包括序列化器、RpcEnv、块管理器、map 输出跟踪器等。
*
* 当前Spark代码通过全局变量查找SparkEnv,因此所有线程都可以访问相同的SparkEnv。
*
* 可以通过 SparkEnv.get 访问它(例如,在创建SparkContext之后)。
*
* @param executorId executor 的 ID
* @param rpcEnv RPC 环境
* @param serializer 序列化器
* @param closureSerializer 闭包序列化器
* @param serializerManager 序列化器管理者
* @param mapOutputTracker map 输出的追踪器,Shuffle 时会用到
* @param shuffleManager Shuffle 管理者
* @param broadcastManager 广播变量管理者
* @param blockManager 块管理者
* @param securityManager 安全管理者
* @param metricsSystem 度量系统
* @param memoryManager 内存管理者
* @param outputCommitCoordinator 输出提交协调者
* @param conf Spark 的配置对象
*/
@DeveloperApi
class SparkEnv (
val executorId: String,
private[spark] val rpcEnv: RpcEnv,
val serializer: Serializer,
val closureSerializer: Serializer,
val serializerManager: SerializerManager,
val mapOutputTracker: MapOutputTracker,
val shuffleManager: ShuffleManager,
val broadcastManager: BroadcastManager,
val blockManager: BlockManager,
val securityManager: SecurityManager,
val metricsSystem: MetricsSystem,
val memoryManager: MemoryManager,
val outputCommitCoordinator: OutputCommitCoordinator,
val conf: SparkConf) extends Logging
cs