core
水中舟_luyl
这是我的qq:1294877059,希望能在spark的天地上越来越强。。。。
展开
-
spark-core_03: org.apache.spark.launcher.Main源码分析
承接上文“spark-core_02: spark-submit、spark-class脚本分析“launcher.Main主要作用是就是检测,注入spark-submit参数到spark环境中,然后返回SparkSubmit需要执行的参数,给spark-class脚本中的exec "${CMD[@]}"进行执行class Main { public static void main(Stri...原创 2018-03-14 17:48:25 · 1075 阅读 · 0 评论 -
spark-core_17:自定义RpcEnv模拟Master和Worker通信及RpcEnv、RpcEndpoint、RpcEndpointRef源码分析
RpcEnv底层就是Netty实现一、自定义RpcEnv模拟Master和Worker进行通信1、自定义的RpcEndPoint,需要实现RpcEndPoint//自定义的RPC实现ThreadSafeRpcEndpoint,说明它是线程安全的class TestMathEndpoint(override val rpcEnv: RpcEnv) extends ThreadSafeRpcEndpo...原创 2018-05-22 15:30:51 · 480 阅读 · 0 评论 -
spark-core_18:Akka分布式通信案例
Scala认为Java线程通过共享数据以及通过锁来维护共享数据的一致性是糟糕的做法,容易引起锁的争用,而且线程的上下文切换会带来不少开销,降低并发程序的性能,甚至会引入死锁的问题。Akka是Actor编程模型的高级类库,类似于JDK 1.5之后越来越丰富的并发工具包,简化了程序员并发编程的难度。Akka是一款提供了用于构建高并发的、分布式的、可伸缩的、基于Java虚拟机的消息驱动应用的工具集和运行...原创 2018-05-22 15:45:05 · 478 阅读 · 0 评论 -
spark-core_19:ActorSystem的初始化源码分析
1,在SparkEnv再创建时调用create(),里面调用初始ActorSystem注:ActorSystem在后面版本会被RpcEnv替换掉private def create( conf: SparkConf, executorId: String, hostname: String, port: Int, isDriver: Boolean, isLoc...原创 2018-05-22 15:52:58 · 346 阅读 · 0 评论 -
spark-core_20: MapOutputTrackerMaster、MapOutputTracker、MapOutputTrackerMasterEndpoint等源码分析
1,在SparkEnv.create()初始化了MapOutputTrackerMaster(记录ShuffleMapTask输出信息)val mapOutputTracker = if (isDriver) { /* MapOutputTrackerMaster属于driver,这里使用TimeStampedHashMap来跟踪 map的输出信息,也可以将旧信息进行清除 * 一、MapO...原创 2018-05-22 16:05:43 · 2524 阅读 · 0 评论 -
spark-core_21: SortShuffleManager的初始化源码分析
1,SparkEnv初始过时,通过反射的方式默认将SortShuffleManager实例化出来// Let the userspecify short names for shuffle managers//使用sort shuffle做为mapper和reducer网络传输val shortShuffleMgrNames = Map( "hash" -> "org.apache.spa...原创 2018-05-22 16:10:31 · 308 阅读 · 0 评论 -
spark-core_22: SparkDeploySchedulerBackend,TaskSchedulerImpl的初始化源码分析
1, 在sparkContext初始时会执行// Create and startthe scheduler,这个master是在sparkSubmit.Main方法得到:spark://luyl152:7077,luyl153:7077,luyl154:7077//如果集群管理器是standalone模式:该方法返回(SparkDeploySchedulerBackend,TaskSchedu...原创 2018-05-22 16:15:20 · 354 阅读 · 0 评论 -
spark-core_23: TaskSchedulerImpl.start()、SparkDeploySchedulerBackend.start()、AppClient.start()源码分析
1,在sparkContext初始化完createTaskScheduler()调用TaskSchedulerImpl.start()//在TaskSchedulerImpl在DAGScheduler的构造函数中设置DAGScheduler引用后启动TaskScheduler_taskScheduler.start()2,进入TaskSchedulerImpl.start()方法override ...原创 2018-05-22 16:24:06 · 335 阅读 · 0 评论 -
spark-core_24:注册RegisterApplication,schedule()分配worker的资源,启动CoarseGrainedExecutorBackend源码分析
基于上文(spark-core_23: TaskSchedulerImpl.start()、SparkDeploySchedulerBackend.start()、CoarseGrainedExecutorBackend.start()、AppClient.start()源码分析)11,AppClient初始化ClientEndpoint初始化时调用tryRegisterAllMasters,触发...原创 2018-05-22 16:36:13 · 355 阅读 · 0 评论 -
spark-core_25:Master通知Worker启动CoarseGrainedExecutorBackend进程及初始化源码分析
承接上文(spark-core_24:AppClient的ClientEndpoint注册RegisterApplication)上文中提到:master调用launchExecutor(){worker.endpoint.send(LaunchExecutor(masterUrl, exec.application.id, exec.id,exec.application.desc, ex...原创 2018-05-23 14:44:47 · 999 阅读 · 0 评论 -
spark-core_27: DAGScheduler的初始化源码分析
1,SparkContext在初始完成SparkDeploySchedulerBacked和TaskSchedulerImpl,就开始初始化DAGScheduler,并将TaskSchedulerImpl、MapOutputTrackerMaster、BlockManagerMaster,设置到它的成员上 * 1,DAGScheduler面向stage的高级调度层。 它计算每个Job的DAG(一...原创 2018-05-23 14:52:46 · 230 阅读 · 0 评论 -
spark-core_28:Executor初始化过程env.blockManager.initialize(conf.getAppId)- blockTransferService.init()分析
查看(spark-core_25:Master通知Worker启动CoarseGrainedExecutorBackend进程及CoarseGrainedExecutorBackend初始化源码分析)//sparkContext在初始化时也调用了_env.blockManager.initialize(_applicationId)执行的过程差不多 private[spark] class Blo...原创 2018-05-23 15:00:57 · 364 阅读 · 0 评论 -
spark-core_29:blockManager.initialize()=》NettyBlockTransferService.init()-NettyServer创建源码分析
上一节(spark-core_28:Executor初始化过程env.blockManager.initialize(conf.getAppId)- NettyBlockTransferService.init()源码分析)分析了a、NettyBlockRpcServer是用于打开的上传注册在BlockManager中的Block块b,TansportConf:会通过它成员:ConfigProvi...原创 2018-05-23 15:06:22 · 464 阅读 · 0 评论 -
spark-core_16:初始化Driver的SparkEnv
1,通过SparkContext初始化时调用createSparkEnv()==>然后调用SparkEnv.createDriverEnv()来初始化SparkEnv对象/** * Create a SparkEnv for the driver. * 该方法被SparkContext.createSparkEnv()方法进行调用 * numCores:如果master是local...原创 2018-05-22 15:24:18 · 450 阅读 · 0 评论 -
spark-core_15:sparkContext初始化源码分析
这幅图是网友提供的,非常感谢/** * Main entry point for Sparkfunctionality. A SparkContext represents the connection to a Spark cluster, andcan be used to create RDDs, accumulators and broadcast variables on thatclu...原创 2018-05-22 15:16:53 · 636 阅读 · 0 评论 -
spark-core_14:Worker源码分析2-Worker与Master通信
承接上文,在上文中Worker的onStart(){。。。。registerWithMaster() 。。。}将自己的信息注册到Master上private def registerWithMaster() { // onDisconnected may be triggered multiple times, so don't attempt registration // if the...原创 2018-03-27 16:30:54 · 262 阅读 · 0 评论 -
spark-core_04: org.apache.spark.deploy.SparkSubmit源码分析:
承接上文“org.apache.spark.launcher.Main源码分析“SparkSubmitArgumentsParser的父类就SparkSubmitOptionParser,在launcher.Main方法执行时用到OptionParser 它的父类也是SparkSubmitOptionParser。并且这个父类有一个方法parser。作用将spark-submit放进来的参数对应值...原创 2018-03-14 18:57:17 · 1309 阅读 · 0 评论 -
spark-core_05: $SPARK_HOME/sbin/start-all.sh、start-master.sh脚本分析:
一、这是$SPARK_HOME/sbin/start-all.sh脚本#!/usr/bin/envbash # Start all spark daemons. 后台启动所有spark节点,将master在这个节点中启动,worker节点是通过conf/slaver来决定的#Starts the master on this node.#Starts a worker on each node s...原创 2018-03-16 16:15:18 · 1034 阅读 · 0 评论 -
spark-core_06: $SPARK_HOME/sbin/spark-daemon.sh脚本分析
承接上面“spark-core_05: $SPARK_HOME/sbin/start-all.sh、start-master.sh脚本分析”#!/usr/bin/envbash #Runs a Spark command as a daemon. 将Spark命令作为守护进程运行。##Environment Variables # # SPARK_CONF_DIR Alternate c...原创 2018-03-16 16:26:09 · 922 阅读 · 0 评论 -
spark-core_07: $SPARK_HOME/sbin/start-slaves.sh脚本分析:
承接“spark-core_05: $SPARK_HOME/sbin/start-all.sh、start-master.sh脚本分析”,在spark-all.sh脚本中会调用start-slaves.sh来启Worker节点 #!/usr/bin/envbash#Starts a slave instance on each machine specified in the conf/slave...原创 2018-03-16 16:30:40 · 381 阅读 · 0 评论 -
spark-core_08: $SPARK_HOME/sbin/slaves.sh、start-slave.sh脚本分析
承接上面“spark-core_07: $SPARK_HOME/sbin/start-slaves.sh脚本分析”一、这是$SPARK_HOME/sbin/slaves.sh脚本;#!/usr/bin/envbash #Run a shell command on all slave hosts.#Environment Variables# SPARK_SLAVES File nami...原创 2018-03-16 16:42:17 · 843 阅读 · 0 评论 -
spark-core_02: $SPARK_HOME/bin/spark-submit、spark-class脚本分析
继承上文“spark-core_01: $SPARK_HOME/bin/spark-shell脚本分析”一,$SPARK_HOME/bin/spark-submit#################################################从spark-shell调用之后,传进来--class org.apache.spark.repl.Main --name "Spark ...原创 2018-03-14 14:44:50 · 1857 阅读 · 0 评论 -
spark-core_01: $SPARK_HOME/bin/spark-shell
sparkshell脚本的作用:调用spark-submit脚本,并给spark-submit脚本 带上参数如下参数--classorg.apache.spark.repl.Main --name "Spark shell" "$@" 具体流程是:#1 捕获终端信号,执行退出方法,恢复一些操作#2 保存终端配置,当cygwin时关闭回显,之后再恢复#3 执行spark-submit,调用repl....原创 2018-03-14 14:49:47 · 1630 阅读 · 0 评论 -
spark-core_09: org.apache.spark.deploy.master.Master源码解析1
1,先是start-all.sh调用start-master.sh(查看spark-core_05:$SPARK_HOME/sbin/start-all.sh、start-master.sh脚本分析)。而start-master.sh 使用如下脚本调用spark-deamon.shspark-daemon.sh start org.apache.spark.deploy.master.Master...原创 2018-03-26 21:19:56 · 767 阅读 · 0 评论 -
spark-core_10: org.apache.spark.deploy.master.Master源码解析2--Master这个RpcEndPoint是如何初始化Master
承接上文/** * RpcEndpoint的生命周期又是: onStart -> receive(receiveAndReply)* -> onStop * 这个MasterRpcEndpoint是线程安全的 */private[deploy] class Master( override val rpcEnv: RpcEnv, address: RpcA...原创 2018-03-26 21:27:32 · 477 阅读 · 0 评论 -
spark-core_11:org.apache.spark.deploy.master.Master源码解析3--MasterWebUI(MasterRpcEndPoint,8080)初始化web
承接上文分析一下newMasterWebUI(MasterRpcEndPoint,8080):它的主要作用就是将每个页面的html以scala.xml.Node的形势封装放在serlvet中,然后再将servlet放到servletContextHandler中,供jetty.Server使用/** * Web UI server for the standalonemaster. * 实现抽象...原创 2018-03-26 21:35:04 · 367 阅读 · 0 评论 -
spark-core_12:org.apache.spark.deploy.master.Master源码解析4-- 如何清理超时的Woker及zk是如何选举
承接上文,回到Master的onStart的方法体中 // masterWebUiUrl 值 http://luyl152:8080 masterWebUiUrl = "http://" + masterPublicAddress + ":" + webUi.boundPort //启动定时器,定时发送信息,检查worker的状态 checkForWorkerTim...原创 2018-03-26 21:41:32 · 297 阅读 · 0 评论 -
spark-core_13:Worker源码分析1-Worker初始化过程
1,从$SPARK_HOME/sbin/start-all.sh调用/sbin/start-slaves.sh,如果是不传--with-tachyon,会直接调用start-slaves.sh脚本,没有参数。(参看spark-core_05:$SPARK_HOME/sbin/start-all.sh、start-master.sh脚本分析)2,$SPARK_HOME/sbin/start-slav...原创 2018-03-27 16:23:51 · 274 阅读 · 0 评论 -
spark-core_30:Executor初始化过程env.blockManager.initialize(conf.getAppId)源码分析
在(spark-core_28及spark-core_29:Executor初始化过程env.blockManager.initialize(conf.getAppId)-NettyBlockTransferService.init()源码分析)分析了NettyBlockTransferService.init()做了如下四件事/**NettyBlockTransferService.init(t...原创 2018-05-23 15:10:29 · 374 阅读 · 0 评论