如何将Spark-Streaming作业作为守护进程运行

时间:2016-05-27 11:54:32

标签: apache-spark spark-streaming

在使用日志轮换的日志文件中记录任何异常的同时,对Spark-Streaming作业进行daemonise的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

  

这是根据您的要求运行2个守护程序线程的方法   可以增加..

nohup ./mysparkstreamingjob.sh one> ../../logs/nohup.out 2> ../../logs/nohup.err < /dev/null &

nohup ./mysparkstreamingjob.sh two> ../../logs/nohup.out 2> ../../logs/nohup.err < /dev/null &

mysparkstreamingjob.sh看起来像

#!/bin/sh
echo $CLASSPATH
spark-submit --verbose --jars $(echo /dirofjars/*.jar | tr ' ' ','),$SPARK_STREAMING_JAR --class com.xx.xx.StreamingJob \
    --master yarn-client \
    --num-executors 12 \
    --executor-cores 4 \
    --driver-memory 4G \
    --executor-memory 4G \
    --driver-class-path ../../config/properties/* \
    --conf "spark.driver.extraJavaOptions=-XX:PermSize=256M -XX:MaxPermSize=512M" \
    --conf "spark.shuffle.memoryFraction=0.5" \
    --conf "spark.storage.memoryFraction=0.75" \
    --conf "spark.storage.unrollFraction=0.2" \
    --conf "spark.memory.fraction=0.75" \
    --conf "spark.worker.cleanup.enabled=true" \
    --conf "spark.worker.cleanup.interval=14400" \
    --conf "spark.shuffle.io.numConnectionsPerPeer=5" \
    --conf "spark.eventlog.enabled=true" \
    --conf "spark.driver.extraLibrayPath=$HADOOP_HOME/*:$HBASE_HOME/*:$HADOOP_HOME/lib/*:$HBASE_HOME/lib/htrace-core-3.1.0-incubating.jar:$HDFS_PATH/*:$SOLR_HOME/*:$SOLR_HOME/lib/*" \
    --conf "spark.executor.extraLibraryPath=$HADOOP_HOME/*:$HBASE_HOME/*:$HADOOP_HOME/lib/*:$HBASE_HOME/lib/htrace-core-3.1.0-incubating.jar:$HDFS_PATH/*:$SOLR_HOME/*:$SOLR_HOME/lib/*" \
    --conf "spark.executor.extraClassPath=$(echo /dirofjars/*.jar | tr ' ' ',')" \
    --conf "spark.yarn.executor.memoryOverhead=2048" \
    --conf "spark.yarn.driver.memoryOverhead=1024" \
    --conf "spark.eventLog.overwrite=true" \
    --conf "spark.shuffle.consolidateFiles=true" \
    --conf "spark.akka.frameSize=1024" \
    --files xxxx.properties, xxxx.properties \
    -DprocMySpark$1

自定义log4j旋转您需要配置的文件并将该设置传递给您的spark提交。基于你使用的appender,它将以java + log4j工作的方式自然地完成。

例如:

--conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=/tmp/log4j.properties"

此外,spark webui url(默认情况下)具有所有日志高级别和低级别

答案 1 :(得分:0)

您应该使用oozie来安排火花流媒体作业。 https://oozie.apache.org/docs/4.2.0/DG_SparkActionExtension.html

这将为您提供有关安排,管理和监控火花作业的详细信息。 http://blog.cloudera.com/blog/2014/02/new-hue-demos-spark-ui-job-browser-oozie-scheduling-and-yarn-support/