文章目录
前言
回顾Hadoop主要解决海量数据的存储和海量数据的分析计算。但是我们知道它的计算速度在很多生产环境中已经无法满足我们的需求了,这时候就有必要学习一个计算更加高效的框架了—spark。
一、spark概述
Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。
1.1 Hadoop MR与Spark的对比
- Hadoop从数据源获取数据,经过分析计算后,将结果输出到指定位置,核心是一次计算,不适合迭代计算。
- Spark框架计算比MR快的原因是:中间结果部落盘。注意spark的shuffle也是落盘的。
1.2 集群角色
1.2.1 Master和Worker集群资源管理
- Master:spark特有资源调度系统的Leader;掌管着整个集群的资源信息,类似于yarn框架中的ResourceManger
- Worker:spark特有资源调度系统的slave,有多个,每个slave掌管着所有节点的资源信息,类似于Yarn框架中的NodeManger。
1.2.2 Driver和Executor集群资源管理
Driver和Executor是临时程序,当有具体任务提交到Spark集群才会开启的程序
- Driver:Spark Shell中预加载的一个叫做sc的SparkContext对象
1.1 把用户程序转为job
1.2 跟踪Executor的任务运行状况
1.3 为执行器节点调度任务
1.4 UI展示应用运行状况 - Executor:负责执行Spark的具体任务
二、spark运行模式
2.1 Local模式
Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。
使用:直接在一台电脑上安装即可,
[yilei@hadoop102 spark-local]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
解释:
–class 表示要执行程序的主类
– local[K]:指定使用K个Core来运行计算,比如local[2]就是运行2个Core来执行
–local[*]:默认模式。自动帮你按照CPU最多核来设置线程数。比如CPU有8核,Spark帮你自动设置8个线程计算。
spark-examples_2.12-3.0.0.jar:要运行的程序
10:要运行程序的输入参数(计算圆周率π的次数,计算次数越多,准确率越高)
2.2 Standalone模式
Standalone模式是Spark自带的资源调动引擎,构建一个由Master + Slave构成的Spark集群,Spark运行在集群中。
这个要和Hadoop中的Standalone区别开来。这里的Standalone是指只用Spark来搭建一个集群,不需要借助Hadoop的Yarn和Mesos等其他框架。
2.3 Yarn模式
Spark客户端直接连接Yarn,不需要额外构建Spark集群
运行流程:
Spark有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。
- yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立即看到app的输出。
- yarn-cluster:Driver程序运行在由ResourceManager启动的APPMaster适用于生产环境。
[atguigu@hadoop102 spark-yarn]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client或者cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
客户端模式:
集群模式: