1、 Spark发展背景
Spark由加州大学伯克利分校AMP实验室(Algorithms,Machines,andPeopleLab)以Matei为主的小团队使用Scala语言所开发,后期成立spark商业公司databricks,CEOAli,CTO Matei,后期愿景是实现databrickscloud。Spark是新一代基于内存迭代计算的、开源的、分布式的、并行的计算框架,抛去繁琐的IO读写,目的是让数据分析更加快速。
2、 Spark和mapreduce的区别
1)、MR作业的资源管控是通过yarn进行的,spark可以通过yarn进行资源管控,也可以不使用yarn,但是多个组件合设时,建议还是使用yarn;
2)、spark是基于内存计算的,计算的中间结果存放在内存,可以进行反复迭代计算;而MR计算的中间结果是要落磁盘的,所以一个job会涉及到反复读写磁盘,这也是性能比不上spark的主要原因;
3)、MR的一个task就要对应一个container,container的每次启动都要耗费不少时间,而spark是基于线程池来实现的,资源的分配会更快一些。
3、 Spark系统架构图
Spark架构中的基本组件:
ClusterManager:在Standalone模式中即为Master(主节点),控制整个集群,监控Worker。在YARN模式中为资源管理器。
Worker:从节点,负责控制计算节点,启动Executor或Driver。在YARN模式中为NodeManager,负责计算节点的控制。
Driver:运行Application的main()函数并创建SparkContext。
Executor:执行器,在workernode上执行任务的组件、用于启动线程池运行任务。每个Application拥有独立的一组Executors。
SparkContext:整个应用的上下文,控制应用的生命周期。
RDD