1.SparkContext是什么?

他类似于javaSpringContext,是一个容器,里面装各种各样的资源。

2.SparkContext的基本了解

(1)Initializing Spark(初始化spark)

(2)告诉spark如何去连接集群(local、yarn、stand)

(3)在创建SparkContext之前,要先创建一个SparkConf,它包含你的一些应用程序的信息(key-value pairs),比如ApplicationName、core、memory

(4)In practice, when running on a cluster, you will not want to hardcode master in the program, but rather launch the application with spark-submit and receive it there. However, for local testing and unit tests, you can pass “local” to run Spark in-process.

就是你别再集群上实践跑的时候在master里面搞个local啥的硬编码(硬编码是指将可变变量用一个固定值来代替的方法),而是提交的时候指定。测试的时候可以local。

2.1SparkContext的作用深入了解

  •  sparkContext构建的顶级三大核心:DAGScheduler,TaskScheduler,SchedulerBackend.
  1. DAGScheduler是面向Job的Stage的高层调度器。
  2. TaskScheduler是一个接口,是低层调度器,根据具体的ClusterManager的不同会有不同的实现。Standalone模式下具体实现的是TaskSchedulerlmpl。
  3. SchedulerBackend是一个接口,根据具体的ClusterManger的不同会有不同的实现,Standalone模式下具体的实现是SparkDeloySchedulerBackend。
  • 从整个程序运行的角度来讲,sparkContext包含四大核心对象:DAGScheduler,TaskScheduler,SchedulerBackend,MapOutputTrackerMaster。
  • SparkDeploySchedulerBackend有三大核心功能:
  1. 负责接收Master接受注册当前程序RegisterWithMaster。
  2. 接受集群中为当前应用程序而分配的计算资源Executor的注册并管理Executor。
  3. 负责发送Task到具体的Executor执行。
  4. SparkDeploySchedulerBackend是被TaskSchedulerlmpl管理的。

借鉴文章https://www.cnblogs.com/chushiyaoyue/p/7468952.html

3.SparkConf的作用

他包含的就是一些配置信息,比如AppName、memory、core等

4.SparkShell的使用

(1)./spark-shell --help   :不知道如何使用,可通过它查看命令帮助,[]中括号里面的表示可选的。

(2)重要参数讲解:

--master   这个就体现了,那句不要使用硬编码的方式。

--name     这个是指定你的application name  应用名称。

--jars        这个是用comma逗号分隔的一系列包含driver和executor的环境变量的包。

--conf       这个是指定一些配置的参数。

--driver-*   这个是指定driver的memory、class-path等。

--executor-memory   这个是设置executor端的内存。

--executor-core   指定executor的core资源

--driver-core       指定dirier的core资源

--queue     生产上肯定是以队列的方式来提交的

--num-executor   指定executor 执行者的个数

5.问题

Q1:这个SparkShell从那来的?在源码找到。

''$@'' :所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

Q2:这个id从哪来的?在源码中找到。

spark.app.idlocal-1539673476837

Q3:java.io.tmpdir 这个参数在生产中是需要调整的,为什么?

答:因为tmp是个临时目录,而临时之下的东西,在一段时间之后是会清理的。

6.Spark调优点

(1)如果是spark on yarn模式提交作业的优化点,每次运行相应的jar包都要传上去,申请资源是十分慢并且浪费时间的。如何做呢? 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐