SparkBase

作者: 八爪鱼下水 | 来源:发表于2021-03-27 21:08 被阅读0次

常用命令

spark no yarn

#bin
SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit \
--master yarn \
--deploy-mode client \
--driver-memory 512m \
--executor-memory 512m \
--num-executors 1 \
--total-executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar \
10

spark no yarn for jarExe

bin/spark-submit \
--master yarn \
--deploy-mode client \
--class cn.itcast.sparkbase._01SparkWordCountTar \
/export/data/spark-base_2.11-1.0.0.jar \
hdfs://node1.itcast.cn:8020/wordcount/input \
hdfs://node1.itcast.cn:8020/wordcount/output-8

命令介绍

bin/spark-submit \
#MASTER_URL集群资源管理器
--master yarn \

#启动模式
--deploy_mode cluster \

# 关键部分,Driver端和Executor端的配置
# Driver申请资源执行计算任务
--driver-memory 2g \ 
--driver-cores 2 \

# Executor是真正执行资源和计算任务的
# 启动多少个executors,默认2个
--num-executors 10 \
#每个Executor的内存,默认1G 
--executor-memory 2g \
#每个executor有多少cores,yarn默认为1 
--executor-cores 3 \
--class cn.itcast.apple.mainclass \
jar包路径 \
程序需要参数
  • 如果有一个需求的数据量,需要满足Executor端的内存一定超越给定的数据量,
  • cpu-cores越多越好(cpu-cores模拟的线程,每个线程执行1个分区的数据,如果业务数据分区越多,开启cpucores越多)

Standalone集群提交运行

SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit \
--master spark://node1:7077,node2:7077 \
--class cn.itcast.hello.WordCount \
--driver-memory 512m \
--executor-memory 512m \
--num-executors 1 \
--total-executor-cores 2 \
hdfs://node1:8020/spark/apps/wc.jar \
hdfs://node1:8020/wordcount/input/words.txt hdfs://node1:8020/wordcount/output 

例:

SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit \
--master spark://node1.itcast.cn:7077,node2.itcast.cn:7077 \
--deploy-mode client \
--driver-memory 512m \
--executor-memory 512m \
--num-executors 1 \
--total-executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar \

Standalone集群组成
Standalone集群有四个重要组成部分,分别是:

1)Driver:是一个进程,我们编写的Spark应用程序就运行在Driver上,由Driver进程执行;

2)Master(RM):是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责;

3)Worker(NM):是一个进程,一个Worker运行在集群中的一台服务器上,主要负责两个职责,一个是用自己的内存存储RDD的某个或某些partition;另一个是启动其他进程和线程(Executor),对RDD上的partition进行并行的处理和计算。

4)Executor:是一个进程,一个Worker上可以运行多个Executor,Executor通过启动多个线程(task)来执行对RDD的partition进行并行计算,也就是执行我们对RDD定义的例如map、flatMap、reduce等算子操作。

Standalone Client模式
在Standalone Client模式下,Driver在任务提交的本地机器上运行,Driver启动后向Master注册应用程序,Master根据submit脚本的资源需求找到内部资源至少可以启动一个Executor的所有Worker,然后在这些Worker之间分配Executor,Worker上的Executor启动后会向Driver反向注册,所有的Executor注册完成后,Driver开始执行main函数,之后执行到Action算子时,开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。

Standalone Cluster模式
在Standalone Cluster模式下,任务提交后,Master会找到一个Worker启动Driver进程,Driver启动后向Master注册应用程序,Master根据submit脚本的资源需求找到内部资源至少可以启动一个Executor的所有Worker,然后在这些Worker之间分配Executor,Worker上的Executor启动后会向Driver反向注册,所有的Executor注册完成后,Driver开始执行main函数,之后执行到Action算子时,开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。

注意,Standalone的两种模式下(client/Cluster),Master在接到Driver注册Spark应用程序的请求后,会获取其所管理的剩余资源能够启动一个Executor的所有Worker,然后在这些Worker之间分发Executor,此时的分发只考虑Worker上的资源是否足够使用,直到当前应用程序所需的所有Executor都分配完毕,Executor反向注册完毕后,Driver开始执行main程序。

关于大数据开发,Spark Standalone模式运行机制,以上就为大家做了简单的介绍了。Spark Standalone模式,在实际工作环境当中,其实用得不多,但是在学习阶段,理解其运行机制是有好处的。

相关文章

  • SparkBase

    常用命令 spark no yarn spark no yarn for jarExe 命令介绍 如果有一个需求...

网友评论

      本文标题:SparkBase

      本文链接:https://www.haomeiwen.com/subject/lrwlhltx.html