大数据Spark03_集群环境搭建及任务提交的方式

23 篇文章 0 订阅

 

Spark四种部署方式

Spark应用程序在集群上部署运行时,可以由不同的组件为其提供资源管理调度服务(资源包括CPU、内存等)。比如,可以使用自带的独立集群管理器(standalone),或者使用YARN,也可以使用Mesos。因此,Spark包括三种不同类型的集群部署方式,包括standalone、Spark on Mesos和Spark on YARN。

1.Local模式:此模式适合在开发工具中进行测试。

2.standalone模式

与MapReduce1.0框架类似,Spark框架本身也自带了完整的资源调度管理服务,可以独立部署到一个集群中,而不需要依赖其他系统来为其提供资源管理调度服务。在架构的设计上,Spark与MapReduce1.0完全一致,都是由一个Master和若干个Slave构成,并且以槽(slot)作为资源分配单位。不同的是,Spark中的槽不再像MapReduce1.0那样分为Map 槽和Reduce槽,而是只设计了统一的一种槽提供给各种任务来使用。
3.Spark on Mesos模式
Mesos是一种资源调度管理框架,可以为运行在它上面的Spark提供服务。Spark on Mesos模式中,Spark程序所需要的各种资源,都由Mesos负责调度。由于Mesos和Spark存在一定的血缘关系,因此,Spark这个框架在进行设计开发的时候,就充分考虑到了对Mesos的充分支持,因此,相对而言,Spark运行在Mesos上,要比运行在YARN上更加灵活、自然。目前,Spark官方推荐采用这种模式,所以,许多公司在实际应用中也采用该模式。
4. Spark on YARN模式
Spark可运行于YARN之上,与Hadoop进行统一部署,即“Spark on YARN”,其架构如图9-13所示,资源管理和调度依赖YARN,分布式存储则依赖HDFS。

一、Local 模式搭建

Local模式也就是说不是分布式模式,我们只需要在一台机器上就可以搭建。其实它可以运行在其他不同的多种模式 比如下面的Standalone、Yarn、Mesos等模式。

将下载好的tgz包移动weekend13节点的/usr/local目录下 重命名conf目录下的log4j.properties.template为log4j.properties然后修改其日志级别为WARN这样启动spark shell的时候输出的日志信息就会少些。

log4j.rootCategory=INFO, console

log4j.rootCategory=WARN, console

在Sparks hell中SparkContext对象自动的创建并命名了为sc ,一旦有了sc我们就通过sc创建RDD。

后续的所有基于RDD的操作都可以执行。

启动成功后可通过 ipaddress:4040 访问SparkUI界面 查看任务和集群的信息。

最后,可以使用命令“:quit”退出Spark Shell,如下所示:

二、Standalone集群搭建

在节点weekend10、weekend11、weekend12、weekend13上搭建Spark   standalone集群

将下载好的tgz包移动到各节点的/usr/local目录下

 

进入conf目录下重命名 slaves.template 为slaves  、spark-env.sh.template 为 spark-env.sh

vi slaves :添加从节点(worker节点)weekend11、weekend12

vi spark-env.sh :

Note:主节点是weekend10 ,从节点weekend11、weekend12

将weekend10节点上配置好的spark-1.6.0复制到weekend11、weekend12节点上

在节点weekend10的sbin目录下执行命令:

./start-all.sh

查看节点进程

查看Web界面:weekend10:8080

修改端口的方式

vi start-master.sh 

提交任务测试

进入spark的bin目录下 执行lib包中的例子

执行命令:

./spark-submit --master spark://weekend10:7077 --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 100

在节点weekend13上搭建Driver客户端

将weekend10节点上的spark复制到weekend13节点上 然后删除 conf下的slaves 再将spark-env.sh配置中的修改内容注释掉。

进入spark bin目录下再次执行命令:

./spark-submit --master spark://weekend10:7077 --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 100

三、使用开发工具书写spark程序进行测试

开发工具有ScalaIDE、eclipse、IDEA等,包的管理工具可以使用Maven。

1、初始化SparkContext

val conf=new SparkConf()

     conf.setMaster("local").setAppName("My App")

val sc=new SparkContext(conf)

初始化SparkContext的时候需要传入两个参数:

A Cluster URL:设置为Local 表示运行spark是在本地机器的一个线程中不需要连接到集群中。

An Application name:在集群的管理界面中可以显示程序的名称。

2、基于SparkCOntext创建RDD

3、基于RDD执行一系列的转换和行动算子

4、程序结束使用 sc.stop()关闭spark 

四、Spark独立应用程序编程、打包、提交运行

使用 Scala 编写的程序需要使用 sbt 进行编译打包,相应的,Java 程序使用 Maven 编译打包,而 Python 程序通过 spark-submit 直接提交

Spark任务提交的方式

Standalone Client 提交任务
Standalone Cluster 提交任务
Yarn Cluster 提交任务
Yarn Client 提交任务

上述在weekend13节点上提交任务的方式是Standalone Client的方式。

 

Yarn模式两种提交任务方式

1. yarn-client提交任务方式

启动HDFS集群、在weeeknd10节点中的Spark目下下的spark-env.sh添加

 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

 

最后再提交如下命令

提交命令

./spark-submit

--master yarn

 --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar

100

或者

./spark-submit

--master yarn–client

 --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar

100

 

或者

./spark-submit

--master yarn

--deploy-mode  client

 --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar

100

 

执行原理图解

 

执行流程

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

2. 应用程序启动后会向RS(ResourceManager)发送请求,启动AM(ApplicationMaster)的资源。

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

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

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

6. AM会向NM发送命令启动Executor。

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

总结

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

ApplicationMaster的作用:

1. 为当前的Application申请资源

2. 给NameNode发送消息启动Executor。

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

 2、yarn-cluster提交任务方式

提交命令

./spark-submit

--master yarn

--deploy-mode cluster 

--class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar

100

或者

./spark-submit

--master yarn-cluster

--class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar

100

 

执行原理图解

 

执行流程

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

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

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

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

5. AM连接到NM,发送请求到NM启动Excutor。

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

总结

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

ApplicationMaster的作用:

1. 为当前的Application申请资源

2. 给NameNode发送消息启动Excutor。

3. 任务调度。

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

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值