Spark作业提交的方式

在Spark中,支持4种运行模式:

  • 1)Local:开发时使用
  • 2)Standalone: 是Spark自带的,如果一个集群是Standalone的话,那么就需要在多台机器上同时部署Spark环境
  • 3)YARN:建议大家在生产上使用该模式,统一使用YARN进行整个集群作业(MR、Spark)的资源调度
  • 4)Mesos

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

1、Local模式下
提交Spark Application到环境中运行。如果要写入数据库数据则需要加上  --jars
1、该模式操作路径在本地的数据
spark-submit  \
--name SparkSessionApp \
--class com.imooc.spark.SparkSessionApp \
--jars /www/lib/mysql-connector-java-5.1.25.jar  \   
--master local[2]  \
/www/lib/sql-1.0.jar  \
/www/instl/spark/spark-2.1.0-bin-2.6.0-cdh5.7.0/examples/src/main/resources/people.json

2、该模式操作路径在hdfs上的数据
spark-submit  \
--name SparkSessionApp \
--class com.imooc.spark.SparkSessionApp \
--jars /www/lib/mysql-connector-java-5.1.25.jar  \   
--master local[2]  \
/www/lib/sql-1.0.jar  \
hdfs://hadoop001:8020/inputfile/people.json
2、YARN模式

如果想运行在YARN之上,ResourceManager的地址从Hadoop配置中获取。因此必须要设置HADOOP_CONF_DIR或者是YARN_CONF_DIR。即为spark配置上hadoop路径下直到/etc/hadoop 的路径

  • 方式 1:直接导出方式 export HADOOP_CONF_DIR=/www/instl/hadoop/hadoop-2.6.0-cdh5.9.3/etc/hadoop

  • 方式2:在 $SPARK_HOME/conf/spark-env.sh 中配置上hadoop路径下直到/etc/hadoop 的路径

HADOOP_CONF_DIR=/www/instl/hadoop/hadoop-2.6.0-cdh5.7.0/etc/hadoop

YARN 模式运行的两种方式

(1)Client 模式特点:(YARN默认模式)

  • a. Driver运行在Client端(提交Spark作业的机器)
  • b.Client会和请求到的Container进行通信来完成作业的调度和执行,Client是不能退出的
  • c…日志信息会在控制台输出:便于我们测试
  • d.命令如
如果要写入数据库数据则需要加上  --jars  ,如果需要引入文件,需要加上 --file
1、该模式操作路径在hdfs上的数据.(参数路径不加hdfs://hadoop001:8020 时,默认加上这路径)
spark-submit \
--name SparkSessionApp \
--class com.imooc.spark.SparkSessionApp \
--jars /www/lib/mysql-connector-java-5.1.25.jar  \
--master yarn-client \
--executor-memory 1G \
--num-executors 1 \
--conf spark.sql.shuffle.partitions=100 \
--files /www/lib/ipDatabase.csv,/home/hadoop/lib/ipRegion.xlsx \
/www/lib/sql-1.0-jar-with-dependencies.jar \
hdfs://hadoop001:8020/inputfile/access.log   hdfs://hadoop001:8020/outputfile/clean

2、该模式操作路径在本地数据,需要加上file:// 标识
spark-submit \
--name SparkSessionApp \
--class com.imooc.spark.SparkSessionApp \
--jars /www/lib/mysql-connector-java-5.1.25.jar  \
--master yarn-client \
--executor-memory 1G \
--num-executors 1 \
--conf spark.sql.shuffle.partitions=100 \
--files /www/lib/ipDatabase.csv,/www/lib/ipRegion.xlsx \
/www/lib/sql-1.0-jar-with-dependencies.jar \
file:///www/data/outputfile/access.log  file:///www/data/outputfile/clean

3、不参与操作路径资源

spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn-client  \
--executor-memory 1G \
--num-executors 1 \
/www/instl/spark/spark-2.1.0-bin-2.6.0-cdh5.7.0/examples/jars/spark-examples_2.11-2.1.0.jar \
4

(2)Cluster模式特点:

  • a.Driver运行在ApplicationMaster中
  • b.Client只要提交完作业之后就可以关掉,因为作业已经在YARN上运行了
  • c.日志是在终端看不到的,因为日志是在Driver上,只能通过yarn logs -applicationId application_id (命令: yarn logs -applicationId application_1495632775836_0002 需要开通日志聚合功能服务),也可以在界面上查看结果:

在这里插入图片描述

  • d.命令如:(仅 master 后模式进行改变)
如果要写入数据库数据则需要加上  --jars  ,如果需要引入文件,需要加上 --file

1、该模式操作路径在hdfs上的数据(参数路径不加hdfs://hadoop001:8020 时,默认加上这路径)
spark-submit \
--name SparkSessionApp \
--class com.imooc.spark.SparkSessionApp \
--jars /www/lib/mysql-connector-java-5.1.25.jar  \
--master yarn-cluster \
--executor-memory 1G \
--num-executors 1 \
--conf spark.sql.shuffle.partitions=100 \
--files /www/lib/ipDatabase.csv,/www/lib/ipRegion.xlsx \
/www/lib/sql-1.0-jar-with-dependencies.jar \
hdfs://hadoop001:8020/inputfile/access.log   hdfs://hadoop001:8020/outputfile/clean

2、该模式操作路径在本地数据,需要加上file:// 标识
spark-submit \
--name SparkSessionApp \
--class com.imooc.spark.SparkSessionApp \
--jars /www/lib/mysql-connector-java-5.1.25.jar  \
--masteryarn-cluster \
--executor-memory 1G \
--num-executors 1 \
--conf spark.sql.shuffle.partitions=100 \
--files /www/lib/ipDatabase.csv,/home/hadoop/lib/ipRegion.xlsx \
/www/lib/sql-1.0-jar-with-dependencies.jar \
file:///www/data/outputfile/access.log  file:///www/data/outputfile/clean

3、不参与操作路径资源
spark-submit \
--class org.apache.spark.examples.SparkPi  \
--masteryarn-cluster \
--executor-memory 1G \
--num-executors 1 \
--conf spark.sql.shuffle.partitions=100 \
/www/instl/spark/spark-2.1.0-bin-2.6.0-cdh5.7.0/examples/jars/spark-examples_2.11-2.1.0.jar \
4

注意:不同模式参数路径读取路径位置

在不同的启动模式下,加载文件时的参数路径写法是不一样的,对于local模式下,默认就是读取本地文件,而在standlone或者yarn-client,或者yarn-cluster模式下,默认读的都是hdfs文件系统】, 这几种模式下很难读取本地文件(这是很显然的事情,但你可以通过指定节点的文件服务曲线救国)。
下面的代码在local模式下有效,在其它模式下无效:
var theP1 = sc.textFile("file:///usr/test/people.json")  //读取本地
var theP2 = sc.textFile("hdfs://master.hadoop/user/root/test/test/people.json") //读取hdfs文件
下面的代码在非local模式下,都是读取的hdfs,file://模式无效.
var theP1 = sc.textFile("/usr/test/people.json")  
var theP2 = sc.textFile("/user/root/test/test/people.json")
下面这个语句在几种模式下都有效
var theP2 = sc.textFile("hdfs://master.hadoop/user/root/test/test/people.json") //读取hdfs文件
在非local模式下等同于
var theP2 = sc.textFile("/user/root/test/test/people.json")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章