介绍:
Spark是用于大规模数据处理的统一分析引擎
spark的引入:
虽然MapReduce提供了对数据访问和计算的抽象,但是对于数据的复用就是简单的将中间数据写到一个稳定的文件系统中(例如HDFS),所以会产生数据的复制备份,磁盘的I/O以及数据的序列化,所以在遇到需要在多个计算之间复用中间结果的操作时效率就会非常的低.而这类操作是非常常见的,例如迭代式计算,交互式数据挖掘,图计算等.认识到这个问题后,学术界的 AMPLab 提出了一个新的模型,叫做 RDD.
RDD的简单理解:
1.RDD(弹性分布式数据集)是一个可以容错并行的数据结构(理解:分布式的集合,操作就和操作本地集合一样)
2.RDD提供了丰富的API(map,reduce,foreach,group...)来操作数据
3.将中间结果数据集保存在内存中
为什么使用spark:
中间数据存在内存中,运行数据快,操作数据的api丰富,开发速度快.
spark的特点:
快,易用,通用,可有运行在hadoop平台(整合了hadoop相关的组件)
与MapReduce的区别:
1.MapReduce的计算会将中间结果输出的到磁盘上
2.Spark中的中间输出和结果可以保存在内存中
Spark运行模式:
1.local本地模式(单机)--->常用于本地开发测试
分为local单线程和local-cluster多线程
2.standalone独立集群模式--->偶尔于本地开发测试
典型的Mater/slave模式
3.standalone-HA高可用模式--->开发时生产环境可以使用
基于standalone模式,使用zk搭建高可用,避免Master是有单点故障的
4.on yarn集群模式--->开发时生产环境可以使用
运行在 yarn 集群之上,由 yarn 负责资源管理,Spark 负责任务调度和计算,
好处:计算资源按需伸缩,集群利用率高,共享底层存储,避免数据跨集群迁移。
spark_on yarn的两种运行模式:
①.cluster模式(用于:生产环境中):
Driver程序在YARN集群中的某个节点上运行
该模式,Driver运行在集群中,其实就是运行在ApplicattionMaster这个进程中,如果该进程出现问题,yarn会重启ApplicattionMaster(Driver),SparkSubmit的功能就是为了提交任务
②.client模式(用于测试,学习)
Driver运行在Client上
该模式,Driver是运行在SparkSubmit进程中,因为收集的结果,必须返回到命令行