Spark Standalone 全分布模式安装及问题配置过程中常见问题

3 篇文章 0 订阅

Spark Standalone 全分不模式:既真正的集群模式,master和worker部署在不同的节点之上,一般至少需要3个节点(一个master和两个worker),需要三台主机,slave,slave1,slave2(slave是master节点,slave1,slave2是worker节点)。

一、前期准备

二、安装scala

三、安装spark

四、问题总结


一、前期准备

1. 准备好scala,hadoop 压缩包

  scala-2.11.8.tgz

  spark-2.4.8-bin-hadoop2.7.tgz

   下载地址链接: https://pan.baidu.com/s/1mzIWCzozmSfgV3meUn1acQ?pwd=rrkx

   提取码: rrkx

2 准备三台虚拟机(至少三台)

        注:这里的三台主机名称分别是

                HadoopMaster(master节点)

                HadoopSlave01(worker节点)

                HadoopSlave02  (worker节点)

 3.  分别在三台虚拟机上安装好jdk

   如果jdk没有配置好的可以参考这篇博客  

    https://editor.csdn.net/md/?articleId=126587725

   注:这里三台主机都要分别配置好JDK。

4. hadoop 分布式集群  

   如果没有配置好hadoop分布式集群的话可以参考这篇博客

   https://editor.csdn.net/md/?articleId=127031634

5. 将准备好的scala和spark压缩包上传到HadoopMaster主机上,(这里我是创建了一个software文件,我将两个包上传到这个目录下)

二、安装scala

1.将scala-2.11.8.tgz 解压

tar -zxvf scala_2.11.8.tgz

2. 将HadoopMaster节点上刚解压的 scala发送到从节点HadoopSlave01和HadoopSlave02

scp -r scala-2.11.8 hadoop@HadoopSlaveo1:~/software/
scp -r scala-2.11.8 hadoop@HadoopSlaveo1:~/software/

3. 配置环境变量。在/etc/profile文件添加如下代码(注意:三个主机上都要编写该内容

export SCALA_HOME=/home/hadoop/software/scala-2.11.8
export PATH=${SCALA_HOME}/bin:$PATH
#这里的/home/hadoop/software/scala-2.11.8是你scala解压之后的路径

 4. 使profile文件生效(这里也是三个主机上都要执行该命令)

source /etc/profile

 5. 之后分别在每一台主机上都执行  scala  -version  查看版本信息,出现版本信息,则表示scala安装成功

三、安装spark

1. 解压spark-2.4.8-bin-hadoop2.7.tgz

tar -zxvf spark-2.4.8-bin-hadoop2.7.tgz

2. 备份spark-env.sh.tempalteslaves.template

cd spark-2.4.8-bin-hadoop2.7/conf
cp spark-env.sh.tempalte spark-env.sh 
cp slaves.template slaves
#复制 spark-env.sh.tempalte文件并重命名为 spark-env.sh
#复制 slaves.tempalte文件并重命名为slaves

 3. 修改saprk-env.sh 文件

vi spark-env.sh
#在文件中添加如下内容

export JAVA_HOME=/home/hadoop/software/jdk1.8.0_171
SPARK_MASTER_ IP=HadoopMaster
SPARK_.MASTER_PORT=7077
SPARK_WORKER_CORES=2
SPARK_WORKER_MEMORY=2g 
SPARK_MASTER_WEBUI_PORT=8080
SPARK_WORKER_INSTANCES=1

4. 编写slaves文件

vi slaves
#在文件中添加另外两台从节点的主机名字,此处为HadoopSlave01,HadoopSlave02
#在添加的时候要先把文件里的localhost删除或者注销
HadoopSlave01
HadoopSlave02

 5.将HadoopMaster上配配置好的Spark安装目录分别复制给两个从节点HadoopSlave01,HadoopSlave02

scp -r spark-2.4.8-bin-hadoop2.7  hadoop@HadoopSlaveo1:~/software/
scp -r spark-2.4.8-bin-hadoop2.7  hadoop@HadoopSlaveo2:~/software/

6. 配置spark的环境变量(注意:这里三台主机都分别要配置)

vi /etc/profile
#在profile下添加如下内容
export SPARK_HOME=/home/hadoop/software/spark-2.4.8-bin-hadoop2.7
export PATH=${SPARK_HOME}/bin:$PATH

#这里的SPARK_HOME后边接的是spark解压之后存放的路径,此处为/home/hadoop/software/spark-2.4.8-bin-hadoop2.7

7. 都配置好以后,使profile文件生效(这里也是三个主机上都要执行该命令)

source /etc/profile

8.  spark就配置好了,再主节点HadoopMaster启动spark全分布式(注在启动之前要先启动好hadoop集群)

sbin/start-all.sh
#注意这里要在spark-2.4.8-bin-hadoop2.7的路径下启动

出现下图所示 内容就算启动成功了。 

 9. 现在检查是否部署成功

#分别在三台主机上查看进程
jps  #查看进程
#若master节点有Master进程,从节点有worker进程,则说明配置成功

 10. 访问8080端口:http://ip:8080 (这里是192.168.195.184:8080)

四、问题总结

在部署spark分布的时候,中途遇见了很多问题,总结一下

1.启动了spark分布之后没有master,worker进程

在启动spark的时候,启动了start-all.sh ,启动过程也没有问题,但是jps 查看的时候master节点没有master进程,worke节点没有worker进程,一开始我以为是自己配置文件的时候哪里配置错了,但是检查了一遍之后没有发现哪里有问了,看了很多资料,最后才发现启动spark的时候路径错了,我以为start-all.sh就能够启动所有集群,但是在这里启动spark分布的时候,要在spark目录下执行 sbin/start-all.sh   才行

2. 启动spark集群的时候提示“main” java.lang.UnsupportedClassVersionError:org/apache/spark/launcher/Main:Unsupported major.mior version 52.0

  • 在启动spark 集群的时候即使jdk错误,但是java -version查看jdk的时候,是有自己安装的jdk版本信息的,也就是jdk环境变量配置是没有问题的。然后我又以为是我安装的jdk的版本问题,但是我三台主机都用的是同一个版本的jdk,然而HadoopMaser(主节点),HadoopSlave01(worker)能够启动成功,那就不是jdk版本的问题。

  •  然后我尝试在spark-env.sh 文件里边添加JDK的环境变量,在吧三台主机的日志里边的文件给删除之后。从新启动spark集群就成功了。
cd spark-2.4.8-bin-hadoop2.7/logs/
rm -rf *  #删除logs下的所有日志文件
#这里三台主机的日志文件都有删除


sbin/stop-all.sh   #在HadoopMaster(master节点)关闭spark集群
cd spark-2.4.8-bin-hadoop2.7/conf/
vi spark-env.sh 
#在文件中添加jdk的环境变量(三台主机都要分别添加)
export JAVA_HOME=/home/hadoop/software/jdk1.8.0_171



#这里建议吧scala,hadoop,spark,的环境变量也给加上
export SCALA_HOME=/home/hadoop/software/scala-2. 11.8
export JAVA_HOME=/home/hadoop/software/jdk1.8.0_ 171
export Hadoop_INSTALL=/home/hadoop/software/hadoop-3.3.0
export HADOOP_CONF_ DIR=$Hadoop_INSTALL/etc/hadoop
export SPARK_LOCAL_DIRS=/home/hadoop/software/spark-2.4.8-bin-hadoop2.7
export SPARK_LOCAL_DIRS=/home/hadoop/software/spark-2.4.8-bin-hadoop2. 7
#这里路径对应改为自己的文件路径即可


#三台主机都分别添加好了之后,从新启动spark集群就可以了
cd spark-2.4.8-bin-hadoop2.7
sbin/start-all.sh

3. 访问sparkUI界面时出现无法访问此网站,ip拒绝了连接请求

  • 在部署好hadoop的时候,访问sparkUI界面时出现无法王文此网站,ip拒绝了连接请求。一开始我以为是我的ip错误了,或者是master节点的ip和windows下电脑的ip不再同一个网段导致的。但是在检查之后发现ip没有错,也是和本机的ip在同一个网段的。后来看了很多博客之后都没有用。然后就只好静下心来找问题。

  •  之后我查看了master节点的日志,终于发现了问题。如下图,日志中提示MatserUI on port 8888。我才反应过来,我在配置shark-env.sh文件的时候,SPARK_MASTER_WEBUI=8888.
  •  从新访问sparkweb界面:192.168.141.184://8888 (吧8080换成8888,因为我配置的spark访问webUI的端口号是8888)  就可以了

4. 启动saprk-shell 的时候提示无法分配内存或spark-shel:44:6983 以杀死

  • 在启动saprk-shell内存的时候户提示无法分配内存或以杀死,这是因为虚拟机内存不足导致的,我看一些文章说的是吧每台虚拟机的内存改为2G即可,但是我看了自己的虚拟机,原本就是2G。

  • 后来我进入了spark-env.sh 把SPARK_WORKER_MEMORY=2g注释掉(注意,每台主机都要去注释掉)然后我是吧三台主机全部重启了,重新启动hadoop集群,启动saprk集群,之后再sprak-shell 之后就可以了。这里注释掉之后应该不用重启也是可以的,我不知道注释掉SPARK_WORKER_MEMORY=2g注释掉之后不重新启动可不可以,可以试一下。还有一种方法不注释掉SPARK_WORKER_MEMORY=2g也可以,把它改小一点就可以了。我没有试过,我看很多文章也是这样说的,应该是可以的,感兴趣的可以试一下。

  •  修改之后从新启动就成功了。


本篇文章就到这里了,这些都是自己平时遇到的问题或者自己用到的东西,然后就整理了一下,能帮助到你,若有不对或这描述不清楚的地方请指正。😁😁✌✌

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小-枝-丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值