大数据之—Spark环境搭建

发布时间 2023-03-24 13:51:28作者: 黄河大道东

前言

参考: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>