配置Spark standalone集群启动
来源:互联网 发布:avmoo最新域名2016 3 编辑:程序博客网 时间:2024/06/08 12:54
前言
想在本地提交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/currentexport 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的机器,例如:
localhosthadoop-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=hadoop1export SPARK_MASTER_PORT=7077export SPARK_WORKER_CORES=1export SPARK_WORDER_INSTANCES=1export 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集群启动
- spark standalone 集群配置
- spark部署standalone集群
- Spark standalone集群安装
- spark集群搭建,standalone
- Spark Standalone如何通过start-all.sh启动集群
- spark standalone模式配置
- Spark Standalone环境配置
- Spark Standalone集群安装介绍
- spark的standalone集群搭建
- Spark -5:Standalone 集群模式
- spark standalone 集群环境搭建
- Java连接Spark Standalone集群
- spark standalone集群模式搭建
- Spark 集群搭建从零开始之3 Spark Standalone集群安装、配置与测试
- Spark 启动过程(standalone)
- Standalone spark-env.sh 配置
- Spark Standalone Mode安装配置
- [数据库] Navicat for MySQL换种思维解决插入同时更新数据
- 分析BatteryService服务的获取过程
- 将算术表达式由中序表达式转为后序表达式
- Java IO流
- Java的错误类型
- 配置Spark standalone集群启动
- 一段解析字符串中单词的C语言小程序
- 可变参数之auto-boxing
- C#.NET系列(一):入门,关于C#.NET以及类与命名空间的简介
- 内核对新板子的支持
- 面试题目,金融行业交易金额小写转换为大写的方法,我写的几个版本
- pip常用命令
- iOS 8.0新特性之指纹解锁
- 喵哈哈村的狼人杀大战(5)