Spark
文章平均质量分 75
AngelaPotato
不想输,就别懒!
展开
-
spark源码分析九(SparkEnv shuffleManager)
SparkEnv源码版本2.4.7shufflemanager实例是SortShuffleManagerspark数据shuffle读写是通过 SparkEnv.get.shuffleManager控制完成的shuffleRdd的compute是通过SparkEnv.get.shuffleManager.getReader而shuffleMaptask的write也是通过SparkEnv.get.shuffleManager.getWritershufflerdd->getDependen原创 2020-12-16 17:01:43 · 321 阅读 · 0 评论 -
spark源码分析八(SparkEnv BlockManager)
SparkEnv源码版本2.4.7SparkContext有一核心属性_env即SparkEnv,持有所有spark运行实例的环境对象,序列化、RPCEnv、块管理、MapOutputTracker(shuffle输出相关的记录)等等首先看看其基本属性class SparkEnv ( val executorId: String, private[spark] val rpcEnv: RpcEnv, val serializer: Serializer, val cl原创 2020-12-14 12:48:12 · 255 阅读 · 0 评论 -
spark源码分析七(SparkContext - runJob)
SparkContext源码版本2.4.7上一篇分析完Executor的注册启动流程,接下来看rdd.action[foreach,collect,save,…]-> sc.runJob(rdd,iter=>f)最终调用的的SparkContext的DAGScheduler的runJobrunJob->submitJob-> eventProcessLoop.post(JobSubmitted)->eventQueueeventQueue->doOnRecei原创 2020-12-07 21:45:03 · 302 阅读 · 0 评论 -
spark源码分析六(SparkContext - Executor)
SparkContext源码版本2.4.7书接上回Master通过scheule水平划分完Executor资源后,执行launchExecutor操作,通过wokerEndpoint引用向worker发送LaunchExecutor指令,顺序执行向driver发送 ExecutorAdded 消息 private def launchExecutor(worker: WorkerInfo, exec: ExecutorDesc): Unit = { logInfo("Launching原创 2020-12-01 17:30:31 · 195 阅读 · 0 评论 -
spark源码分析五(SparkContext一TaskSchedulerImpl))
SparkContext源码版本2.4.7首先我们要知道当RDD真正遇到action算子时,任务才会被触发. /** * Applies a function f to all elements of this RDD. */ def foreach(f: T => Unit): Unit = withScope { val cleanF = sc.clean(f) sc.runJob(this, (iter: Iterator[T]) => iter.f原创 2020-11-27 21:41:33 · 305 阅读 · 0 评论 -
spark源码分析四(Driver启动流程)
spark-submit源码版本2.4.7spark-submitexec "${SPARK_HOME}"/bin/spark-class org.apache.spark.deploy.SparkSubmit "$@"主类:org.apache.spark.deploy.SparkSubmitspark-class 会启动 Moudle->launcher org.apache.spark.launcher.Main的jvm进程,构建一些JVM相关启动环境、参数从main方法跟踪发原创 2020-11-25 20:38:44 · 453 阅读 · 0 评论 -
spark源码分析三(Worker)
Worker源码版本2.4.7start-slave.sh启动主类:org.apache.spark.deploy.worker.Worker查看mainstartRpcEnvAndEndpoint 启动rpcEnv基础通信,与master类似,最终异步调用OnStart def main(argStrings: Array[String]) { Thread.setDefaultUncaughtExceptionHandler(new SparkUncaughtExceptionH原创 2020-11-24 21:13:55 · 187 阅读 · 2 评论 -
spark源码分析二(NettyRpcEnv)
NettyRpcEnv源码版本2.4.7需要关注的是env里面几个关键的属性和方法如图:1 dispatcher 分发消息分发程序,负责将RPC消息路由到适当的端点dispatcher的成员内部类: EndpointData实体 private class EndpointData( val name: String, val endpoint: RpcEndpoint, val ref: NettyRpcEndpointRef) { val in原创 2020-11-24 12:16:24 · 261 阅读 · 0 评论 -
spark源码分析一(Master)
Master源码版本2.4.7start-master.sh启动主类:org.apache.spark.deploy.master.MasterMaster是一个伴生类首先找到main方法def main(argStrings: Array[String]) { Thread.setDefaultUncaughtExceptionHandler(new SparkUncaughtExceptionHandler( exitOnUncaughtException = fal原创 2020-11-23 21:33:44 · 175 阅读 · 0 评论 -
Spark的三大误解
Spark三大误解原创 2017-04-14 10:14:57 · 1851 阅读 · 0 评论