参考自:Spark部署三种方式介绍:YARN模式、Standalone模式、HA模式
http://www.aboutyun.com/forum.php?mod=viewthread&tid=7115
(出处: about云开发)

1.Yarn模式由谁来作为客户端提交作业给YARN?

2.SPARK_HADOOP_VERSION=2.2.0 SPARK_YARN=true ./sbt/sbt assembly的作用是什么?

3.Standalone 模式dist目录的作用是什么?

4.recoveryDirectory最好是能够使用一个nfs的原因是什么?

Spark的部署让人有点儿困惑,有些需要注意的事项,本来我已经装成功了YARN模式的,但是发现了一些问题,出现错误看日志信息,完全看不懂那个错误信息,所以才打算翻译Standalone的部署的文章。第一部分,我先说一下YARN模式的部署方法。第二部分才是Standalone的方式。

我们首先看一下Spark的结构图,和hadoop的差不多。

1.YARN模式

采用Yarn模式的话,其实就是把spark作为一个客户端提交作业给YARN,实际运行程序的是YARN,就不需要部署多个节点,部署一个节点就可以了。

把从官网下载的压缩包在linux下解压之后,进入它的根目录,没有安装git的,先执行yum install git安装git

1)运行这个命令: SPARK_HADOOP_VERSION=2.2.0 SPARK_YARN=true ./sbt/sbt assembly

就等着吧,它会下载很多jar包啥的,这个过程可能会卡死,卡死的就退出之后,重新执行上面的命令。

2)编辑conf目录下的spark-env.sh(原来的是.template结尾的,cp一份命名为spark-env.sh),添加上HADOOP_CONF_DIR参数

HADOOP_CONF_DIR=/etc/hadoop/conf

3)运行一下demo看看,能出结果 Pi is roughly 3.13794

SPARK_JAR=./assembly/target/scala-2.9.3/spark-assembly_2.9.3-0.8.1-incubating-hadoop2.2.0.jar \
./spark-class org.apache.spark.deploy.yarn.Client \
--jar examples/target/scala-2.9.3/spark-examples-assembly-0.8.1-incubating.jar \
--class org.apache.spark.examples.SparkPi \
--args yarn-standalone \
--num-workers 3 \
--master-memory 1g \
--worker-memory 1g \
--worker-cores 1

2.Standalone模式

下面我们就讲一下怎么部署Standalone,参考页面是http://spark.incubator.apache.or ... ark-standalone.html

这里我们要一个干净的环境,刚解压出来的,运行之前的命令的时候不能再用了,会报错的。

1)打开make-distribution.sh,修改SPARK_HADOOP_VERSION=2.2.0,然后执行./make-distribution.sh, 然后会生成一个dist目录,这个目录就是我们要部署的内容。官方推荐是先把master跑起来,再部署别的节点,大家看看bin目录下面的脚本,和hadoop的差不多的。行,那就先启动master,执行

./bin/start-master.sh

2)部署dist的目录到各个节点,然后通过这个命令来连接master节点

./spark-class org.apache.spark.deploy.worker.Worker spark://IP:PORT

3)然后在主节点查看一下http://localhost:8080 ,查看一下子节点是否在这里,如果在,就说明连接成功了。

4) 部署成功之后,想要在上面部署程序的话,在执行./spark-shell的时候,要加上MASTER这个参数。

MASTER=spark://IP:PORT ./spark-shell

3.High Alailability(高可用)

Spark采用Standalone模式的话,Spark本身是一个master/slaves的模式,这样就会存在单点问题,Spark采用的是zookeeper作为它的active-standby切换的工具,设置也很简单。一个完整的切换需要1-2分钟的时间,这个时候新提交的作业会受到影响,之前提交到作业不会受到影响。

在spark-env.sh添加以下设置:

//设置下面三项JVM参数,具体的设置方式在下面
//spark.deploy.recoveryMode=ZOOKEEPER
//spark.deploy.zookeeper.url=192.168.1.100:2181,192.168.1.101:2181
// /spark是默认的,可以不写
//spark.deploy.zookeeper.dir=/spark export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop.Master:2181,hadoop.SlaveT1:2181,hadoop.SlaveT2:2181"

这里就有一个问题了,集群里面有多个master,我们连接的时候,连接谁?用过hbase的都知道是先连接的zookeeper,但是Spark采用的是另外的一种方式,如果我们有多个master的话,实例化SparkContext的话,使用spark://host1:port1,host2:port2这样的地址,这样它会同时注册两个,一个失效了,还有另外一个。

如果不愿意配置高可用的话,只是想失败的时候,再恢复一下,重新启动的话,那就使用FILESYSTEM的使用,指定一个目录,把当前的各个节点的状态写入到文件系统。

spark.deploy.recoveryMode=FILESYSTEM
spark.deploy.recoveryDirectory=/usr/lib/spark/dataDir

当 stop-master.sh来杀掉master之后,状态没有及时更新,再次启动的时候,会增加一分钟的启动时间来等待原来的连接超时。

recoveryDirectory最好是能够使用一个nfs,这样一个master失败之后,就可以启动另外一个master了。

Spark部署三种方式介绍:YARN模式、Standalone模式、HA模式的更多相关文章

  1. #Eclipse web工程 部署 三种方式 3

    Eclipse web工程 部署 三种方式 3.热部署 在Eclipse中,实现 修改一个.java文件或者.jsp文件甚至是配置文件,不需要重启WEB服务器的前提下让修改生效,实现tomcat自动加 ...

  2. Eclipse web工程 部署 三种方式 2

    Eclipse web工程 部署 三种方式 2.插件 tomcat插件下载: http://www.eclipsetotale.com/tomcatPlugin.html 解压缩后, com.sysd ...

  3. Eclipse web工程 部署 三种方式 1

    Eclipse web工程 部署 三种方式 1.run on 前提: 安装 好 eclipse.jdk.tomcat 然后 新建一个 web工程 注意此处Default output folder 最 ...

  4. Hive快捷查询:不启用Mapreduce job启用Fetch task三种方式介绍

    如果查询表的某一列,Hive中默认会启用MapReduce job来完成这个任务,如下: hive>select id,name from m limit 10;--执行时hive会启用MapR ...

  5. 011-HQL中级1-Hive快捷查询:不启用Mapreduce job启用Fetch task三种方式介绍

    如果你想查询某个表的某一列,Hive默认是会启用MapReduce Job来完成这个任务,如下: hive; Total MapReduce jobs Launching Job out since ...

  6. Web服务器处理动态程序三种方式及Apache配置

    模块.CGI.FastCGI三种方式介绍 以PHP脚本为例: 模块方式是指Web服务器通过libphp5.so模块调用PHP服务,模块将相关函数嵌入Web服务请求处理流程,不需要额外解释器进程.注意, ...

  7. 【Struts2】Struts2获取session的三种方式

    1.Map<String,Object> map =  ActionContext.getContext().getSession(); 2.HttpSession session = S ...

  8. 关于tomcat部署应用的三种方式

    关于tomcat部署应用虽然不是一个经常的操作,因为一旦选择了一种部署方式,我们其他的应用就会不经大脑的使用这种既定模式, 如果不使用这种部署方式,但是对于其他的部署方式不是很清楚的话,很容易抓瞎,所 ...

  9. 在Tomcat中部署web项目的三种方式

    搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...

随机推荐

  1. js 中 substring() 和 substr() 提取字符

    提取字符串substring() substring() 方法用于提取字符串中介于两个指定下标之间的字符. 语法: stringObject.substring(startPos,stopPos)  ...

  2. .NET LINQ基本查询操作

    获取数据源      在 LINQ 查询中,第一步是指定数据源.像在大多数编程语言中一样,在 C# 中,必须先声明变量,才能使用它.在 LINQ 查询中,最先使用 from 子句的目的是引入数据源 ( ...

  3. TFS二次开发系列:三、TFS二次开发的第一个实例

    首先我们需要认识TFS二次开发的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS ...

  4. ngx_image_thumb模块生成缩略图

    ngx_image_thumb是nginx中用来生成缩略图的模块. 编译前确定已经安装了libcurl-dev libgd2-dev libpcre-dev gd-devel pcre-devel l ...

  5. 电脑莫名其妙的被装上了流氓软件DNSunlocker的解决办法

    重大更新:之前说的这些方法只能删除流氓文件,不能解决其弹出机具诱惑性的广告,网络经常不好用 经过测试,使用Malwarebytes Anti-Malware可以彻底解决这个问题,还能发现更多隐藏在你电 ...

  6. Oracle资源管理器介绍(一)

        数据库资源管理器通过控制数据库内部的执行调度来控制资源在各个会话之间的分布.通过控制所要运行的会话以及会话运行的时间长度,数据库资源管理器可以确保资源分布与计划指令相匹配,因此也符合业务目标. ...

  7. jsf初学解决faces 中文输入乱码问题

    中文乱码,貌似在java里很常见,请看简单代码: 很简单的faces <div class="td-block"> <h:outputLabel class=&q ...

  8. 关联挖掘和Aprioir算法

    Apriori算法 优点:易编码实现 缺点:在大数据集上可能较慢 适用数据类型:数值型或者标称型 算法过程: 关联分析是一种在大规模数据集中寻找有意思的关系的任务,这里的有意思的关系有两种:频繁项集( ...

  9. 【淘淘】Spring整合Quartz框架

    我在外面工作实习的时候,我们做的项目是一个日报子系统,也就是定时定点为公司生成一些报表数据还有一些数据反馈.这时候我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.当时,我做 ...

  10. Hibernate的一级缓存

    Hibernate的一级缓存 什么是缓存:缓存将数据库/硬盘上文件中数据,放入到缓存中(就是内存中一块空间).当再次使用的使用,可以直接从内存中获取 缓存的好处:提升程序运行的效率.缓存技术是Hibe ...