【spark篇】spark集群基于不同模式下搭建及过程分析

第一部分:基于standalone集群搭建
规划:node01为主节点,node02,node03为从节点。
一、配置项
操作node01:
1.修改conf下的slaves文件

修改localhost为node02和node03 从节点

2.修改spark-env.sh

export SPARK_MASTER_IP=node01
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2 # 核不同于CPU的核,如果机器为4核双线程(意味着某个时候可跑2个task)最多可配置8.这里的核某个时刻时刻跑一个task。
export SPARK_WORKER_MEMORY=3g

二、配置完成后进行分发:

scp -r ./spark-1.6.0/ node02:$PWD
scp -r ./spark-1.6.0/ node03:$PWD

三、启动集群:
进入spark的sbin下,./start-all.sh 即可

四、webUI访问:
node01:8080 // 注意7077 是提交任务的端口

备:可配置spark-env.sh下SPARK_MASTER_WEBUI_PORT=8888
此外可以在sbin下的start_master.sh 里的SPARK_MASTER_WEBUI_PORT=

五、提交任务1:
client 模式:
提交spark自带的jar。比如提交spark自带的SpakPi类方法。
可以在其他的节点提交任务,比如在node02上提交,在bin下执行如下:

./spark-submit –master spark://node01:7077 –class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 100
分析:–master指定节点的地址。–class 指定类路径。后面再接jar所在位置,最后跟需的参数。这里的100 是sparkPi里的slices的分区。一个分区是一个task在处理数据
因此job由100个task在处理。
最后在xshell下查看结果:Pi is roughly 3.1408528

图解分析:
先看客户端模式:
【spark篇】spark集群基于不同模式下搭建及过程分析_第1张图片
上述的提交模式就是客户端模式,每个applicationDriver如果在客户端启动,每个Driver会与集群Worker节点有大量的通信。如果客户端提交了很多的application。会造成客户端的网卡流量激增,这种模式适合测试。不适用与生产环境,在客户端可以看到task的执行情况。
上述的提交方式还可以写成:–deploy-mode cliet 在 –master后。加与不加执行的没有区别。

六、提交任务命令2:
cluster模式:

./spark-submit –master spark://node01:7077 –deploy-mode cluster –class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 100
分析: 增加了此处 –deploy-mode cluster

Standalone-cluster方式流程图查看其执行过程:
【spark篇】spark集群基于不同模式下搭建及过程分析_第2张图片

过程分析:
Drive随机在一台work节点启动,当提交多个application时将客户端的网卡流量激增分散到不同的节点上。适用于生产环境中,在客户端看不到task的执行情况,需要去webUI上查看。

第二部分:基于yarn集群搭建
yarn-client 模式:
一、配置项
cp spark-env.sh.template spark-env.sh
修改spark下的conf里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 –deploy mode client –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篇】spark集群基于不同模式下搭建及过程分析_第3张图片

分析:每个application都会启动Driver,Driver在客户端启动,与集群有大量的通信,当提交多个application时候会有网卡激增问题,适用于测试,不适用于生产,在客户端可看见task的运行情况和结果。

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

图解过程:
【spark篇】spark集群基于不同模式下搭建及过程分析_第4张图片
分析:当客户端提交多个application时,Driver中的AM随机在集群中一台NM上启动,相当于将client模式的单点网卡流量激增问题分散到集群中,在客户端可不到task运行的情况和结果,可在webUI上查看。适用于生产环境。

你可能感兴趣的:(大数据)