spark架构原理(一)

spark内核架构由一下几部分组成
1、Application
自己的spark程序

2、spark-submit
提交任务, standalone模式下会创建一个DriverActor进程

3、Driver(进程)
执行application程序,初始化sparkcontext,

4、SparkContext
构造DAGschedule和TaskSchedule

8、Job
每执行一个action,会创建一个job,提交给DAGSchedule。

5、DAGScheduler
DAGschedule会将job按照stage划分算法划分为stage,并为每一个stage创建taskset。

6、TaskScheduler
通过一个后台进程连接master,向master注册application,并接受excutor的反向注册,然后将taskset中的每一个task提交到excutor上(task分配算法)。

7、Master
master接收到application注册请求后,使用资源调度算法,在集群的worker上,为这个application启动多个excutor。

6、Worker
worker为application启动excutor

7、Executor
executor启动后,反向注册到taskscheduler上,executor本身是一个进程,包括一个线程池和taskRunner,每接收到一个task,taksRunner封装task,对要执行的程序,拷贝反序列化。然后从线程池中取出一个线程,执行task。

11、ShuffleMapTask and ResultTask
task有两张,shufflemaptask和resulttask,只有最后一个stage是resultTask,之前的stage都是shufflemaptask。

stage作为taskset提交给excutor执行,每个task执行rdd的一个partition。

Spark是一个基于内存计算的分布式计算框架,它具有以下几个关键原理: 1. 弹性分布式数据集(RDD):RDD是Spark中的基本数据结构,它是一个不可变的分布式对象集合,可以在集群中进行并行计算。RDD具有容错机制,可以在节点故障时自动恢复数据,并支持多种操作,如转换和行动。 2. DAG调度和执行:Spark使用有向无环图(DAG)来表示任务的依赖关系,通过调度和执行这些任务来完成计算。Spark采用延迟执行机制,只有当需要输出结果时才执行计算,这样可以优化执行计划,并减少数据的中间存储和传输。 3. 内存计算:Spark在内存中存储和处理数据,以提高计算性能。通过将数据保持在内存中,可以避免频繁的磁盘读写操作,并加速数据访问。Spark还提供了缓存机制,可以将重复计算的中间结果缓存到内存中,以加快计算速度。 4. 分布式数据共享:Spark通过共享内存的方式,在集群中共享数据。在RDD的操作中,分区数据会被发送到执行任务的节点上,以减少数据传输和网络开销。此外,Spark还支持广播变量和累加器来在集群中共享变量和聚合结果。 5. 多种语言支持:Spark支持多种编程语言,如Scala、Java、Python和R。这使得开发人员可以根据自己的喜好和需要选择适合的语言进行开发。不同语言的API接口一致,可以方便地切换和共享代码。 通过以上原理Spark可以高效地处理大规模数据,并提供了丰富的库和工具,支持数据处理、机器学习、图计算等各种应用场景。它在大数据领域得到广泛应用,成为了目前最流行的分布式计算框架之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值