一、spark简介
- 什么是spark ?
spark是一个快速、通用、可扩展的分布式计算引擎
- spark特点
- 快速高效:DAG任务调度思想、数据缓存在内存、chackpoint
- 简介易用:支持 Java、Scala、Python和R等编程语言编写应用程序
- spark架构
- Master:负责接收worker的注册信息和心跳、接收客户端提交的任务、负责资源调度、命令worker启动Executor
- Worker:负责管理当前节点的资源管理,向Master注册并定期发送心跳,负责启动Executor、并监控Executor的状态
- Executor :是一个Java进程,负责执行Driver端生成的Task,将Task放入线程中运行。
二、spark环境搭建
流程:
下载 -> 上传 -> 解压 -> 修改配置文件 -> 启动 -> 测试运行
- 下载spark安装包,下载地址:spark官网
-
传spark安装包到Linux服务器上
-
解压spark安装包
tar -zxvf spark-3.2.3-bin-hadoop3.2.tgz -C /opt/../解压到的目录
- 进入到spark按照包目录并将conf目录下的spark-env.sh.template重命名为spark-env.sh,再修改
export JAVA_HOME=/usr/local/jdk1.8.0_251/
export SPARK_MASTER_HOST=linux01
- 将conf目录下的workers.template重命名为workers并修改,指定Worker的所在节点
linux01
linux02
- 将配置好的spark拷贝到其他节点
for i in {2..3}; do scp -r spark-3.2.3-bin-hadoop3.2 node-$i.linux:$PWD; done
- 启动Spark集群
- 在Spark的安装目录执行启动脚本
sbin/start-all.sh
- 执行jps命令查看Java进程
jps
在 linux01 上可以看见Master进程,在其他的节点上可以看见到Worker进程
- 访问Master的web管理界面,端口8080
三、本地搭建
spark程序每次都打包上在提交到集群上比较麻烦且不方便调试,Spark还可以进行Local模式运行,方便测试和调试
- 创建一个maven项目
- 在pom.xml 文件中添加依赖
<dependencies>
<!-- scala的依赖 -->
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>版本号</version>
</dependency>
<!-- spark core 即为spark内核 ,其他高级组件都要依赖spark core -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>版本号</version>
</dependency>
</dependencies>
-
创建一个scala目录
选择scala目录,右键,将目录转成源码包,或者点击maven的刷新按钮
-
编写spark程序
本地运行需要加上:
//Spark程序local模型运行,local[*]是本地运行,并开启多个线程
val conf: SparkConf = new SparkConf()
.setAppName("WordCount")
.setMaster("local[*]") //设置为local模式执行