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")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章