2017-03-14 9 views
4

スパークストリーミングアプリケーションは長時間実行されています。イベントログは、hdfsの場所hdfs:// spark-historyを指しています。ストリーミングアプリケーションを開始し、ファイルサイズが70GBになると、application_XXX.inprogressファイルが作成されます。ログファイルを削除するには、アプリケーションのスパークストリーミングを停止し、クリアします。 アプリケーションを停止または再起動することなく、このプロセスを自動化する方法はありますか。クリーニング間隔を1日、最大年齢を2日間として、spark.history.fs.cleaner.enabled = trueを設定しました。 .inprogressファイルはクリーニングされていません。我々はスパーク1.6.2のバージョンを使用しています。スパークを糸で行い、クラスタモードで展開しています。スパークストリーミングを停止してスパーク履歴イベントログをクリーニングする方法

+0

hdfsログストレージの保存ポリシーとは何ですか? – FaigB

答えて

0

この問題では、いくつかの設定を変更する必要があります。ファイルにはほとんど変更を加えないでください。yarn-default.xmlあなたはこの行を変更したり、この行を追加する必要があります。このファイルでは:

yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds=3600 

この変更は、これはあなたがこれが最初のステップですyarn logs -applicationId YOUR_APP_ID

を介してデータを見ることができます、あなたにあなたのファイルを集約します。あなたはこれについて少し見ることができますhere。この行はsaingている何

log4j.rootLogger=INFO, rolling 
log4j.appender.rolling=org.apache.log4j.RollingFileAppender 
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout 
log4j.appender.rolling.layout.conversionPattern=[%d] %p %m (%c)%n 
log4j.appender.rolling.maxFileSize=50MB 
log4j.appender.rolling.maxBackupIndex=5 
log4j.appender.rolling.file=/var/log/spark/${dm.logging.name}.log 
log4j.appender.rolling.encoding=UTF-8 
log4j.logger.org.apache.spark=WARN 
log4j.logger.org.eclipse.jetty=WARN 
log4j.logger.com.anjuke.dm=${dm.logging.level} 

:あなたはこの例を使用することができます。このファイルでは、ファイルlog4j-driver.propertyとlog4j-executor.property

を作成する必要が

Seccondステップ?

この男:log4j.appender.rolling.maxFileSize=50MBは、サイズが50MBのファイルだけを作成します。ログファイルが50MBに達すると、ログファイルは閉じられ、新しいファイルが開始されます。

関連性の高い行は次のとおりです。log4j.appender.rolling.maxBackupIndex=5これは、50MBの5つのファイルのバックアップ履歴があることを意味します。この間、新しいファイルが表示され始めると削除されます。

あなたが火花-submitコマンドを経由して、これを送信する必要があり、このログファイルを作成した後:あなたはあなたのドライバとあなたの労働者のためのログファイルを作成することができます

spark-submit 
    --master spark://127.0.0.1:7077 
    --driver-java-options "-Dlog4j.configuration=file:/path/to/log4j-driver.properties -Ddm.logging.level=DEBUG" 
    --conf "spark.executor.extraJavaOptions=-Dlog4j.configuration=file:/path/to/log4j-executor.properties -Ddm.logging.name=myapp -Ddm.logging.level=DEBUG" 
    ... 

を。コマンドでは2つの異なるファイルを使用していますが、同じファイルを使用できます。詳細はhereをご覧ください。

+1

答えを返していただきありがとうございます。ログ集計を有効にして、yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds = 3600を有効にしました。エグゼキュータではログが増えていませんが、sparkストリーミングイベントログをjson形式で記録しているスパークヒストリフォルダのみがインクルードされています。ヒストリUIの再構築のためにファイル名はapplication_12XXX_.inprogressとなります。 –

+0

神!私はあなたのことを理解しました。私は履歴サーバーの私のフォルダを確認する必要があります。私はそれを理解していません –

+1

@ VamshiMhotoあなたのアップデートをありがとう!私たちも同じ問題を抱えています。私たちは100Gb以上のデータo_0を持ついくつかの履歴データを '.inprogress'で作成しましたので、私はすぐに解決策を見つけて更新しようと思います! –

関連する問題