0から1までFlinkを学ぶ--アップロードしたjarパッケージはどこに隠しましたか?


前言
この文章を書くのも知識星の仲間がこんな質問をしたのです.
flink UIダッシュボードでコミットされたjarは、どのディレクトリに格納されますか?
この問題は実は私自身も聞いたことがありますが、自分の問題にはプレッシャーもなく深く考えていません.今は知識星の有料の仲間が聞いているので、自然に自分を深く入り込ませてから正しい答えを出すことができます.
私と一緒に私の探求手順を見てみましょう.小さなjarが私と隠れん坊をする勇気があるの?
プロファイルの表示
まず最初に考えたのは、プロファイルに設定できる場所です.
グーグルは大法がよい
uploadのものがありますが、私たちが欲しいディレクトリではありません!そこで、私の「グーグル大法好」を動かすしかなかった.
一つ見つけました.中に入ってIssueを見てみましょう.
このtmが欲しいのではないでしょうか.アップロードしたjarに記入して保存したディレクトリにプロファイルをサポートします!急いで中に入ってソースコードを見てください.
ソースの確認
これはjobmanager.web.upload.dirですか?1.8のソースコードを見て確認します.
このjobmanager.web.upload.dirはまだ期限切れであることがわかり、WebOptions類のUPLOAD_DIRで置き換えられました!
このUPLOAD_DIRは何ですか?
この注釈の意味は、この構成web.upload.dirが具体的な経路を構成していない場合、JOB_MANAGER_WEB_TMPDIR_KEYディレクトリを使用するということですが、このディレクトリが構成されているかどうか見てみましょう.
確かにこのjarファイルがアップロードされるディレクトリは構成されていませんが、この一時ディレクトリJOB_MANAGER_WEB_TMPDIR_KEYはどこにあるか見てみましょう.
また期限切れのディレクトリです.mmp、続けてこのディレクトリTMP_DIRを見てください.
このweb.tmpdirを構成する値がプロファイルにあるかどうかを確認します.
so、System.getProperty("java.io.tmpdir")というディレクトリを使っているに違いありません.
ローカルコンピュータからのjobの構成を見てみました.この構成には次のようなものがあります.
java.io.tmpdir    /var/folders/mb/3vpbvkkx13l2jmpt2kmmt0fr0000gn/T/

さらにjobを観察すると、jobManagerにはweb.tmpdirの構成があります.
web.tmpdir    /var/folders/mb/3vpbvkkx13l2jmpt2kmmt0fr0000gn/T/flink-web-ea909e9e-4bac-452d-8450-b4ff082298c7

このweb.tmpdirを見つけたのはjavaです.io.tmpdir+「flink-web-」+UUIDからなる!
水が落ちて石が出る
このディレクトリに入ると、アップロードしたjarがやっと見つかりました.
アップロードjarディレクトリの確認の構成
アップロードしたjarがこの一時ディレクトリに格納されていることはよく知られていますが、プロファイルでアップロードjarの固定位置を構成し、ディレクトリの下にjarsディレクトリを作成し、プロファイルにこの構成を追加します.
web.tmpdir: /usr/local/blink-1.5.1/jars

変更後、web.tmpdirを見てみましょう.
Flink UIから3つのjarがアップロードされ、/usr/local/blink-1.5.1/jars/flink-web-7a98165b-1d56-44be-be8c-d0cd9166b179ディレクトリの下に私たちのjarが表示されます.
私たちはFlinkを再起動して、この3つのjarがまたなくなったことを発見して、これも前に私自身も出会った問題を説明することができて、Flinkが再起動する前にすべてアップロードしたjarはすべて削除されました!生産環境としては、このように遊んではいけないので、アップロードjarパッケージをすべて保存するためにディレクトリを固定しなければなりません.削除できません.固定ディレクトリを構成するには(Flinkを再起動しても削除しない場合)次のように構成する必要があります.
web.upload.dir: /usr/local/blink-1.5.1/jars

これで、jarが削除されないことを保証できます!
ソースコードがどのように書かれているか見てみましょう.
//        UPLOAD_DIR
final Path uploadDir = Paths.get(
    config.getString(WebOptions.UPLOAD_DIR,    config.getString(WebOptions.TMP_DIR)),
    "flink-web-upload");

return new RestServerEndpointConfiguration(
    restAddress,restBindAddress,port,sslEngineFactory,
    uploadDir,maxContentLength,responseHeaders);

彼はプロファイルからUPLOAD_DIRを探して、nullのためにTMP_DIRディレクトリを探してjarアップロードのパスとします!
まとめ
本文は知識星の1人の友达の問題から、現象から本質まで更に解決策の説明の下でどのようにFlink UIの上でアップロードしたjarパッケージの隠れた場所を探し当てて、そしてどのようにFlinkのアップロードしたjarパッケージが削除される問題を解決することを提出しました.
この記事の接続は次のとおりです.http://www.54tianzhisheng.cn/2019/03/13/flink-job-jars/
私に注目して
微信公衆番号:zhisheng
また、私は自分でFlinkの学習資料を整理して、現在すでにすべて微信の公衆番号に置いています.あなたは私の微信を加えることができます:zhisheng_Tian、キーワードに返信:Flinkは無条件に取得できます.
もっとプライベートな資料は知識の星に参加してください!
Githubコードウェアハウス
https://github.com/zhisheng17/flink-learning/
今後、このプロジェクトのすべてのコードはこの倉庫に置かれ、flinkを勉強するいくつかのdemoとブログが含まれています.
関連記事
1、『0から1までFlinkを学ぶ』——Apache Flink紹介
2、『0から1までFlinkを学ぶ』--MacにFlink 1.6を構築する.0環境の構築とシンプルなプログラムの実行
3、『0から1までFlinkを学ぶ』——Flinkプロファイルの詳細
4、『0から1までFlinkを学ぶ』——Data Source紹介
5、「0から1までFlinkを学ぶ」--Data Sourceをカスタマイズするにはどうすればいいですか?
6、『0から1までFlinkを学ぶ』——Data Sink紹介
7、「0から1までFlinkを学ぶ」--Data Sinkをどのようにカスタマイズしますか?
8、『0から1までFlinkを学ぶ』——Flink Data transformation(変換)
9、『0から1までFlinkを学ぶ』——Flinkの中のStream Windowsを紹介する
10、『0から1までFlinkを学ぶ』——Flinkの中のいくつかのTimeの詳細
11、『0から1までFlinkを学ぶ』——FlinkはデータをElasticSearchに書き込む
12、『0から1までFlinkを学ぶ』--Flinkプロジェクトはどのように実行しますか?
13、『0から1までFlinkを学ぶ』——FlinkはKafkaにデータを書き込む
14、『0から1までFlinkを学ぶ』——Flink JobManager高可用性構成
15、『0から1までFlinkを学ぶ』——Flink parallelismとSlot紹介
16、『0から1までFlinkを勉強する』――FlinkはKafkaデータを読み上げてMySQLに大量に書き込む
17、『0から1までFlinkを学ぶ』——FlinkはKafkaデータを読み取ってRabbitMQに書き込む
18、『0から1までFlinkを学ぶ』--あなたがアップロードしたjarバッグはどこに隠しましたか?