usr/spark start slave.sh/sbin/start-all.sh 启动 spark start slave.sh失败,怎么搞

spark 安装步骤_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
spark 安装步骤
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢14770人阅读
除了在 Mesos 或 YARN 集群上运行之外, Spark 还提供一个简单的独立部署的模块。你通过手动开始master和workers 来启动一个独立的集群。你也可以利用我们提供的脚本&.它也可以运行这些进程在单个机器上进行测试。
安装 Spark 独立集群
部署Spark最简单的方法就是运行./make-distribution.sh 脚本来创建一个2进制发行版.这个版本能部署在任意运行这java的机子上,不需要安装 Scala.
建议的步棸是先在一个节点部署并启动master,获得 master spark URL,在dist/这个目录下修改conf/spark-env.sh然后再部署到其他的节点上。
手动启动集群
通过如下命令启动单独模式的master服务:
./bin/start-master.sh
一旦启动,master就会输出spark://IP:PORT以提示连接 workers 的方式。也可以通过参数“master”给SparkContext来连接集群的作业.你可以在master的web管理界面上看到这样的地址,默认是http://localhost:8080.
同样,你可以启动一个或者多个worker,通过下面的语句使之和master建立连接:
./spark-class org.apache.spark.deploy.worker.Worker spark://IP:PORT
启动一个worker后,查看 master的 web管理界面 (默认http://localhost:8080),上面列出了新近加入的节点的CPU和内存的信息。(不包括给操作系统预留的内存空间)。
最后,以下&master 和 worker的一些配置选项:
-i IP,--ip IP
要监听的IP地址或者 DNS 机器名
-p PORT,--port PORT
要监听的端口 (默认: master 7077 ;worker随机)
--webui-port PORT
web UI端口 (默认: master 8080, worker 8081)
-c CORES,--cores CORES
作业可用的CPU内核数量(默认: 所有可用);只在worker上
-m MEM,--memory MEM
作业可使用的内存容量,默认格式1000M或者 2G (默认:& 所有RAM去掉给操作系统用的1 GB); 只在worker上。
-d DIR,--work-dir DIR
伸缩空间和日志输入的目录路径
(默认: SPARK_HOME/work); 只在worker上
集群启动脚本
通过脚本启动 Spark独立集群时, 需要在Spark 目录下创建一个文件 conf/slaves, 列出所有启动的的Spark workers的主机名,每行一条记录. Master必须能够实现通过ssh(使用私钥)访问worker机器,可以使用ssh localhost来测试。
一旦你建立了这个档案,你可以通过以下脚本停止或启动集群, 这些脚本基于 Hadoop’s 部署脚本, 在SPARK_HOME/bin目录:
注意:只能在运行Spark的master主机上执行上述脚本,而不是你的本地机器。
你可以通过conf/spark-env.sh进一步配置整个集群的环境变量。这个文件可以用conf/spark-env.sh.template当模版复制生成。然后,复制到所有的worker机器上才奏效。下面给出一些可选的参数以及含义:
Environment Variable
SPARK_MASTER_IP
绑定一个外部IP给master.
SPARK_MASTER_PORT
从另外一个端口启动master(默认: 7077)
SPARK_MASTER_WEBUI_PORT
Master的web UI端口 (默认: 8080)
SPARK_WORKER_PORT
启动Spark worker 的专用端口(默认:随机)
SPARK_WORKER_DIR
伸缩空间和日志输入的目录路径(默认:
SPARK_HOME/work);
SPARK_WORKER_CORES
作业可用的CPU内核数量(默认: 所有可用的);
SPARK_WORKER_MEMORY
作业可使用的内存容量,默认格式1000M或者 2G (默认:& 所有RAM去掉给操作系统用的1 GB);注意:每个作业自己的内存空间由SPARK_MEM决定。
SPARK_WORKER_WEBUI_PORT
worker 的web UI 启动端口(默认: 8081)
SPARK_WORKER_INSTANCES
没太机器上运行worker数量 (默认: 1). 当你有一个非常强大的计算机的时候和需要多个Spark worker进程的时候你可以修改这个默认值大于1 . 如果你设置了这个值。要确保SPARK_WORKER_CORE 明确限制每一个r worker的核心数, 否则每个worker
将尝试使用所有的核心
SPARK_DAEMON_MEMORY
分配给Spark master和 worker 守护进程的内存空间 (默认: 512m)
SPARK_DAEMON_JAVA_OPTS
Spark master 和 worker守护进程的JVM 选项(默认: none)
注意:&启动脚本目前不支持Windows。要运行一个Spark&集群在Windows上,手动启动master
和 workers&
集群连接应用程序
在Spark 集群上运行一个应用,只需通过master的 spark://IP:PORT 链接传递到SparkContext构造器
在集群上运行交互式的Spark 命令, 运行如下命令:
MASTER=spark://IP:PORT ./spark-shell
注意,如果你在一个 spark集群上运行了spark-shell脚本,spark-shell 将通过在conf/spark-env.sh下的SPARK_MASTER_IP和SPARK_MASTER_PORT自动设置MASTER .
你也可以传递一个参数-c &numCores& 来控制 spark-shell 在集群上使用的核心数量
单独部署模式目前只支持FIFO作业调度策略。不过,为了允许多并发执行,你可以控制每一个应用可获得资源的最大值。默认情况下,如果系统中只运行一个应用,它就会获得所有资源。使用类似System.setProperty(&spark.cores.max&,&10&)的语句可以获得内核的数量。这个数值在初始化SparkContext之前必须设置好。
监控和日志
Spark单独部署模式提供了一个基于WEB的集群监视器。master和每一个worker都会有一个WEB UI来显示集群的统计信息。默认情况下,可以通过8080端口访问master的WEB UI。当然也可以通过配置文件或者命令来修改这个端口值。
另外,每个slave节点上作业运行的日志也会详细的记录到默认的SPARK_HOME/work目录下。每个作业会对应两个文件,stdout和stderr,包含了控制台上的所有的历史输出。
和Hadoop同时运行
Spark&作为一个独立的服务,可以和现有的Hadoop集群同时运行。 通过hdfs:// URL,Spark可以访问hadoop集群的HDFS上的数据。(比如地址可以写成hdfs://&namenode&:9000/path,从Namenode的web UI可以获得更确切的URL).或者,专门为Spark搭建一个集群,通过网络访问其他HDFS上的数据,这样肯定不如访问本地数据速度快,除非是都在同一个局域网内。(比如几台Spark机器和Hadoop集群在同一机架上)。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1181615次
积分:17975
积分:17975
排名:第333名
原创:730篇
转载:23篇
译文:176篇
评论:113条
(71)(19)(4)(9)(24)(3)(14)(3)(1)(2)(4)(2)(3)(2)(4)(2)(6)(6)(2)(5)(5)(4)(13)(70)(80)(64)(37)(74)(56)(11)(19)(29)(39)(62)(75)(17)(36)(9)(19)(14)(3)(4)(4)(5)Apache Spark技术实战之6 -- spark-submit常见问题及其解决 - 推酷
Apache Spark技术实战之6 -- spark-submit常见问题及其解决
除本人同意外,严禁一切转载,徽沪一郎。
编写了独立运行的Spark Application之后,需要将其提交到Spark Cluster中运行,一般会采用spark-submit来进行应用的提交,在使用spark-submit的过程中,有哪些事情需要注意的呢?
本文试就此做一个小小的总结。
spark-defaults.conf
Spark-defaults.conf的作用范围要搞清楚,编辑driver所在机器上的spark-defaults.conf,该文件会影响 到driver所提交运行的application,及专门为该application提供计算资源的executor的启动参数
只需要在driver所在的机器上编辑该文件,不需要在worker或master所运行的机器上编辑该文件
举个实际的例子
spark.executor.extraJavaOptions
-XX:MaxPermSize=896m
spark.executor.memory
spark.serializer
org.apache.spark.serializer.KryoSerializer
spark.cores.max
spark.shuffle.manager SORT
spark.driver.memory 2g
上述配置表示为该application提供计算资源的executor启动时, heap memory需要有5g。
这里需要引起注意的是,如果worker在加入cluster的时候,申明自己所在的机器只有4g内存,那么为上述的application分配executor是,该worker不能提供任何资源,因为4g&5g,无法满足最低的资源需求。
spark-env.sh
spark-env.sh中最主要的是指定ip地址,如果运行的是master,就需要指定SPARK_MASTER_IP,如果准备运行driver或worker就需要指定SPARK_LOCAL_IP,要和本机的IP地址一致,否则启动不了。
配置举例如下
export SPARK_MASTER_IP=127.0.0.1
export SPARK_LOCAL_IP=127.0.0.1
启动spark集群
第一步启动master
$SPARK_HOME/sbin/start-master.sh
第二步启动worker
$SPARK_HOME/bin/spark-class org.apache.spark.deploy.worker.Worker spark://master:7077
将master替换成MASTER实际运行的ip地址
如果想在一台机器上运行多个worker(主要是用于测试目的),那么在启动第二个及后面的worker时需要指定—webui-port的内容,否则会报端口已经被占用的错误,启动第二个用的是8083,第三个就用8084,依此类推。
$SPARK_HOME/bin/spark-class org.apache.spark.deploy.worker.Worker spark://master:7077
–webui-port 8083
这种启动worker的方式只是为了测试是启动方便,正规的方式是用SPARK_HOME/sbin/start-slaves.sh来启动多个worker,由于涉及到ssh的配置,比较麻烦,我这是图简单的办法。
用$SPARK\_HOME/sbin/start-slave.sh$来启动worker时有一个默认的前提,即在每台机器上$SPARK_HOME必须在同一个目录。
使用相同的用户名和用户组来启动Master和Worker,否则Executor在启动后会报连接无法建立的错误。
我在实际的使用当中,遇到”no route to host”的错误信息,起初还是认为网络没有配置好,后来网络原因排查之后,忽然意识到有可能使用了不同的用户名和用户组,使用相同的用户名/用户组之后,问题消失。
spark-submit
spark集群运行正常之后,接下来的问题就是提交application到集群运行了。
Spark-submit用于Spark application的提交和运行,在使用这个指令的时候最大的困惑就是如何指定应用所需要的依赖包。
首先查看一下spark-submit的帮助文件
$SPARK_HOME/bin/submit --help
有几个选项可以用来指定所依赖的库,分别为
--driver-class-path driver所依赖的包,多个包之间用冒号(:)分割
--jars & driver和executor都需要的包,多个包之间用逗号(,)分割
为了简单起见,就通过—jars来指定依赖,运行指令如下
$SPARK_HOME/bin/spark-submit –class 应用程序的类名 \
--master spark://master:7077 \
--jars 依赖的库文件 \
spark应用程序的jar包
需要提醒的时,这些上传到worker的文件,需要定时做手工清理,否则会占用许多磁盘空间
由于Spark在计算的时候会将中间结果存储到/tmp目录,而目前linux又都支持tmpfs,其实说白了就是将/tmp目录挂载到内存当中。
那么这里就存在一个问题,中间结果过多导致/tmp目录写满而出现如下错误
No Space Left on the device
解决办法就是针对tmp目录不启用tmpfs,修改/etc/fstab
有时可能会遇到
java.lang.OutOfMemory, unable to create new native thread
的错误,导致这种错误的原因比较多。
有一种情况并非真的是内存不足引起的,而是由于超出了允许的最大文件句柄数或最大进程数。
排查的步骤就是查看一下允许打开的文件句柄数和最大进程数,如果数值过低,使用ulimit将其调高之后,再试试问题是否已经解决。
修改允许打开的最大进程数
ulimit -u 65535
修改允许打开的文件句柄
ulimit -n 65535
spark-shell
上面讲述了spark-submit提交Spark Application如何解决依赖库的问题,那如果是spark-shell的话,该怎么办呢?
spark-shell的话,利用--driver-class-path选项来指定所依赖的jar文件,注意的是--driver-class-path后如果需要跟着多个jar文件的话,jar文件之间使用冒号(:)来分割。
本文部分内容已由本人徽沪一郎在CSDN中通过”
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 spark start slave.sh 的文章

 

随机推荐