大数据之—Spark环境搭建
前言
参考:https://blog.csdn.net/wzb1983/article/details/125761231
官网:http://spark.apache.org/downloads.html
软件仓库:https://archive.apache.org/dist/spark/
软件:https://archive.apache.org/dist/spark/spark-3.1.2/spark-3.1.2-bin-hadoop2.7.tgz
运行模式说明
运行环境 | 模式 | 模式 |
---|---|---|
Local | 本地模式 | 常用于本地开发测试,如在eclipse,idea中写程序测试等。本地还分为local单线程和local-cluster多线程local[*] |
Standalone | 集群模式 | Spark自带的一个资源调度框架,支持完全分布式。存在的Master单点故障可由ZooKeeper来实现HA |
Yarn | 集群模式 | 运行在yarn资源管理器框架之上,由yarn负责资源管理,Spark负责任务调度和计算 |
-
Local模式: Local模式就是运行在一台计算机上的模式,通常就是用于在本机上
练手和测试
。它可以通过以下集中方式设置master。- local: 所有计算都运行在一个线程当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式;
- local[K]: 指定使用几个线程来运行计算,比如local[4]就是运行4个worker线程。通常我们的cpu有几个core,就指定几个线程,最大化利用cpu的计算能力;
- local[*]: 这种模式直接帮你按照cpu最多cores来设置线程数了。
-
Standalone模式: 构建一个由Master+Slave构成的Spark集群,Spark运行在集群中。
-
Yarn模式: Spark客户端直接连接Yarn;不需要额外构建Spark集群。
- 有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。
- yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立即看到app的输出
- yarn-cluster:Driver程序运行在由RM(ResourceManager)启动的AP(APPMaster中,这种模式适用于生产环境)
Local模式
安装
mkdir -p /opt/spark && cd /opt/spark
tar -xvzf spark-3.1.2-bin-hadoop2.7.gz
vim /etc/profile.d/my_env.sh
# SPARK_HOME
export SPARK_HOME=/opt/spark/spark-3.1.2-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin
source /etc/profile
配置
cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
vim $SPARK_HOME/conf/spark-env.sh
# 添加如下内容
export JAVA_HOME=/opt/jdk/java8
服务启动停止
# 进入命令库
cd $SPARK_HOME/sbin
# 启动集群
$SPARK_HOME/sbin/start-all.sh
# 停止集群
$SPARK_HOME/sbin/stop-all.sh
启动客户端
# scala-spark-shell
$SPARK_HOME/bin/spark-shell
# python—spark—shell
$SPARK_HOME/bin/pyspark
测试
# 启动 python—spark—shell
$SPARK_HOME/bin/pyspark
# 测试
data = sc.textFile("file:////opt/spark/spark-3.1.2-bin-hadoop2.7/README.md")
data.count() # 词条统计
>>> 108
data.first() # 第一行字符
>>> '# Apache Spark'
Standalone模式
配置
Standalone模式在Local模式下继续操作的。
vim $SPARK_HOME/conf/spark-env.sh
# 添加内容
SPARK_MASTER_HOST=node1
SPARK_MASTER_PORT=7077
配置 workers
cp $SPARK_HOME/conf/workers.template $SPARK_HOME/conf/workers && vim $SPARK_HOME/conf/workers
# 添加内容
node1
node2
node3
分发 spark软件:xsync /opt/spark
分发 环境变量配置:xsync /etc/profile.d/my_env.sh
刷新节点环境变量:source /etc/profile
启动
# 启动集群
$SPARK_HOME/sbin/start-all.sh
# 停止集群
$SPARK_HOME/sbin/stop-all.sh
# 验证启动
jpsall
测试
1、python—spark—shell
$SPARK_HOME/bin/pyspark
# 测试
data = sc.textFile("file:////opt/spark/spark-3.1.2-bin-hadoop2.7/README.md")
data.count() # 词条统计
>>> 108
data.first() # 第一行字符
>>> '# Apache Spark'
2、spark-submit
该算法是利用蒙特·卡罗算法求PI
$SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://node1:7077 $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.2.jar 10
3、Spark on Yarn
yarn模式两种提交任务方式:
Spark可以和Yarn整合,将Application提交到Yarn上运行,Yarn有两种提交任务的方式。
- yarn-client提交任务方式
$SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.2.jar 100
- yarn-cluster提交任务方式
$SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.2.jar 100
注:如果在yarn集群中运行报错,可能是因为yarn内存检测的原因导致,需要增加如下配置
vim /opt/hadoop/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>