Spark部署模式(二)——Standalone模式

目录

1. 搭建Standalone模式

2. HA配置

3. Standalone模式下spark工作流程


Standalone模式与Local模式的区别点在于,Local模式是单节点运行,而Standalone模式是构建了由Master+Slave组成的Spark集群

由于Spark与Hadoop良好的兼容性,这里讲Spark集群搭建在Hadoop集群中

1. 搭建Standalone模式

三台已经安装好Hadoop的主机:hadoop100、hadoop101、hadoop102;

(1)进入spark/conf目录,修改配置文件

[kevin@hadoop100 conf]$ mv slaves.template slaves
[kevin@hadoop100 conf]$ mv spark-env.sh.template spark-env.sh

(2)修改slaves文件,添加worker节点

[kevin@hadoop100 conf]$ vim slaves

hadoop100
hadoop101
hadoop102

(3)修改spark-env.sh文件

[kevin@hadoop100 conf]$ vim spark-env.sh

SPARK_MASTER_HOST=hadoop100
SPARK_MASTER_PORT=7077

添加master节点名称hadoop100,端口号7077

(4)sbin/spark-config.sh目录下加入如下配置

export JAVA_HOME=/opt/module/jdk1.8.0_144

配置JavaHome环境变量,防止运行报“JAVA_HOME not set”异常

(5)分发spark包

[kevin@hadoop100 module]$ xsync spark/

(6)启动spark-shell和HDFS

(7)启动spark的master和worker

[kevin@hadoop100 spark]$ sbin/start-all.sh

(8)jps查看集群状态

--------------------- hadoop100 ----------------
4353 SparkSubmit
5410 Jps
5202 Master
3432 NameNode
3579 DataNode
5326 Worker
--------------------- hadoop101 ----------------
3397 Jps
3318 Worker
3129 DataNode
--------------------- hadoop102 ----------------
3431 Worker
3271 SecondaryNameNode
3512 Jps
3150 DataNode

此时spark集群的master和worker开启,Driver端的SparkSubmit进程也开启,HDFS的NameNode和DataNode也开启;集群搭建完毕

(9)启动bin/spark-shell就可以开始编写scala程序了

 

2. HA配置

Spark通过Zookeeper可以实现高可用,master有多个,这样便于备份数据

(1)开启Zookeeper

(2)修改spark-env.sh文件

[kevin@hadoop100 conf]$ vi spark-env.sh

注释掉如下内容:
#SPARK_MASTER_HOST=hadoop102
#SPARK_MASTER_PORT=7077
添加上如下内容:
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER 
-Dspark.deploy.zookeeper.url=hadoop100,hadoop101,hadoop102 
-Dspark.deploy.zookeeper.dir=/spark"

(3)分发配置文件

[kevin@hadoop100 conf]$ xsync spark-env.sh

(4)在hadoop100上启动所有节点

[kevin@hadoop100 spark]$ sbin/start-all.sh

(5)在hadoop101上启动master节点

[kevin@hadoop101 spark]$ sbin/start-master.sh

这样master就在hadoop100和hadoop101两台服务器上都部署了,同时拥有3个worker,spark集群的HA配置完毕。

一般如果仅限本地测试Demo,spark会关闭HA即把conf/spark-env.sh文件中HA的信息注掉,开启一个Master即可。

 

3. Standalone模式下spark工作流程

(1)Master是资源管理器,Worker是具备资源环境的工作节点;Master与Worker关联;

(2)ApplicationMaster是应用管理器,向Master注册应用程序、申请和调度资源,并分配给Executor;ApplicationMaster与Master和Executor关联;Executor中资源配置完毕后启动;

(3)Driver是驱动器,调度Executor任务,跟踪任务运行情况。

既然Driver管任务调度,那么Driver就需要知道Executor的位置,所以Executor通过反向注册告诉Driver自己的信息;Executor通过反向注册与Driver关联;

(4)这样Driver就可以给Executor发送任务,Executor执行任务,Driver中编写的程序打包成依赖的jar包,在Executor中执行;

(5)当Executor中的任务执行完毕,Executor进程关闭,Driver进程也会关闭,Spark集群部分资源释放,全部关闭,剩下Client打印结果显示。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ApplicationMaster负责资源调度,向Master申请资源,给Worker中的Executor分配资源,

Driver负责任务调度,通过反向注册知道Executor的位置,并把任务分配给Executor执行。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

若任务太大,而Executor的内存不足:

(1)首选在当前Executor执行;

(2)内存不够,降级处理,在同一个Worker下的Executor中执行;

(3)内存还不够,继续降级,在同一个机架下的Executor中执行。

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值