この記事は「糸の三部作のリンク」シリーズの最後のパートです。最初に前のコンテンツを簡単に確認します。
- 「糸の三部作のFlinkの1つ:準備」:マシン、スクリプト、およびインストールパッケージを準備します。
- 「Flink on Yarn Trilogy Part 2:Deployment and Setup」:CDHとFlinkのデプロイメントを完了し、管理ページで関連する設定を行います。
Flink、Yarn、HDFSの準備ができたので、FlinkタスクをYarnに送信して実行します。
全文リンク
- 「Flink on Yarn Trilogy One:Preparation」
- 「糸三部作の第2部:展開とセットアップ」
- 「Flink on Yarn Trilogy Part Three:Submit Flink Tasks」
YARNモードの2つのFlink
練習する前に、Flink on YARNについて簡単に説明します。次の図に示すように、Flink on Yarnは、使用時に2つのモードに分かれています。ジョブモードとセッションモード:
セッションモード:YARNでFlinkクラスターを事前に初期化します。次の図に示すように、Flinkタスクはこのクラスターに送信されます。
ジョブモード:Flinkタスクが送信されるたびに、専用のFlinkクラスターが作成され、次の図に示すように、タスクの完了後にリソースが解放され
ます。
実際の戦闘のためにデータを準備する(CDHサーバー)
次に送信されるFlinkタスクは従来のWordCountです。最初にHDFSでテキストファイルを準備します。後で送信されるFlinkタスクはこのファイルを読み取り、その中の各単語の数をカウントします。テキストを準備する手順は次のとおりです。
- SSH経由でCDHサーバーにログインします。
- hdfsアカウントに切り替え:su-hdfs
- 実際のtxtファイルをダウンロードします。
wget https://github.com/zq2599/blog_demos/blob/master/files/GoneWiththeWind.txt
- hdfsフォルダーの作成:hdfs dfs -mkdir / input
- テキストファイルを/入力ディレクトリにアップロードします。hdfs dfs -put ./GoneWiththeWind.txt / input
準備作業が完了したら、タスクを送信して試すことができます。
セッションモード
- SSH経由でCDHサーバーにログインします。
- hdfsアカウントに切り替え:su-hdfs
- ディレクトリを入力してください:/opt/flink-1.7.2/
- 次のコマンドを実行してFlinkクラスターを作成します。-nパラメーターはタスクマネージャーの数を示し、-jmはジョブマネージャーのメモリのサイズを示し、-tmは各タスクマネージャーのメモリのサイズを示します。
./bin/yarn-session.sh -n 2 -jm 1024 -tm 1024
- 作成が正常に完了すると、コンソールに次の図が出力されます。赤いボックスのプロンプトに注意して、ポート38301を介してFlinkにアクセスできることを示します。
- ブラウザがCDHサーバーのポート38301にアクセスすると、Flinkサービスが開始されたことがわかります。
- ブラウザーはCDHサーバーの8088ポートにアクセスします。これは、YARNアプリケーション(つまり、Flinkクラスター)が正常に作成されたことを示しています。
- 別のターミナルを開き、SSH経由でCDHサーバーにログインし、hdfsアカウントに切り替えて、次のディレクトリに入ります:/opt/flink-1.7.2
- 次のコマンドを実行すると、Flinkタスク(インストールパッケージに含まれるWordCountの例)が送信され、結果の出力がHDFS wordcount-result.txtファイルに示されます。
bin/flink run ./examples/batch/WordCount.jar \
-input hdfs://192.168.50.134:8020/input/GoneWiththeWind.txt \
-output hdfs://192.168.50.134:8020/wordcount-result.txt
- 実行後、コンソール出力は次のようになります。
- flinkのWordCountタスクの結果はhdfsに保存されます。結果を取り出して見てみましょう:hdfs dfs -get /wordcount-result.txt
- vi下図に示すように、wordcount-result.txtファイルを開くと、タスクが正常に実行され、指定したテキストの各単語の数がカウントされていることがわかります。
- ブラウザーがFlinkページ(CDHサーバーのポート38301)にアクセスすると、タスクの詳細も表示されます。
- このFlinkクラスターを破棄する方法は、コンソールでコマンドを実行することです。yarnapplication -kill application_1580173588985_0002
セッションモードが完了したら、ジョブモードを試してみましょう。
ジョブモード
- 次のコマンドを実行して、パラメーターで指定されたタスク(wordCount.jar)を実行するためだけに使用されるFlinkクラスターを作成し、結果がhdfsのwordcount-result-1.txtファイルに出力されます。
bin/flink run -m yarn-cluster \
-yn 2 \
-yjm 1024 \
-ytm 1024 \
./examples/batch/WordCount.jar \
-input hdfs://192.168.50.134:8020/input/GoneWiththeWind.txt \
-output hdfs://192.168.50.134:8020/wordcount-result-1.txt
- コンソール出力は次のようになり、タスクの実行が完了したことが示されます。
- 十分なメモリとCPUコアがある場合は、次のコマンドをすぐに実行してFlinkクラスターを作成できます。クラスターは、パラメーター(wordCount.jar)で指定されたタスクを実行するためにのみ使用され、結果はhdfsのwordcount-result- 2.txtに出力されますファイル:
bin/flink run -m yarn-cluster \
-yn 2 \
-yjm 1024 \
-ytm 1024 \
./examples/batch/WordCount.jar \
-input hdfs://192.168.50.134:8020/input/GoneWiththeWind.txt \
-output hdfs://192.168.50.134:8020/wordcount-result-2.txt
- タスクが終了したことは、YARN管理ページで確認できます。
- コマンドhdfs dfs -ls /を実行して、正常に生成された結果ファイルを表示します。
- コマンドhdfs dfs -get /wordcount-result-1.txtを実行して結果ファイルをローカルにダウンロードし、データが正常であることを確認します。
- これまでのところ、Flink on Yarnの展開、セットアップ、および送信は実際に完了しています。「Flink on Yarn Trilogy」シリーズも終了しました。Flinkについても学習している場合は、この記事が参考になることを願っています。また、自分の状況に基づいて、要件、より適切な環境を構築するためにansibleスクリプトを変更します。