SparkContext详解
1.SparkContext是什么?他类似于javaSpringContext,是一个容器,里面装各种各样的资源。2.SparkContext的基本了解(1)Initializing Spark(初始化spark)(2)告诉spark如何去连接集群(local、yarn、stand)(3)在创建SparkContext之前,要先创建一个SparkConf,它包含你的一些应用程序...
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.
- DAGScheduler是面向Job的Stage的高层调度器。
- TaskScheduler是一个接口,是低层调度器,根据具体的ClusterManager的不同会有不同的实现。Standalone模式下具体实现的是TaskSchedulerlmpl。
- SchedulerBackend是一个接口,根据具体的ClusterManger的不同会有不同的实现,Standalone模式下具体的实现是SparkDeloySchedulerBackend。
- 从整个程序运行的角度来讲,sparkContext包含四大核心对象:DAGScheduler,TaskScheduler,SchedulerBackend,MapOutputTrackerMaster。
- SparkDeploySchedulerBackend有三大核心功能:
- 负责接收Master接受注册当前程序RegisterWithMaster。
- 接受集群中为当前应用程序而分配的计算资源Executor的注册并管理Executor。
- 负责发送Task到具体的Executor执行。
- 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.id | local-1539673476837 |
Q3:java.io.tmpdir 这个参数在生产中是需要调整的,为什么?
答:因为tmp是个临时目录,而临时之下的东西,在一段时间之后是会清理的。
6.Spark调优点
(1)如果是spark on yarn模式提交作业的优化点,每次运行相应的jar包都要传上去,申请资源是十分慢并且浪费时间的。如何做呢?
更多推荐
所有评论(0)