spark的集群环境安装搭建


1、spark local模式运行环境搭建

常用于本地开发测试,本地还分为local单线程和local-cluster多线程;

  • 该模式被称为Local[N]模式,是用单机的多个线程来模拟Spark分布式计算,直接运行在本地,便于调试,通常用来验证开发出来的应用程序逻辑上有没有问题。
  •   其中N代表可以使用N个线程,每个线程拥有一个core。如果不指定N,则默认是1个线程(该线程有1个core)。
  •   如果是local[*],则代表 Run Spark locally with as many worker threads as logical cores on your machine.

第一步上传压缩包并解压

上传spark压缩包到/export/softwares并解压

将我们编译之后的spark的压缩包上传到/export/softwares路径下,然后进行解压

tar -zxf spark-2.2.0-bin-2.6.0-cdh5.14.0.tgz -C /export/servers/

第二步:修改spark的配置文件

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf

cp spark-env.sh.template spark-env.sh

第三步:启动验证进入spark-shell

启动验证

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0

./bin/spark-shell  --master  local

退出spark shell客户端

:quit

第四步运行spark自带的测试jar包

执行我们spark自带的程序jar包运算圆周率

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master local[2] \

--executor-memory 1G \

--total-executor-cores 2 \

/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar \

100     

其中100表示迭代计算100次来求取我们圆周率的值,注意迭代计算的次数越多,最终求得的值就会越接近圆周率的值

2、spark的standAlone模式

第一步:修改配置文件

修改spark-env.sh

node01修改spark-env.sh

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf

vim spark-env.sh
export JAVA_HOME=/export/servers/jdk1.8.0_141

export SPARK_MASTER_HOST=node01

export SPARK_MASTER_PORT=7077

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node01:8020/spark_log"

修改slaves文件

node01修改slaves配置文件

cp slaves.template  slaves

vim slaves

node02

node03

修改spark-defaults.conf

spark的程序运行,我们为了方便调试开发,一般我们都会配置spark的运行日志,将spark程序的运行日志保存到hdfs上面,方便我们运行程序之后的开发调试

node01修改spark-defaults.conf

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf

cp spark-defaults.conf.template spark-defaults.conf

vim spark-defaults.conf
spark.eventLog.enabled  true

spark.eventLog.dir       hdfs://node01:8020/spark_log

spark.eventLog.compress true

hdfs创建日志文件存放的目录

hdfs dfs -mkdir -p /spark_log

第三步安装包分发到其他机器

node01服务器执行以下命令

cd /export/servers/

scp -r spark-2.2.0-bin-2.6.0-cdh5.14.0/ node02:$PWD

scp -r spark-2.2.0-bin-2.6.0-cdh5.14.0/ node03:$PWD

第四步:启动spark程序

node01服务器执行以下命令启动spark程序

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0

sbin/start-all.sh

sbin/start-history-server.sh

第五步:浏览器页面访问

浏览器页面访问spark

http://node01:8080/

查看spark任务的历史日志

http://node01:4000/

第六步:使用进入spark-shell

node01执行以下命令进入spark-shell

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0

bin/spark-shell  --master spark://node01:7077

退出spark-shell

scala> :quit

第七步运行spark自带的测试jar

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://node01:7077 \

--executor-memory 1G \

--total-executor-cores 2 \

/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar \

100    

其中100表示迭代计算100次来求取我们圆周率的值,注意迭代计算的次数越多,最终求得的值就会越接近圆周率的值


3、spark的HA模式

为了解决master单节点的故障,spark也支持master的高可用配置,其中spark的高可用HA模式支持两种方式,一种是手动切换,另外一种是借助zookeeper实现自动切换

第一步:停止spark集群

停止spark的所有进程

node01服务器执行以下命令停止spark集群

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0

sbin/stop-all.sh

sbin/stop-history-server.sh

第二步:修改配置文件

修改spark-env.sh

node01服务器修改spark-env.sh

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf

vim spark-env.sh
export JAVA_HOME=/export/servers/jdk1.8.0_141

#export SPARK_MASTER_HOST=node01

export SPARK_MASTER_PORT=7077

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://node01:8020/spark_log"

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node01:2181,node02:2181,node03:2181 -Dspark.deploy.zookeeper.dir=/spark"

修改slaves文件standAlone模式已经修改过,不用修改了

node01修改slaves配置文件

cp slaves.template  slaves

vim slaves
node02

node03

修改spark-defaults.confstandAlone模式已经修改过,不用修改了

spark的程序运行,我们为了方便调试开发,一般我们都会配置spark的运行日志,将spark程序的运行日志保存到hdfs上面,方便我们运行程序之后的开发调试

node01修改spark-defaults.conf

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf

cp spark-defaults.conf.template spark-defaults.conf

vim spark-defaults.conf
spark.eventLog.enabled  true

spark.eventLog.dir       hdfs://node01:8020/spark_log

spark.eventLog.compress true

hdfs创建日志文件存放的目录

hdfs dfs -mkdir -p /spark_log

第三步配置文件分发到其他服务器

node01服务器执行以下命令进行分发

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf

scp spark-env.sh node02:$PWD

scp spark-env.sh node03:$PWD

第四步:启动spark集群

node01服务器执行以下命令启动spark集群

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0

sbin/start-all.sh

sbin/start-history-server.sh

node02服务器启动master节点

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0

sbin/start-master.sh

第五步浏览器页面访问

http://node01:8080/

http://node02:8080/

第六步:进入spark-shell

spark的HA模式,进入spark-shell

node01执行以下命令进入spark-shell

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/

bin/spark-shell --master spark://node01:7077,node02:7077

第七步运行spark自带的测试jar包

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master spark://node01:7077,node02:7077 \

--executor-memory 1G \

--total-executor-cores  \

/export/servers/spark-2.2.-bin-2.6.-cdh5.14.0/examples/jars/spark-examples_2.-2.2..jar \

4、spark的on yarn模式

spark  on yarn 模式官方文档说明

http://spark.apache.org/docs/latest/running-on-yarn.html

http://spark.apache.org/docs/latest/running-on-yarn.html#configuration

如果我们的spark程序是运行在yarn上面的话,那么我们就不需要spark 的集群了,我们只需要找任意一台机器配置我们的spark的客户端提交任务到yarn集群上面去即可

小提示:如果yarn集群资源不够,我们可以在yarn-site.xml当中添加以下两个配置,然后重启yarn集群,跳过yarn集群资源的检查

<property>

<name> yarn.nodemanager.pmem-check-enabled</name

<value>false</value>

</property>

<property>

<name> yarn.nodemanager.vmem-check-enabled</name

<value>false</value>

</property>

1、环境准备

第一步:三台机器修改spark-env.sh

第一台机器修改spark-env.sh配置文件

第一天机器node01执行以下命令修改spark-env.sh配置文件

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf

vim spark-env.sh
export HADOOP_CONF_DIR=/export/servers/hadoop-2.6.-cdh5.14.0/etc/hadoop

export YARN_CONF_DIR=/export/servers/hadoop-2.6.-cdh5.14.0/etc/hadoop

将第一台机器的spark-env.sh配置文件同步到第二台和第三台机器上面去

第一台机器执行以下命令同步spark-env.sh配置文件

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf

scp spark-env.sh node02:$PWD

scp spark-env.sh node03:$PWD

第二步:三台机器添加spark环境变量

三台机器修改/etc/profile配置文件添加spark的环境变量

三台机器执行以下命令添加spark环境变量

vim /etc/profile
export SPARK_HOME=/export/servers/spark-2.2.-bin-2.6.-cdh5.14.0

export PATH=:$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH

三台机器执行source命令让修改立即生效

source /etc/profile

2、spark on  yarn  client模式提交任务

1、任务提交命令

node03服务器执行以下命令,将spark计算任务提交到yarn集群上面去

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0
bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master yarn \

--deploy-mode client \

/export/servers/spark-2.2.-bin-2.6.-cdh5.14.0/examples/jars/spark-examples_2.-2.2..jar \

2、任务提交过程解析

1、客户端提交一个Application,在客户端启动一个Driver进程。

2、Driver进程会向RS(ResourceManager)发送请求,启动AM(ApplicationMaster)的资源。

3、RS收到请求,随机选择一台NM(NodeManager)启动AM。这里的NM相当于Standalone中的Worker节点。

4、AM启动后,会向RS请求一批container资源,用于启动Executor.

RS会找到一批NM返回给AM,用于启动Executor。

5、AM会向NM发送命令启动Executor。

6、Executor启动后,会反向注册给Driver,Driver发送task到Executor,执行情况和结果返回给Driver端。

总结:

1、Yarn-client模式是适用于测试,因为Driver运行在本地,Driver会与yarn集群中的Executor进行大量的通信,会造成客户机网卡流量的大量增加.

2、 ApplicationMaster的作用:

为当前的Application申请资源

给NodeManager发送消息启动Executor。

注意:ApplicationMaster有launchExecutor和申请资源的功能,并没有作业调度的功能。

3、spark on yarn cluster模式提交任务

1、任务提交命令

node03执行以下命令提交spark任务

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0

2、任务提交过程解析

bin/spark-submit --class org.apache.spark.examples.SparkPi \

--master yarn \

--deploy-mode cluster \

--driver-memory 1g \

--executor-memory 1g \

--executor-cores  \

/export/servers/spark-2.2.-bin-2.6.-cdh5.14.0/examples/jars/spark-examples_2.-2.2..jar \

执行流程

1、客户机提交Application应用程序,发送请求到RS(ResourceManager),请求启动AM(ApplicationMaster)。

2、RS收到请求后随机在一台NM(NodeManager)上启动AM(相当于Driver端)。

3、AM启动,AM发送请求到RS,请求一批container用于启动Executor。

4、RS返回一批NM节点给AM。

5、AM连接到NM,发送请求到NM启动Executor。

6、Executor反向注册到AM所在的节点的Driver。Driver发送task到Executor。

总结

1、Yarn-Cluster主要用于生产环境中,因为Driver运行在Yarn集群中某一台nodeManager中,每次提交任务的Driver所在的机器都是随机的,不会产生某一台机器网卡流量激增的现象,缺点是任务提交后不能看到日志。只能通过yarn查看日志。

2.ApplicationMaster的作用:

为当前的Application申请资源

给nodemanager发送消息 启动Excutor。

任务调度。(这里和client模式的区别是AM具有调度能力,因为其就是Driver端,包含Driver进程)

3、 停止集群任务命令:yarn application -kill applicationID

3、访问历史日志界面

http://node01:8088/cluster/app/applicationId

注意:如果出现以下这种情况,

这是因为我们在yarn-site.xml当中缺少一行配置,在所有机器的yarn-site.xml当中添加以下配置,然后重启yarn集群以及hadoop的jobHistoryserver即可

第一步:三台机器修改yarn-site.xml配置文件

node01修改yarn-site.xml

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

vim yarn-site.xml 
<property>

         <name>yarn.log.server.url</name>

         <value>http://node01:19888/jobhistory/logs</value>

</property>

node01执行以下命令,将修改后的yarn-site.xml同步到其他机器

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

scp yarn-site.xml  node02:$PWD

scp yarn-site.xml  node03:$PWD
第二步重新启动yarn以及jobhistoryServer服务

node01执行以下命令重启yarn集群以及jobhistoryserver服务

停止yarn集群以及jobhistoryserver服务

cd /export/servers/hadoop-2.6.0-cdh5.14.0/

sbin/stop-yarn.sh

sbin/mr-jobhistory-daemon.sh stop historyserver

重新启动yarn集群以及jobhistoryserver服务

cd /export/servers/hadoop-2.6.0-cdh5.14.0/

sbin/start-yarn.sh

sbin/mr-jobhistory-daemon.sh start historyserver
第三步:重新提交spark任务到yarn集群上面去

node03执行以下命令重新提价任务

cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0

  

bin/spark-submit --class org.apache.spark.examples.SparkPi \

--master yarn \

--deploy-mode cluster \

--driver-memory 1g \

--executor-memory 1g \

--executor-cores  \

/export/servers/spark-2.2.-bin-2.6.-cdh5.14.0/examples/jars/spark-examples_2.-2.2..jar \

然后就可以查看到spark任务提交的日志了

spark在不同环境下的搭建|安装|local|standalone|yarn|HA|的更多相关文章

  1. centos下yum搭建安装linux+apache+mysql+php环境

    一.脚本YUM源安装: 1.yum install wget                                                     #安装下载工具wget 2.wge ...

  2. centos下yum搭建安装linux+apache+mysql+php环境教程

    我们利用linux系统中yum安装Apache+MySQL+PHP是非常的简单哦,只需要几步就可以完成,具体如下: 一.脚本YUM源安装: 1.yum install wget             ...

  3. 007 关于Spark下的第二种模式——standalone搭建

    一:介绍 1.介绍standalone Standalone模式是Spark自身管理资源的一个模式,类似Yarn Yarn的结构: ResourceManager: 负责集群资源的管理 NodeMan ...

  4. Spark集群搭建(local、standalone、yarn)

    Spark集群搭建 local本地模式 下载安装包解压即可使用,测试(2.2版本)./bin/spark-submit --class org.apache.spark.examples.SparkP ...

  5. Spark 在 Window 环境下的搭建

    1.java/scala的安装 - 安装JDK下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21 ...

  6. 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

    原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...

  7. android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

      android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...

  8. Android NDK r8 Cygwin CDT 在window下开发环境搭建 安装配置与使用 具体图文解说

    版权声明:本博客全部文章均为原创.欢迎交流.欢迎转载:转载请勿篡改内容,而且注明出处,谢谢! https://blog.csdn.net/waldmer/article/details/3272500 ...

  9. CentOS6.5下源码安装多个MySQL实例及复制搭建

    多实例安装本节是在CentOS6.5下源码安装MySQL5.6.35的基础上,在同一台机器增加一个MySQL实例.参考Centos中安装多个mysql数据的配置实例,安装目录为/usr/local/m ...

随机推荐

  1. python 对redis 键值对的操作

    我们可以将Redis中的Hashes类型看成具有String Key和String Value的键值对容器.类似python中的dict,javascript的jaon,java 的map,每一个Ha ...

  2. leetcode-13双周赛-1256-加密数字

    题目描述:编码 方法一: class Solution(object): def encode(self, n): if n == 0: return "" n -= 1 A = ...

  3. leetcode-162周赛-1252-奇数值单元格数目

    题目描述: 自己的提交: class Solution: def oddCells(self, n: int, m: int, indices: List[List[int]]) -> int: ...

  4. 排序+模拟+优先队列——cf1248E

    其实是个模拟题.. /* 每个人都有一个口渴时间,如果口渴时,其前面没有人在排队,那么其就去排队接水,反之一直等到前面没有人排队 问每个人接完水的时间 每个没轮到的人都在位置上等前面的人接完水,然后他 ...

  5. Springboot Excle导入导出

    Springboot Excle导入导出 导入操作:Excle批量导入 导出操作:下载模版 开发笔记 pom.xml <!-- Excle相关jar --> <dependency& ...

  6. IntelliJ IDEA创建Maven web项目速度慢的解决方法

    在Properties中添加Name:archetypeCatalog和Value:internal,如下图那样

  7. js中的函数声明和函数表达式的区别

    目录 一.声明与表达式的格式 1.1 声明式的格式: 1.2 表达式的格式: 二.区别 2.1 函数表达式可以直接在后面加括号执行,而函数声明不可以. 2.2 函数表达式可以被提前解析出来 2.3 命 ...

  8. 架构-软件系统体系结构-C/S架构:C/S架构

    ylbtech-架构-软件系统体系结构-C/S架构:C/S架构 Client/Server架构,即客户端/服务器架构.是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端, ...

  9. Openstack组件部署 — Nova_Install and configure a compute node

    目录 目录 前文列表 Prerequisites 先决条件 Install and configure a compute node Install the packages Edit the etc ...

  10. on() 不支持hover事件

    因为 .hover() 是 jQuery 自己定义的事件… 是为了方便用户绑定调用 mouseenter 和 mouseleave 事件而已,它并非一个真正的事件,所以当然不能当做 .bind() 中 ...