一、什么是Spark
- Spark是一个用于大规模数据处理的
统一计算引擎 - Spark中一个最重要的特征就是
基于内存进行计算,从而让它的速度可以达到MapReduce的几十倍甚至上百倍
1.1、Spark的特点
- 计算速度快。是hadoop的100倍
- 易用性
- 通用性
- Runs Everywhere
1.2、Spark与Hadoop的对比
- 综合能力:Hadoop是一个综合性质的计算引擎,Hadoop既包含MapReduce,还是包含HDFS(存储)和Yarn(资源管理)
- 计算模型:SparK任务可以包含多个计算操作,轻松实现复杂迭代计算,Hadoop中MapReduce任务只包含Map和Reduce阶段,不够灵活
- 处理速度:Spark任务的数据时存放在内存中的,而Hadoop中MapReduce任务是基于磁盘的
二、Spark安装
- Standalone:独立集群
- ON YARN:共用Hadoop集群资源(推荐)
官网下载地址:spark.apache.org/downloads.h…
启动命令提示:spark.apache.org/docs/latest…
下面演示的是ON YARN安装
-
解压安装包
tar -zxvf spark-3.3.1-bin-hadoop3.tgz
-
修改spark的配置
进入spark的conf目录
cd /root/software/spark-3.3.1-bin-hadoop3/conf
mv spark-env.sh.template spark-env.sh
-
在spark-env.sh增加配置
export JAVA_HOME=/root/software/jdk1.8.0_341
export HADOOP_CONF_DIR=/root/software/hadoop-3.3.4/etc/hadoop
-
配置Spark全局环境变量
vi /etc/profile
export SPARK_HOME=/root/software/spark-3.3.1-bin-hadoop3
export PATH=
-
启动spark,提交任务
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster /root/software/spark-3.3.1-bin-hadoop3/examples/jars/spark-examples_2.12-3.3.1.jar 2
-
打开hadoop网页http://192.168.234.100:8088/cluster/apps
三、Spark的工作原理
3.1、什么是RDD
- RDD通常通过Hadoop上的文件(即HDFS文件)进行创建,也可以通过程序中的集合来创建
- RDD是Spark提供的核心抽象,全称为:Resillient Distributed DataSet,即弹性分布式数据集
- 弹性:RDD数据默认情况下存放在内存中,但是在内存资源不足时,Spark也会自动将RDD数据写入磁盘
- 分布式:RDD在抽象上来说是一种元素数据的集合,它是被分区的,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作
- 容错性:RDD最重要的特性就是提供了容错性,可以自动从节点失败中恢复过来
四、Spark架构原理
- Driver:我们编写的Spark程序由Driver进程负责执行
- Master:集群的主节点中启动的进程
- Worker:集群的从节点中启动的进程
- Executor:由Worker负责启动的进程
- Task:由Executor负责启动的现冲,它是真正干活的