后台运行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 &

 

posted @ 2018-11-13 14:13  Bread_Wang  阅读(4728)  评论(0编辑  收藏  举报