Spark的4种运行模式

模式简介

Spark支持4中运行模式,分别是local Standalone YARN 和 Mesos

  1. Local:建议开发的时候使用,在本地IDE中便于编码和调试
  2. Standalone: 是Spark自带的,如果一个集群是Standalone的话,那么就需要在多台机器上同时部署Spark环境,生产上很少使用的模式
  3. YARN:建议大家在生产上使用该模式,统一使用YARN进行整个集群作业(MR、Spark)的资源调度,该模式下 Spark就相当于一个客户端,不需要在集群的每一天机器上都部署Spark
  4. Mesos:不太了解,好像大家也不都不怎么用Mesos了

注:不管使用什么模式,Spark应用程序的代码是一模一样的,只需要在提交的时候通过–master参数来指定我们的运行模式即可

Spark on YARN的两种提交类型

Client模式

Driver运行在Client端(提交Spark作业的机器),Client会和请求到的Container进行通信来完成作业的调度和执行。
该模式下Client是不能退出的。
日志信息会在控制台输出:便于我们测试

1
2
3
4
5
6
7
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--executor-memory 1G \
--num-executors 1 \
/home/hadoop/app/spark-2.1.0-bin-2.6.0-cdh5.7.0/examples/jars/spark-examples_2.11-2.1.0.jar \
4

Cluster

Driver运行在ApplicationMaster中,Client只要提交完作业之后就可以关掉,因为作业已经在YARN上运行了。日志是在终端看不到的,因为日志是在Driver上,只能通过YARN的统一的log日志查看命令查看(需要打开日志聚合功能)
yarn logs -applicationId application_id 查看
例如

yarn logs -applicationId application_1495632775836_0002

一个cluster提交的例子

1
2
3
4
5
6
7
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--executor-memory 1G \
--num-executors 1 \
/home/hadoop/app/spark-2.1.0-bin-2.6.0-cdh5.7.0/examples/jars/spark-examples_2.11-2.1.0.jar \
4

–master yarn 就是yarn-client模式
–master yarn-cluster 意思是yarn-client 模式**

在YARN上运行Spark需要设置HADOOP_CONF_DIR 或者 YARN_CONF_DIR

Exception in thread “main” java.lang.Exception: When running with master ‘yarn’ either HADOOP_CONF_DIR or YARN_CONF_DIR must be set in the environment.

两种设置方法

  • 第一种 :export HADOOP_CONF_DIR=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop

  • 第二种:修改$SPARK_HOME/conf/spark-env.sh 在其中添加HADOOP_CONF_DIR=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop

-------------End Of This ArticleThank You For Reading-------------