streamContext.textFileStream("s3://log-directory/")
を使用してファイルをリッスンして解析し、それらをORCファイルとして出力するSparkストリーミングジョブがあります。この特定のディレクトリには、5分ごとに40個以上のファイルがストリーミングされています。S3に対するスパークストリーミングのパフォーマンスを向上させる方法
ただし、EMRクラスタに追加するマシンの数にかかわらず、実行時に3人から4人のエグゼキュータを持つことで、最大30個のタスクを実行することになります。これにより、各マイクロバッチジョブはすべてのデータを解析して変換するのに約5分かかり、一度に4〜10個のログファイルを解析するだけなので、ジョブがかなり遅れてしまいます。理想的には、各バッチは5分間に40以上のファイルをすべて処理し、次のセットに移動します。
私の質問 - 実行中のエグゼキュータの数を増やす方法はありますか?それとも、私の仕事が新しいファイルに追いつくことを許していないと思っていない他の問題がありますか?私はS3がSparkでいかに遅いかについていくつかのことを読んだが、私の仕事は 17/04/21 19:14:32 INFO FileInputDStream: Finding new files took 2135 ms
のようなメッセージを返し続けている。これはではありませんが、5分ではありませんので、ファイルを見つけることに問題はないようです。ファイルは現在、100メガバイトごとに限界いっぱいまでされている - それは同様に十分でなければなりませんように。これは思える
spark.default.parallelism = 160
spark.executors.cores = 8
spark.executor.memory = 10356M
:環境に関しては、私は現在、その結果コンフィグオプションとしてspark.maximizeResourceAllocation=true
を設定します。私はあなたが与えることができる任意のヘルプをappreicate、そして必要に応じて詳細を追加して幸せ。
ストリーミングのソースは何ですか?キネシス?カフカ?ファイル? –
Amazon ELBのファイル – jpavs