目录
一、集群规划
二、配置Spark路径
三、修改配置文件
1.spark-env.sh
2.修改slaves文件
四、启动集群
1.先起动Hadoop的HDFS和Yarn
2.启动Spark
五、Web查看集群启动情况
六、测试例子
七、集群配置介绍
必读引言:
本文是基于Hadoop完全分布式搭建的Spark On Yarn分布式集群,之前我已经总结过Hadoop完全分布式搭建的详细过程,请参考我的文章:Linux下CentOS搭建Hadoop分布式全过程(史上超全大合集!)
Master | Worker | |
hadoop101 | ✔ | ✔ |
hadoop103 | ✔ | |
hadoop104 | ✔ |
①首先添加Spark路径
[root@hadoop101 ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
②分发给hadoop103和hadoop104
[root@hadoop101 ~]# xsync /etc/profile
①进入以下路径,先修改文件名称
[root@hadoop101 ~]# cd /usr/local/spark/spark-2.3.4-bin-hadoop2.7/conf
[root@hadoop101 conf]# mv spark-env.sh.template spark-env.sh
②再修改文件内容
# 配置各种软件的HOME,一般来说不配置也可以,但是可能会出现问题,还是配上
export JAVA_HOME=/usr/local/java/jdk1.8.0_241
export SCALA_HOME=/usr/local/scala/scala-2.11.8
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.3
export SPARK_HOME=/usr/local/spark/spark-2.3.4-bin-hadoop2.7
export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.7.3/etc/hadoop
# 设置Master的IP
export SPARK_MASTER_IP=192.168.219.129
# 设置Master的主机名
export SPARK_MASTER_HOST=hadoop101
# 设置本节点的IP
export SPARK_LOCAL_IP=192.168.219.129
# 每一个Worker最多可以使用的内存
export SPARK_WORKER_MEMORY=1g
# 每一个Worker最多可以使用的cpu core的个数
export SPARK_WORKER_CORES=1
# 提交Application的端口,默认就是这个,万一要改呢,改这里
export SPARK_MASTER_WEBUI_PORT=8080
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/hadoop-2.7.3/etc/hadoop classpath)
③分发给hadoop103和hadoop104
[root@hadoop101 conf]# xsync spark-env.sh
④相应的节点要修改他们的SPARK_LOCAL_IP
hadoop103:export SPARK_LOCAL_IP=192.168.219.131
hadoop104:export SPARK_LOCAL_IP=192.168.219.129
①进入以下路径,先修改文件名称
[root@hadoop101 ~]# cd /usr/local/spark/spark-2.3.4-bin-hadoop2.7/conf
[root@hadoop101 conf]# mv slaves.template slaves
②然后添加各个节点(不要有空格或者空行!!)
hadoop101
hadoop103
hadoop104
③分发给hadoop103和hadoop104
[root@hadoop101 conf]# xsync slaves
参考我之前的文章:Hadoop完全分布式的集群启动与停止
[root@hadoop101 ~]# cd /usr/local/spark/spark-2.3.4-bin-hadoop2.7/
[root@hadoop101 spark-2.3.4-bin-hadoop2.7]# sbin/start-all.sh
①hadoop101:
②hadoop103:
③hadoop104:
主节点中出现了Worker和Master,从节点中出现了Worker,至此Spark完全分布式已经启动!!
在网址中输入:http://192.168.219.129:8080/(master的IP地址:8080)
注意以下UI界面的访问地址:
名称 | 网址 | 备注 |
HDFS | hadoop101:50070 | 必须是主节点,有HDFS的 因为50070是HDFS的默认端口号 |
Yarn | hadoop103:8088 | 必须是有Yarn的节点 因为8088是Yarn默认的端口号 |
Spark | hadoop101:8080 hadoop101:4040 |
必须是Master节点 因为8080是Spark默认的端口号 4040是spark在工作时才会出现的 |
本例:
bin/spark-submit \
--master spark://hadoop101:7077 \
--class org.apache.spark.examples.SparkPi \
examples/jars/spark-examples_2.11-2.3.4.jar 100
如果在yarn上提交某个包时:
注意文件要提前传到hdfs中
bin/spark-submit \
--master yarn \
--class Rewrite_NavieBayes \
/usr/local/spark/spark-test/TJU_NaiveBayes_Project-1.0-SNAPSHOT.jar
我搭建了3个虚拟机分别为hadoop101、hadoop103、hadoop104,ip地址分别为192.168.219.129,192.168.219.131,192.168.219.132,防火墙已关闭。
内置:
jdk版本:jdk1.8.0_241
hadoop版本:hadoop-2.7.3
scala版本:2.11.8
spark版本:2.3.4
主机名称 | IP地址 |
hadoop101 | 192.168.219.129 |
hadoop103 | 192.168.219.131 |
hadoop104 | 192.168.219.132 |
环境所需软件 | 版本号 |
JDK | jdk1.8.0_241 |
Hadoop | hadoop-2.7.3 |
Scala | 2.11.8 |
Spark | 2.3.4 |