Spark集群搭建超详细教程
前言
在上一篇文章《Hadoop集群搭建配置教程》中详细介绍了Hadoop
集群搭建的全部过程,今天为大家带来分布式计算引擎Spark
集群搭建,还是使用三个虚拟机节点上进行安装部署,围绕Standalone
模式和Yarn
模式的这两种部署模式进行展开。
注意:以下步骤均在
hadoop1
节点上进行操作,特殊说明除外!
将下载好的 spark-3.0.0-bin-hadoop3.2.tgz
上传到 hadoop1
虚拟机节点/opt/module
目录下。
# 解压
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz
vim ~/.bashrc
# 添加如下内容
export SPARK_HOME=/opt/module/spark-3.0.0-bin-hadoop3.2
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
# 加载使其生效
source ~/.bashrc
# 进入spark conf目录
cd /opt/module/spark-3.0.0-bin-hadoop3.2/conf
# 拷贝模板文件
cp spark-defaults.conf.template spark-defaults.conf
cp spark-env.sh.template spark-env.sh
cp slaves.template slaves
vim spark-defaults.conf
# 添加如下内容
spark.master spark://hadoop1:7077
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 1g
spark.executor.memory 1g
export JAVA_HOME=/usr/java/jdk1.8.0_131
export HADOOP_HOME=/opt/module/hadoop
export HADOOP_CONF_DIR=/opt/module/hadoop/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/opt/module/hadoop/bin/hadoop classpath)
export SPARK_MASTER_HOST=hadoop1
export SPARK_MASTER_PORT=7077
vim slaves
# 修改为如下内容
hadoop1
hadoop2
hadoop3
scp -r ./spark-3.0.0-bin-hadoop3.2 hadoop2:/opt/module/
scp -r ./spark-3.0.0-bin-hadoop3.2 hadoop3:/opt/module/
# 配置了环境变量,可以在任意目录执行启动命令
start-all.sh
在Linux
系统上浏览器上查看Spark UI
:http://hadoop1:8080/
运行SparkPI
进行案例测试:
spark-submit --class org.apache.spark.examples.SparkPi \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.0.0.jar 10
上面默认是用standalone
模式启动的服务,如果想要把资源调度交给yarn
来做,则需要配置为yarn
模式:
需要启动的服务:hdfs服务
、yarn服务
需要关闭 Standalone
对应的服务(即集群中的Master
、Worker
进程)。
在Yarn
模式中,Spark
应用程序有两种运行模式:yarn-client
:Driver
程序运行在客户端,适用于交互、调试,希望立即看到app的输出yarn-cluster
:Driver
程序运行在由RM
启动的 AppMaster
中,适用于生产环境
二者的主要区别:Driver
在哪里!
start-dfs.sh
start-yarn.sh
在$HADOOP_HOME/etc/hadoop/yarn-site.xml
中增加如下配置,然后分发到集群其他节点,重启yarn
服务。
# 打开yarn-site.xml文件
vim /opt/module/hadoop/etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
说明:
yarn.nodemanager.pmem-check-enabled
: 是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true
。yarn.nodemanager.vmem-check-enabled
:是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true
。
# spark-env.sh 中这一项必须要有
# cd /opt/module/spark/conf
# 添加如下内容
export HADOOP_CONF_DIR=/opt/module/hadoop/etc/hadoop
# spark-default.conf(以下是优化)
# vim spark-defaults.conf
# 添加如下内容
spark.yarn.jars hdfs://hadoop1:8020/spark-jars/*.jar
下载spark-3.0.0-bin-without-hadoop.tgz
下载地址:https://archive.apache.org/dist/spark/spark-3.0.0/spark-3.0.0-bin-without-hadoop.tgz
# 上传并解压spark-3.0.0-bin-without-hadoop.tgz
tar -zxvf spark-3.0.0-bin-without-hadoop.tgz
上传spark纯净版jar包到hdfs
hdfs dfs -mkdir /spark-jars
hdfs dfs -put spark-3.0.0-bin-without-hadoop/jars/* /spark-jars
说明:
1)Spark
任务资源分配由Yarn
来调度,该任务有可能被分配到集群的任何一个节点。所以需要将spark
的依赖上传到hdfs
集群路径,这样集群中任何一个节点都能获取到,依此达到Spark
集群的HA
。
2)Spark
纯净版jar
包,不包含hadoop
和hive
相关依赖,避免和后续安装的Hive
出现兼容性问题。
记得,先把Master
与worker
进程停掉,否则会走standalone
模式。
# 停掉standalone模式的服务
stop-all.sh
# client
spark-submit --master yarn \
--deploy-mode client \
--class org.apache.spark.examples.SparkPi \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.0.0.jar 20
这种模式可以看见:程序计算的结果(即可以看见计算返回的结果)!
# cluster
spark-submit --master yarn \
--deploy-mode cluster \
--class org.apache.spark.examples.SparkPi \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.0.0.jar 20
这种模式就看不见最终的结果!
到此,我们就顺利完成了Spark
集群搭建。下一篇文章,将会给大家带来Hive
的部署安装,谢谢大家!
- 点赞
- 收藏
- 关注作者
评论(0)