第2章 Linux环境下安装Spark环境
2.1 虚拟机环境准备
- 虚拟机环境准备在之前学习Hadoop时已经阐述过,在此不再阐述,读者可自行查看博客: 虚拟机环境准备 中的第
1.1 小节。 
2.2 安装Spark
2.2.1 进入到Spark安装包路径下
[xqzhao@hadoop100 ~]$ cd /opt/software/
2.3.2 解压安装文件到/opt/module下面
[xqzhao@hadoop100 software]$ tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/
2.2.3 查看是否解压成功
[xqzhao@hadoop100 software]$ ls /opt/module/
spark-3.0.0-bin-hadoop3.2
// 重命名文件夹—使用 `本地模式` 时
[xqzhao@hadoop100 module]$ mv spark-3.0.0-bin-hadoop3.2 spark-local
// 重命名文件夹—使用 `独立部署模式` 时
[xqzhao@hadoop100 module]$ mv spark-3.0.0-bin-hadoop3.2 spark-standalone
2.3 运行模式-本地模式
2.3.1 执行WorkCount案例
- (1) 在
/opt/module/spark-local/data 目录下创建word.txt 文件, 并填入以下字段:
Hello Scala
Hello Spark
Hello Scala
[xqzhao@hadoop100 /]$ cd /opt/module/spark-local
[xqzhao@hadoop100 spark-local]$ bin/spark-shell
scala> sc.textFile("data/word.txt").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect
res0: Array[(String, Int)] = Array((Hello,3), (Scala,2), (Spark,1))
-
(6) 在本机浏览器输入虚拟机地址:4040/ 查看程序运行情况 注:在本机浏览器查看程序运行情况之前,需要先配置 Windows 主机的 hosts 文件, 配置 hadoop100 与 虚拟机ip 的对应关系。具体可以参考:Windows修改hosts文件。 -
(7) 退出本地模式 按Ctrl+C 或输入Scala命令:quit
2.3.2 提交应用
[xqzhao@hadoop100 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
- (1)
--class 表示要执行程序的主类,此处可以更换为咱们自己写的应用程序 - (2)
--master local[2] 部署模式,默认为本地模式,数字表示分配的虚拟 CPU 核数量 - (3)
spark-examples_2.12-3.0.0.jar 运行的应用类所在的jar包 ,实际使用时,可以设定为咱们自己打的 jar 包 - (4)
数字10 表示程序的入口参数,用于设定当前应用的任务数量
2.4 独立部署模式
- 首先需要根据
2.2小节 解压缩并按照提示重命名 Spark安装包 。 - 此模式需要创建另外两台虚拟机,可以从目前的虚拟机中拷贝,具体步骤请参考博客:虚拟机环境准备 第
1.1小节 末尾处的描述。
2.4.1 修改配置文件
- (1) 进入解压缩后路径的
conf 目录,拷贝一份slaves.template 并命名为slaves
[xqzhao@hadoop100 conf]$ cp slaves.template slaves
hadoop100
hadoop101
hadoop102
- (3) 拷贝一份
spark-env.sh.template 并命名为spark-env.sh
[xqzhao@hadoop100 conf]$ cp spark-env.sh.template spark-env.sh
- (4) 修改
spark-env.sh 文件,添加JAVA_HOME 环境变量和集群对应的master 节点
[xqzhao@hadoop100 conf]$ vim spark-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
SPARK_MASTER_HOST=linux1
SPARK_MASTER_PORT=7077
注意:7077端口 ,相当于hadoop3.X内部通信的8020端口,此处的端口需要确认自己的Hadoop配置
2.4.2 分发spark-standalone 目录
[xqzhao@hadoop100 module]$ xsync spark-standalone
2.4.3 启动集群
[xqzhao@hadoop100 spark-standalone]$ sbin/start-all.sh
注 :使用此命令之前,需要配置 3 台虚拟机之间的无密登录,详情参考:SSH无密登录配置 中的第 4.7小节 。
[xqzhao@hadoop100 /]$ jps
3220 Master
3303 Worker
3353 Jps
[xqzhao@hadoop101 /]$ jps
2804 Worker
2842 Jps
[xqzhao@hadoop102 /]$ jps
2804 Jps
2762 Worker
- (3) 查看 Master 资源监控 Web UI 界面:
http://hadoop100:8080 
2.4.4 提交应用
[xqzhao@hadoop100 spark-standalone]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop100:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
--master spark://hadoop100:7077 独立部署模式,连接到 Spark 集群
2.4.5 提交参数说明
参数 | 解释 | 可选值举例 |
---|
--class | Spark 程序中包含主函数的类 | | --master | Spark 程序运行的模式(环境) | 模式:local[*] 、spark://hadoop100:7077 、Yarn | --executor-memory 1G | 指定每个 executor 可用内存为 1G | | --total-executor-cores 2 | 指定所有executor使用的cpu核数为 2 个 | | --executor-cores | 指定每个 executor 使用的 cpu 核数 | | application-jar | 打包好的应用 jar,包含依赖。这个 URL 在集群中全局可见。 比如 hdfs:// 共享存储系统,如果是 file:// path,那么所有的节点的 path 都包含同样的 jar | | application-arguments | 传给 main() 方法的参数 | |
2.4.6 配置历史服务器
由于 spark-shell 停止掉后,就无法再通过 hadoop100:4040 页面查看历史任务的运行情况,所以开发时需要配置历史服务器记录任务运行情况。
- (1) 拷贝一份
spark-defaults.conf.template 并命名为spark-defaults.conf
[xqzhao@hadoop100 conf]$ cp spark-defaults.conf.template spark-defaults.conf
- (2) 修改
spark-default.conf 文件,配置日志存储路径
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop100:8020/directory
注意:需要启动 hadoop 集群,HDFS 上的 directory 目录需要提前存在。
[xqzhao@hadoop100 spark-standalone]$ sbin/start-dfs.sh
hadoop fs -mkdir /directory
- (3) 修改
spark-env.sh 文件, 添加日志配置
[xqzhao@hadoop100 spark-standalone]$ vim conf/spark-env.sh
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://linux1:8020/directory
-Dspark.history.retainedApplications=30"
- 参数1含义:WEB UI 访问的端口号为 18080
- 参数2含义:指定历史服务器日志存储路径
- 参数3含义:指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
[xqzhao@hadoop100 spark-standalone]$ xsync conf
[xqzhao@hadoop100 spark-standalone]$ sbin/start-all.sh
[xqzhao@hadoop100 spark-standalone]$ sbin/start-history-server.sh
[xqzhao@hadoop100 spark-standalone]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop100:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
- (7) 查看历史服务:
http://hadoop100:18080
声明:本文是学习时记录的笔记,如有侵权请告知删除! 原视频地址:https://www.bilibili.com/video/BV11A411L7CK
|