一.什么是Spark
Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。
是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发的通用内存并行计算框架Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的Spark已应用于大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。
二. Spark的特点
运行速度快
易于使用
通用性强
适用环境广
1.速度快
由于Apache Spark支持内存计算,并且通过DAG(有向无环图)执行引擎支持无环数据流,所以官方宣称其在内存中的运算速度要比Hadoop的MapReduce快100倍,在硬盘中要快10倍。Spark使用最先进的DAG调度器、查询优化器和物理执行引擎,实现了高性能的批处理和流处理。
2.易于使用
可以使用Java,Scala,Python,R,SQL快速写一个Spark应用。
Spark提供了超过80中操作使它更容易生成平行化的应用。它也可以使用Scala,Python,R,SQL shell 进行交互操作。
3.通用性强
Spark 可以与 SQL 、 Streaming 及复杂的分析良好结合。 Spark 还有一系列的高级工具,包括 Spark SQL 、 MLlib (机器学习库)、 GraphX (图计算)和 Spark Streaming (流计算),并且支持在一个应用中同时使用这些组件。
Spark提供了Core、SQL、Streaming、MLlib、GraphX等技术组件,可以一站式地完成大数据领域的离线批处理、SQL交互式查询、流式实时计算,机器学习、图计算等常见的任务。
4.适用环境广
Spark支持多种运行方式,包括在Hadoop和Mesos上,也支持Standalone的独立运行模式,同时也可以运行在云Kuberbetes上。对于数据源而言,Spark支持从HDFS、HBase、Cassandra及Kafka等多种途径获取数据。
ps:Spark的最大特点:基于内存
二.Spark集群的三种部署模式
Spark有主要有三种部署模式:Spark独立服务器模式、基于YARN的Spark、基于Mesos的Spark
(1)Standalone模式
即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖其它任何资源管理系统。从一定程度上讲是其它两种模式的基础。借助Spark开发模式,我们可以得到一种开发新型计算框架的一般思路。
Standalone模式运行流程
(2)yarn集群模式
在集群模式下,driver在集群中的某个节点(一般是应用程序的主节点)上运行。客户端首先与资源管理器通信,请求资源并运行Spark作业。资源管理器会分配容器(0号容器)并响应客户端。然后客户端向集群提交代码,并在0号容器内启动driver和Spark应用主节点。driver与Spark应用主节点协同工作,然后在由资源管理器分配的容器上创建executor。
YARN容器可位于由节管理器控制的任何容器上。因此所有的资源分配都由资源管理器负责。
Spark应用主节点与资源管理器进行沟通,以获取其他容器来启动executor。
在YARN集群模式下,没有shell,因为driver本身在YARN内部。
yarn-cluster运行流程
(3)yarn客户端模式
在YARN客户端模式下,driver在集群之外的节点(一般都是客户端节点)上运行。driver首先需要与资源管理器通信,从而请求资源并运行Spark作业。资源管理器会分配容器(0号容器)并响应driver。driver在0号容器中启动Spark应用主节点。Spark应用主节点在资源管理器分配的容器中创建executor。YARN容器可位于集群中由节点管理器控制的任一节点,因此所有的资源分配都由资源管理器负责。Spark应用主节点与资源管理器进行沟通,以获取其他容器来启动executor
yarn-client运行流程
yarn-cluster和yarn-client区别:
(1)SparkContext初始化不同,这也导致了Driver所在位置的不同,YarnCluster的Driver是在集群的某一台NM上,但是Yarn-Client就是在client机器上;
(2)而Driver会和Executors进行通信,这也导致了Yarn_cluster在提交App之后可以关闭Client,而Yarn-Cl