Spark Standalone
环境:CentOS 6.6 x64 选用Spark版本 1.4.1、Zookeeper 3.4.6
一、安装
1、Spark运行模式
Local:使用于windows和linux平台(多用于测试,细分可分为5种情况)
Standalone:spark集群模式,使用spark自己的调度方式
On Yarn:运行在Hadoop 2的Yarn资源管理框架之上,由Yarn负责资源管理,Spark负责任务调度和计算(又可分为2种情况)
On Mesos:Mesos是一个类似Yarn的资源调度框架,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行Hadoop、Spark等框架。同上
On Cloud:Spark支持HDFS、S3等多种分布式存储系统,可以进行云存储,例如AWS 的 EC2,使用这个模式能很方便的访问 Amazon的 S3
2、Standalone模式集群安装
2.1、前置环境准备
安装好JDK,推荐版本: 1.7.x;
设置SSH免密码登录、hosts、hostname、静态ip、iptables等
2.2、下载、解压安装包到指定目录下(注意版本问题):
# wget http://219.238.7.75/files/5165000007D0B131/www.eu.apache.org/dist/spark/spark-1.4.1/spark-1.4.1-bin-hadoop2.6.tgz
# tar -zxvf softs/spark-1.4.-bin-hadoop2..tgz -C /usr/local/
# cd /usr/local/
# mv spark-1.4.-bin-hadoop2./ spark-1.4.
2.3、修改配置文件
(1)修改spark-env.sh,根据实际情况,在文件末尾添加参数
# cd spark-1.4./conf/
# cp spark-env.sh.template spark-env.sh
# vim spark-env.sh
配置参数说明:
基本配置:
export JAVA_HOME=/opt/jdk1..0_45
export SPARK_MASTER_IP=127.0.0.1 #指定主节点,可以填写ip或者主机名,所以要在前置环境中配置好hosts文件里ip和hostname的映射关系
export SPARK_WORKER_CORES= #配置worker节点的cpu核数
export SPARK_MASTER_PORT= #spark URL端口,如 spark://master:7076
export SPARK_MASTER_WEBUI_PORT= #master webUI地址
export SPARK_WORKER_WEBUI_PORT= #worker webUI地址
export SPARK_WORKER_MEMORY=10g #每个worker占多少内存
高级参数:
export SPARK_JAVA_OPTS="-verbose:gc -XX:-PrintGCDetails -XX:+PrintGCTimeStamps” #用来设置GC参数
export SPARK_WORKER_INSTANCES= #启动多少个worker,一台从节点机器可以有多个WORKER,一个worker启动一个JVM
# 提示:SPARK_WORKER_CORES * SPARK_WORKER_INSTANCES = 每台机器总cores
# 应用场景:单台服务器的内存超过200G时。原因是单个机器内存配置超过200G时配置,因为java VM在超过200G的服务器上性能不好。 export SPARK_PID_DIR=/usr/local/spark/tmp #worker.pid或者master.pid默认位置在/tmp 文件夹
# 说明:RHEL6系统默认会每隔30天自动清理/tmp文件夹 export spark.local.dir=/opt1/spark, /opt2/spark, /opt3/spark #各个磁盘挂载到不同opt目录下面
# 说明:这是spark写shuffle输出的地⽅,增加IO输出到不同的磁盘等于加快了执行速度
注意:参数和=号之间没有空格。
(2)创建slaves文件
创建slaves文件,将全部节点的hostname或者ip列表添加进去。
(3)分发软件包
将上述配置好的软件包用scp工具分发到各个节点上的同一目录。
2.4、集群启动与验证
(1)启动集群各节点
# sbin/start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /usr/local/spark-1.4./sbin/../logs/spark-root-org.apache.spark.deploy.master.Master--node0.out
node0: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark-1.4./sbin/../logs/spark-root-org.apache.spark.deploy.worker.Worker--node0.out
node0: failed to launch org.apache.spark.deploy.worker.Worker:
node0: full log in /usr/local/spark-1.4./sbin/../logs/spark-root-org.apache.spark.deploy.worker.Worker--node0.out
# jps #注意:启动有延迟,可以用jps命令查看进程,如果启动成功后会有Master和Worker进程
Master
Worker
Jps
(2)验证
浏览器访问对应节点的8080端口,如果能正常访问说明集群搭建成功。
注意:1、Windows下访问时需要设置hosts文件,其映射列表从Linux上的hosts复制即可。
2、如果8080端口被其他程序占用,可以修改其他端口,方法:
编辑文件:sbin/start-master.sh,找到SPARK_MASTER_WEBUI_PORT=8080 进行修改即可。
3、Standalone配置HA
3.1、下载、解压Zookeeper
# wget http://124.205.69.171/files/71380000000A6162/mirrors.cnnic.cn/apache/zookeeper/stable/zookeeper-3.4.6.tar.gz^C
# tar -zxvf zookeeper-3.4..tar.gz -C /usr/local
3.2、配置zk.conf文件
# mv zookeeper-3.4. zookeeper
# cd zookeeper/conf
# vim zoo.cfg
参数如下:
tickTime=
initLimit=
syncLimit= dataDir=/usr/local/zookeeper/data #需要修改的参数
logDir=/usr/local/zookeeper/logs #需要修改的参数 clientPort= server.=IP0:: #需要修改的参数,注意这里对应集群的IP
server.=IP1::
server.=IP2::
server.=IP3::
注意重命名zookeeper文件名,否则带有-3.4.6可能会导致zk启动失败
3.3、创建节点标识
在数据存储目录下创建当前节点的标识myid
# cd zookeeper/
# mkdir data
# cd data/
# vim myid
配置成功后,将Zookeeper软件包分发到各个节点上的同一位置。
注意:修改各个节点的myid标识,要和当前zoo.cfg中IP和标识的对应关系一致。
3.4、启动、验证zk集群
(1)启动
在各个节点上均启动zk,执行指令如下:
# bin/zkServer.sh start
(2)验证
# bin/zkServer.sh status #查看当前节点上的zk角色
# jps #查看进程
3.4、配置Spark
(1)停止Spark
# /usr/local/spark-1.4./sbin/stop-all.sh
注:HA的前提是standalone模式已经能够正常运行。
(2)修改spark-env.sh
# cd /usr/local/spark-1.4./conf
# vim spark-env.sh
注释掉SPARK_MASTER_IP参数,不强制某一节点为主节点。
添加如下参数:
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node0:2181,node1:2181 -Dspark.deploy.zookeeper.dir=/spark" #指定Zookeeper的地址及HA方式给Spark
(3)分发配置文件,启动各个节点
使用scp命令分发新的配置文件spark-env.sh到各节点,覆盖原文件,并用sbin/start-all.sh启动各个节点上的Spark。
3.5、验证
在master所在的机器执行jps,查看进程,然后在另一节点上执行sbin/start-master.sh。
此时,在8080端口访问的Web页面上,可以看到集群有两个master,一个处于活跃状态active,另一个处于备用状态standby。
强制关闭活跃master节点上的Spark :sbin/stop-master.sh,过一会儿若备用的master变为活跃状态,说明HA配置成功。
4、可能出现的问题及解决方案
(1)Zookeeper集群启动失败
一:集群时钟不同步,解决同步集群时钟;根据实际情况,可考虑自己在集群内部部署一台时钟服务器。
二:时钟同步正常,但集群不能正常操作,通过zkCli连接某些节点时,一直打印日志:
解决方案:bin/zkCleanup.sh count 3
三: 查看myid、zk.cfg等配置文件有无遗漏,是否有配置冲突等现象;
删除zk节点中,data目录下除myid文件之外的所有内容
将Zookeeper的文件夹名称里的-3.4.6等版本信息去掉;
扩展参考:
Spark运行模式及原理(一) - 图书-炼数成金-Dataguru专业数据分析社区 http://www.dataguru.cn/article-6803-1.html
Spark Standalone的更多相关文章
- spark standalone ha spark submit
when you build a spark standalone ha cluster, when you submit your app, you should send it to the l ...
- Spark standalone HA
配置Spark standalone HA 主机:node1,node2,node3 master: node1,node2 slave:node2,node3 修改配置文件: node1,node3 ...
- spark standalone zookeeper HA部署方式
虽然spark master挂掉的几率很低,不过还是被我遇到了一次.以前在spark standalone的文章中也介绍过standalone的ha,现在详细说下部署流程,其实也比较简单. 一.机器 ...
- Windows下IntelliJ IDEA中运行Spark Standalone
ZHUAN http://www.cnblogs.com/one--way/archive/2016/08/29/5818989.html http://www.cnblogs.com/one--wa ...
- (二)win7下用Intelij IDEA 远程调试spark standalone 集群
关于这个spark的环境搭建了好久,踩了一堆坑,今天 环境: WIN7笔记本 spark 集群(4个虚拟机搭建的) Intelij IDEA15 scala-2.10.4 java-1.7.0 版本 ...
- 【原】Spark Standalone模式
Spark Standalone模式 安装Spark Standalone集群 手动启动集群 集群创建脚本 提交应用到集群 创建Spark应用 资源调度及分配 监控与日志 与Hadoop共存 配置网络 ...
- Spark standalone安装(最小化集群部署)
Spark standalone安装-最小化集群部署(Spark官方建议使用Standalone模式) 集群规划: 主机 IP ...
- Spark Standalone模式应用程序开发
作者:过往记忆 | 新浪微博:左手牵右手TEL | 能够转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明博客地址:http://www.iteblog.com/文章标题:<Spar ...
- Spark Standalone Mode Configuration
For currently popular distributed framework Spark, here is the intro and step to configure the spark ...
- Spark Standalone spark-env.sh
export JAVA_HOME=/app/jdk export SPARK_MASTER_PORT=7077 export SPARK_MASTER_WEBUI_PORT=8080 export S ...
随机推荐
- UNIX文件的权限之“设置用户ID位”
用stat函数可以获取一个文件的状态信息,原型是这样的: int stat(const char *path, struct stat *buf); 其中结构体stat的结构: struct stat ...
- 3、DNS服务器功能(正向、反向解析)
实验目的: 建立gr.org域的主名称服务器.解析: 名称 IP 用途 ns.gr.org 192.168.170.3 名称服务器 www.gr.org 192 ...
- codevs1022 覆盖[Hungary 二分图最大匹配]
codevs1022 覆盖 有一个N×M的单位方格中,其中有些方格是水塘,其他方格是陆地.如果要用1×2的矩阵区覆盖(覆盖过程不容许有任何部分重叠)这个陆地,那么最多可以覆盖多少陆地面积. 输入描述 ...
- 使用 v-cloak 防止页面加载时出现 vuejs 的变量名
使用 vuejs 做了一个简单的功能页面,逻辑是,页面加载后获取当前的经纬度,然后通过 ajax 从后台拉取附近的小区列表.但是 bug 出现了,在显示小区列表之前,会闪现小区名对应的 vuejs 变 ...
- Jquery 操作CheckBox ,RadioButtonList,DropDownList
Jquery版本2.1.4 CheckBox 1.获取值: $("#chb").prop("checked"); RadioButtonList 1.获取值: ...
- c语言游戏推箱子
前两天做了推箱子小游戏,看似简单的一个小游戏背后却 有巨大的秘密,这秘密就是一大堆逻辑. 自从学习了函数过后,的确是解决了很多问题,而且调用很方便,尽管我现在都不是很会调用. 写完一个函数,准备测试一 ...
- C/C++实践笔记 008
逗号运算符优先级最低逗号运算符的值是最后一个的值int a=(1,2);执行结果为2逗号运算符每一条语句都要执行,执行方向从左向右 三目运算符表达式1?表达式2:表达式3 C语言里只有0和非0的区别 ...
- 微信快速开发框架(八)-- V2.3--增加语音识别及网页获取用户信息,代码已更新至Github
不知不觉,版本以每周更新一次的脚步进行着,接下来应该是重构我的代码及框架的结构,有朋友反应代码有点乱,确实如此,当时写的时候只是按照订阅号来写的,后来才慢慢增加到支持API接口.目前还在开发第三方微信 ...
- sql特殊语句
1.联表查询 select * from zongyi zongyiitem where zongyi.id=zongyiitem.id 2.联表删除 delete from zongyi ,zong ...
- 五种开源协议(GPL,LGPL,BSD,MIT,Apache)
什么是许可协议? 什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的目的是,向使用你产品的人提供 一定的权限. 不管产品是免费向公众分发,还 ...