【Spark内核源码】解析“spark-shell”(一)

目录

脚本分析

远程监控


之前使用spark-shell,编写了一个word count程程序【初探Spark内核】Word Count程序的简单分析 ,spark-shell究竟都为我们做了些什么,下面就好好分析一下。

脚本分析

当我们输入指令“spark-shell”的时候,我们是调用了SPARK_HOME/bin/spark-shell脚本。这个脚本大致的调用过程是这样的:

spark-shell脚本中设置了main方法,做了一些准备工作后,这个方法执行了${SPARK_HOME}"/bin/spark-submit脚本:

   spark-shell脚本的最后执行了main方法

spark-submit脚本中执行了${SPARK_HOME}"/bin/spark-class脚本,并传递了参数“org.apache.spark.deploy.SparkSubmit”:

 spark-class脚本中干了首先要找到JAVA_HOME:

其次引用了spark的相关jar包:

接着载入了hadoop和yarn的相关配置:

最后设置并启动JVM执行org.apache.spark.deploy.SparkSubmit:

由此可见,org.apache.spark.deploy.SparkSubmit是spark任务提交的主要进程。

远程监控

在SPARK_SUBMIT_OPTS="$SPARK_SUBMIT_OPTS -Dscala.usejavacp=true"追加如下内容:

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10207 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

执行spark-shell脚本后,在本地机器上打开“jvisualvm.exe”,并配置远程监控,增加JMX链接,链接的端口号跟上面配置的要保持一致

在线程中找到"main"线程,并点击【线程Dump】按钮

进入此页面:

 main的线程调用信息最开始也就是“t@1”的信息如下:

可以看出main线程调用顺序如下:

源码细节,后面再看吧。

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值