Spark 集群环境部署

2022-04-18 13:40:03 浏览数 (1)

本篇主要记录一下Spark 集群环境搭建过程以及在搭建过程中所遇到的问题及解决方案

主体分为三步 :

一 :基础环境配置

二 :安装包下载

三 :Spark 集群配置文件修改

四 :启动spark master / slaves

五 :编写脚本

一 :基础环境配置

本部分具体步骤可以参考Hadoop集群搭建中的前半部分关于Linux环境搭建以及系统环境配置

二 :安装包下载

下载链接 :http://spark.apache.org/downloads.html

在这里选择Spark对应的Hadoop版本

三 :Spark配置修改

需要修改的文件:

1:conf/spark-env

2 : conf/slaves

3 : sbin/spark-config.sh

Spark-env 配置

export SPARK_MASTER_IP=hadoop01 // spark master进程运行节点地址 export SPARK_MASTER_PORT=7077 // spark master进程运行节点端口 export SPARK_WORKER_CORES=1 // 每个work使用的核数 export SPARK_WORKER_INSTANCES=1 // 每个节点运行的work数量 export SPARK_WORKER_MEMORY=512m // 每个节点运行work使用的内存大小

slaves配置

添加spark slaves节点host节点

hadoop01

hadoop02

hadoop03

四 :启动Spark master slaves

可以单独启动master ./sbin/start-master.sh

单独启动slave ./sbin/start-slave.sh

或者一键全部启动 ./sbin/start-all.sh

有一处错误提示 hadoop01 JAVA_HOME is not set

进入hadoop01节点,在spark-env.sh 出添加JAVA_HOME=/home/opt/java JDK目录

然后再次启动成功 :

打开浏览器访问hadoop01:8080或者 192.168.17.140:8080

可以看到spark的运行信息

liubin

异常处理 :

1 :异常信息 :在启动( start-all.sh )时,master节点 master和word进程都启动成功,但是另外两个节点work进程一直启动不起来,异常信息如下: Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/hadoop/fs/ FSDataInputStream

解决方式 :

1 :将master的防火墙关闭

2 :检查slave节点的spark文件是否与master节点的文件一致,我这里导致的问题是从master节点分发到slave节点时,过程中断导致缺少文件

2 :异常信息 :在启动spark-shell时,报如下的异常

解决方式 :

1 :首先查看问题的描述,注意查看最下端的error

异常提示提炼出来如下几句:

java.lang.IllegalArgumentException: Error while instantiating ‘org.apache.spark.sql.hive.HiveSessionState’:

Caused by: java.lang.RuntimeException: java.net.ConnectException: Call From hadoop01/192.168.17.140 to hadoop01:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused

<console>:14: error: not found: value spark import spark.implicits._ ^ <console>:14: error: not found: value spark import spark.sql ^

解决思路:

1:定位问题,第一段提示初始化hivesessinstate异常

2:从hadoop01连接到9000失败

3:没有找到spark.implicits._ ,spark.sql 包

解决:

起初以为是版本问题,就重新下载了一个版本,并且将本机的hadoop所有相关进程全部暂停,结果新版本本机启动依旧是这个问题

在仔细查看了一下配置,没有对于9000端口的配置,9000端口是hdfs core-site.xml 中的配置 ,经过上网查看资料得知,spark-shell启动时,会检测hadoop环境,如果检测到有hadoop就会去试图链接hadoop。

解决方法 :

1 :确保期间,重启所有节点

2 :删除 /tmp 下的所有文件

3 :namenode 格式化

4 : 启动hadoop所有进程

5 :启动spark-shell 成功

0 人点赞