本篇主要记录一下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 成功