不需要其他任何节点资源, 在本地执行Spark代码的环境
,也叫单机模式, 一般用于教学,调试, 演示等等,conf.setMaster[local[K]]
spark-3.0.0-bin-hadoop3.2.tgz
文件上传到 Linux 并解压缩,放置在指定位置,路径中不要包含中文或空格
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C ../module
cd opt/module
mv spark-3.0.0-bin-hadoop3.2.tgz spark-3.0.0
./bin/spark-shell
Spark-shell
sc.textFile("data/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
如何退出Shell? :quit
local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到对应的集群中去执行,这里我们来看看只使用 Spark 自身节点运行的集群模式
,也就是我们所谓的独立部署(Standalone)模式。Spark 的 Standalone 模式体现了经典的 master-slave 模式。
Spark-3.0.0改为spark-3.0.0-standalone
mv opt/module/spark-3.0.0 opt/module/spark-3.0.0-standalone
mv slaves.template slaves
bigdata01
bigdata02
bigdata03
mv spark-env.sh.template spark-env.sh
export JAVA_HOME=/opt/module/jdk-1.8
SPARK_MASTER_HOST=bigdata01
SPARK_MASTER_PORT=7077
注意:7077 端口,相当于 hadoop3 内部通信的 8020 端口,此处的端口需要确认自己的 Hadoop配置
xsync spark-standalone
./sbin/start-all.sh
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://bigdata01:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
spark-defaults.conf.template
文件名为 spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
spark-default.conf
文件,配置日志存储路径spark.eventLog.enabled true
spark.eventLog.dir hdfs://bigdata01:8020/directory
注意:需要启动 hadoop 集群,HDFS 上的 directory 目录需要提前存在。
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://bigdata01:8020/directory
-Dspark.history.retainedApplications=30"
xsync conf
sbin/start-all.sh
sbin/start-history-server.sh
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://bigdata01:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
停止集群, sbin/stop-all.sh
启动Zookeeper, zk stop
修改spark-env.sh
文件, 添加如下配置
注释如下内容:
#SPARK_MASTER_HOST=bigdata01
#SPARK_MASTER_PORT=7077
添加如下内容:
#Master 监控页面默认访问端口为 8080,但是可能会和 Zookeeper 冲突,所以改成 8989,也可以自定义,访问 UI 监控页面时请注意
SPARK_MASTER_WEBUI_PORT=8989
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=bigdata01,bigdata02,bigdata03
-Dspark.deploy.zookeeper.dir=/spark"
分发配置文件, xsync conf
启动集群, sbin/start-all.sh
启动bigdata02的单独Master节点, 可以在bigdata02的Spark web监控网页看到: 此时bigdata02节点Master状态处于备用状态(StandBy)
[win10@bigdata02 sbin]$ start-master.sh
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://bigdata01:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
停止bigdata01的资源监控进程Master, sbin/stop-master.sh
再来查看bigdata02的监控网页, 可以看到Master状态转为了活动(ALive)
spark-3.0.0-bin-hadoop3.2.tgz
文件上传到 Linux 并解压缩,放置在指定位置,路径中不要包含中文或空格
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C ../module
cd opt/module
mv spark-3.0.0-bin-hadoop3.2.tgz spark-3.0.0
spark-defaults.conf.template
文件名为 spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
/opt/module/hadoop/etc/hadoop/yarn-site.xml
, 并分发
<name>yarn.nodemanager.vmem-check-enabledname>
<value>falsevalue>
<description>Whether virtual memory limits will be enforced for containersdescription>
property>
<property>
<name>yarn.nodemanager.vmem-pmem-rationame>
<value>4value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containersdescription>
property>
<property>
<property>
<name>yarn.nodemanager.pmem-check-enabledname>
<value>falsevalue>
property>
mv spark-env.sh.template spark-env.sh
。。。
export JAVA_HOME=/opt/module/jdk1.8
YARN_CONF_DIR=/opt/module/hadoop/etc/hadoop
分发配置文件,xsync conf
启动hadoop集群
myhadoop start
启动后一定要确认Yarn已正常运行, jpsall, ResourceManager正在运行
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
spark-defaults.conf.template
文件名为 spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
spark-default.conf
文件,配置日志存储路径spark.eventLog.enabled true
spark.eventLog.dir hdfs://bigdata01:8020/directory
注意:需要启动 hadoop 集群,HDFS 上的 directory 目录需要提前存在。
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://bigdata01:8020/directory
-Dspark.history.retainedApplications=30"
分发配置文件, xsync conf
重新启动集群和历史服务
sbin/start-all.sh
sbin/start-history-server.sh
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://bigdata01:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
每次都需要启动虚拟机,启动集群,这是一个比较繁琐的过程,
并且会占大量的系统资源,导致系统执行变慢,不仅仅影响学习效果,也影响学习进度,Spark 非常暖心地提供了可以在 windows 系统下启动本地集群的方式,这样,在不使用虚拟机的情况下,也能学习 Spark 的基本使用
把上面 3.1小节的spark-3.0.0-bin-hadoop3.2.tgz
放到windows环境中, 解压到一个无中文五空格无下划线_
的目录下, 注意一定要遵守这个原则, 否则在打开spark-shell.cmd时会闪退!!!
测试一下:
sc.textFile("../data/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect