Driver:运行程序的时候,具有main方法,并且创建了SparkContext这样一个环境对象。
(包含的代码:SparkConf+SparkContext)
SparkConf:包含设置程序名称setAppName,setMaster。
SparkContext(通往集群的唯一通道、通往开发者使用集群各种功能的通道):
程序运行调度的核心;高层调度器DAGScheduler(划分Job成Stage);底层调度器TaskScheduler(负责一个作业的内部运行);SchedulerBackend(负责握住计算资源)
Executor:对具体业务实现的代码(map,flatmap,reducemap) (运行在worker所在节点)
Application(不依赖于Cluster Manager 粗粒度)=drive+executor
Worker是不会运行代码,管理节点。当前Node的资源,并接受Master的指令分配具体的计算资源Executor(在新的进程中分配)分配的时候就知道Worker资源情况
Job:包含一系列Task的并行计算
action不会产生RDD(一般一个action就是一个RDD)
stage内部:计算逻辑完全一样只是计算的数据不同
partition大小一般不是一个block的大小:最后一个记录会横跨两个block
Spark的程序的运行两种模式:client、cluster
为什么不能再IDEA集成开发huanj直接提交Spark程序到Spark集群中?
1.内存和cores限制,默认情况下,Spark程序的Driver会提交在Spark程序的机器上
2.Driver要指挥Workers的运行,需要频繁的发生网络通信,如果开发集群不在同一个网络中,就会出现任务丢失,运行缓慢等问题
3.不安全
学习于:
DT大数据梦工厂
新浪微博:www.weibo.com/ilovepains/
微信公众号:DT_Spark
博客:http://.blog.sina.com.cn/ilovepains
TEL:18610086859
Email:18610086859@vip.126.com