配置Spark standalone集群启动
2017-03-12 01:51
405 查看
前言
想在本地提交spark程序,在网上找了一些文章。在本地提交的前提就是,spark以集群的方式启动。于是想以简单的standalone方式启动,但在启动的时候遇到了一些问题,下面把过程和问题总结一下。正文
前提:
已经下载到spark到机器上(master和slave),并且已经配置好了SPARK_HOME(使用版本:spark-2.1.0-bin-hadoop2.7.tgz)已经安装了java(使用版本:1.8.0_111)
启动方式1(不用做修改)
1,在Master机器上,运行$SPARK_HOME/sbin/start-master.sh,启动master。启动完后,就可以通过http://master-ip:8080网址来查看集群运行的运行状态。(这时候网址上面的“Workers”表里,还没有任何信息)
2,在Slave机器上启动Worker进程,连接到Master上。有两个方法,这两个方法都可以完成这个工作:
运行
$SPARK_HOME/bin/spark-class org.apache.spark.deploy.worker.Worker spark://master-ip:7077
运行
$SPARK_HOME/sbin/start-slave.sh spark://master-ip:7077
启动完后,刷上面的web页面,就可以在“Workers”里看到新启动的Worker。
3,进行测试。以集群的方式启动spark-shell:
$SPARK_HOME/bin/spark-shell --master spark://master-ip:7077。
(
--master spark://master-ip:7077中,
master是指定Shell连接到集群
spark://master-ip:7077是集群服务的地址,这个地址在
http://master-ip:8080页面的最上面就可以看到)
当连接成功后,就可以在上面的web页面中看到在“Running Applications”里有类似下面的内容:
Application ID:app-20170312004859-0000 Name:Spark shell
还有一种测试方法,就是使用
JPS命令,查看Master上的
master进程是否启动,Slave上的
worker进程是否已经启动。
启动方式2(需要修改)
1,把$SPARK_HOME/conf/spark-env.sh.template文件,拷贝一份命名为:
spark-env.sh。然后编辑
spark-env.sh文件,追加
JAVA_HOME的设置,例如:
export JAVA_HOME=/usr/local/java/current export PATH=$PATH:$JAVA_HOME/bin
如果不进行这步的设置,在使用
spark-all.sh进行启动master和slave的话,启动到slave时,就会出现
JAVA_HOME is not set的错误提示。
2,把Master下的
$SPARK_HOME/conf/slaves.template文件,拷贝一份命名为:
slave。然后编辑
slave文件,追加slave的机器,例如:
localhost hadoop-slave-1
(
localhost是原来文件自带的。如果有
localhost,master机器上也会启动一个worker)
3,使用
scp -R spakr_dir hadoop@slave:~命令,把配置好的spark拷贝到slave机器上,替换掉原来的spark目录。
4,在Master机器上,使用
$SPARK_HOME/sbin/start-all.sh进行启动master和slave。
5,进行测试。测试方法和上面一样。
遇到的问题
在配置过程中,启动spark-shell进行测试时,发生了下面的错误:
ERROR cluster.SparkDeploySchedulerBackend: Application has been killed. Reason: Master removed our application: FAILED
问题原因:
spark目录下的
work目录的所属用户和用户组都是
root,不是我建立的
hadoop用户。
如何查找问题:
在网上找了找,有的说是因为
/etc/hosts设置的问题,有的说是因为防火墙没有关的问题(可以参考集群外的client节点执行Spark shell,10多秒之后自动断开),试了试,不好用,看来不是这个问题。
后来测试发现,只启动master,不启动slave的话,可以正常启动。后来使用第一种方法进行启动后,再进行测试的话,slave的错误信息被打印到屏幕上,这才知道了是slave出了问题。而看到错误信息后,也就知道了是work目录无法创建文件,然后就找到了问题的所在。
(slave机器的log位置:/usr/local/spark/logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-hadoop-slave-1.out)
其它
有的教程上说要对spark-env.sh进行下面的配置,但其实不配置也可以。
export SPARK_MASTER_IP=hadoop1 export SPARK_MASTER_PORT=7077 export SPARK_WORKER_CORES=1 export SPARK_WORDER_INSTANCES=1 export SPARK_WORKER_MEMORY=3g
如果要Spark Standalone伪分布式,可以参考文章:【Spark】Spark的Standalone模式安装部署
参考:
-spark之路第二课——spark启动方式:启动方式1参考的文章。
-【Spark】Spark的Standalone模式安装部署:启动方式2参考的文章。但这上面没有写出我遇到的问题,可能是版本不一样吧。
-Spark的Standalone模式部署:除了介绍如何配置,还介绍了关于standalone的资源调度,监控和日志,和Hadoop并用,高可用等。
- Spark入门实战系列–2.Spark编译与部署(下)–Spark编译安装:这篇介绍的比较全比较详细,各方面经验都比较少的朋友可以看一下。
相关文章推荐
- spark standalone 集群配置
- linux环境部署Spark集群(Standalone Mode)
- spark standalone模式单节点启动多个executor
- Spark Standalone Mode 单机启动Spark -- 分布式计算系统spark学习(一)
- Spark standalone集群安装
- Standalone spark-env.sh 配置
- spark standalone深入学习-核心概念\启动过程\服务down掉说明
- spark standalone集群模式搭建
- Centos中安装配置local/standalone模式和伪分布式模式hadoop集群
- Spark1.2集群环境搭建(Standalone+HA) 4G内存5个节点也是蛮拼的
- spark standalone模式单节点启动多个executor
- Java连接Spark Standalone集群
- Spark学习(三)---Spark Standalone Mode说明及参数配置详解
- spark standalone 安装(手动启动)
- spark standalone模式单节点启动多个executor
- Spark Standalone 集群部署图文分享
- Java Web提交任务到Spark Standalone集群并监控
- Spark1.2集群环境搭建(Standalone+HA) 4G内存5个节点
- Alluxio集群部署到Spark Standalone
- Spark1.2集群环境搭建(Standalone+HA) 4G内存5个节点也是蛮拼的