后台運行spark-submit命令的方法


在使用spark-submit運行工程jar包時常常會出現一下兩個問題: 
1.在程序中手打的log(如System.out.println(“***testRdd.count=”+testRdd.count()))常常會因被下一個Job的執行日志覆蓋掉而無法查看日志; 
2.一旦命令窗口被關閉或者電腦因斷電等原因異常關閉,程序便終止運行。 
其中,第一個問題可以通過將運行日志重定位到文件中來解決,命令如下:

spark-submit testSpark.jar > ~/testLog.out

運行上條命令則可將手打的log保存到~/testLog.out中,且日志中僅保存手打Log內容。

第二個問題,則可以通過后台運行Spark-submit命令nohip來解決,命令如下:

nohip spark-submit testSpark.jar &

運行上條命令則實現在后台運行spark命令,不用擔心電腦異常關機以及命令行不小心關閉等問題,且輸出日志保存在當前目錄的nohip.out目錄中。 
如果希望既可以后台運行命令又可以將日志保存到目的文件中,則可將上述兩個命令結合起來,命令如下:

nohip spark-submit testSpark.jar > ~/testLog.out &

如此,便可實現后台運行的問題,nohip不僅可以用於后台執行Spark命令,也可用於后台執行其他jar包,可具體查找nohip的使用方法。

 nohip spark-submit testSpark.jar > ~/testLog.out &

 

2,第二種方法 ,linux 重定向 1>&2    2>&1 (可用於多方面)

重定向輸出2,重定向輸出1 (推薦)

                1                                       2

spark-submit testSpark.jar >> testLog.out 2>&1 &  (后台運行輸出1)

tail -F  testLog.out 查看運行日志

 例如

#FlumeStartShell /usr/hdp/current/flume-server
bin/flume-ng agent -c conf/ -f /usr/hdp/current/flume-server/Cold_TestConf/spooldircsv1.conf -n a1 -Dflume.root.logger=WARN,console >> /run.log 2>&1 &

#SparkStreamingStartShell /home/t
spark-submit --class test --master yarn --deploy-mode client --queue ETL --driver-memory 4g --num-executors 4 --executor-memory 4g --executor-cores 4 --driver-java-options="-Djava.security.auth.login.config=jaas.conf" --conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=jaas.conf" --files "./jaas.conf#jaas.conf,./kafka.service.keytab#kafka.service.keytab" --jars ojdbc6.jar,config-1.3.1.jar tes.jar

#MointorStartShell source activate rmfile /script/
java -classpath Test.jar test >>run.log 2>&1 &

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM