1. Flinkの概要1.1 基本的な紹介主な機能には、バッチとストリームの統合、正確な状態管理、イベント時間のサポート、および正確に 1 回の状態一貫性の保証が含まれます。 Flink は、YARN、Mesos、Kubernetes などのさまざまなリソース管理フレームワークで実行できるだけでなく、ベアメタル クラスターでの独立したデプロイメントもサポートします。高可用性オプションを有効にすると、単一障害点がなくなります。 ここで説明する概念は 2 つあります。
1.2 アプリケーションシナリオデータ駆動型 イベント駆動型アプリケーションでは、リモート データベースをクエリする必要がありません。ローカル データ アクセスにより、スループットの向上とレイテンシの低減が可能になります。不正防止のケースを例にとると、DataDriven は処理ルール モデルを DatastreamAPI に書き込み、ロジック全体を Flink エンジンに抽象化します。イベントまたはデータが流入すると、対応するルール モデルがトリガーされます。ルール内の条件がトリガーされると、DataDriven はそれをすばやく処理し、ビジネス アプリケーションに通知します。 データ分析 バッチ分析と比較して、ストリーミング分析では定期的なデータインポートとクエリプロセスが不要になるため、イベントからインジケーターを取得する際のレイテンシが低くなります。さらに、バッチクエリは定期的なインポートや入力境界によって生じる人工的なデータ境界に対処する必要がありますが、ストリーミングクエリではこの問題を考慮する必要がありません。Flink は継続的なストリーミング分析とバッチ分析の両方に優れたサポートを提供し、データをリアルタイムで処理および分析します。リアルタイムの大画面やリアルタイムレポートなどのシナリオで広く使用されています。 データパイプライン 定期的な ETL タスクと比較して、継続的なデータ パイプラインは、データを宛先に移動するレイテンシを大幅に削減できます。たとえば、上流の StreamETL に基づいて、リアルタイムのデータ クリーニングまたは拡張を実行し、下流にリアルタイム データ ウェアハウスを構築して、データ クエリの適時性を確保し、高効率のデータ クエリ リンクを形成できます。このシナリオは、メディア ストリームの推奨や検索エンジンで非常に一般的です。 2. 環境の展開2.1. インストールパッケージの管理
2.2 クラスタ構成管理ノード
分散ノード
2 つの構成はすべてのクラスター ノードに同期されます。 2.3. 開始と停止
起動ログ:
2.4 ウェブインターフェースアクセス: 3. 開発参入事例3.1 データスクリプト各ノードにデータ スクリプトを配布します。
3.2. 基本的な依存関係の紹介以下は Java で記述された基本的なケースです。 <依存関係> <依存関係> <グループ ID>org.apache.flink</グループ ID> <artifactId>flink-java</artifactId> <バージョン>1.7.0</バージョン> </依存関係> <依存関係> <グループ ID>org.apache.flink</グループ ID> <artifactId>flink-ストリーミング-java_2.11</artifactId> <バージョン>1.7.0</バージョン> </依存関係> </依存関係> 3.3. ファイルデータの読み取りここでは、ファイル内のデータを直接読み取り、プログラムフローを通じて各単語の出現回数を分析します。 パブリッククラス WordCount { パブリック静的void main(String[] args)は例外をスローします{ // ファイルデータを読み取ります readFile(); } パブリック静的void readFile()は例外をスローします{ // 1. 実行環境を作成する ExecutionEnvironment environment = ExecutionEnvironment.getExecutionEnvironment(); // 2. データファイルを読み取る String filePath = "/var/flink/test/word.txt"; DataSet<String> inputFile = environment.readTextFile(filePath); // 3. グループ化して合計する DataSet<Tuple2<String, Integer>> wordDataSet = inputFile.flatMap(new WordFlatMapFunction( )).groupBy(0).sum(1); // 4. 処理結果を印刷する wordDataSet.print(); } //データの読み取りと切り取り方法 static class WordFlatMapFunction implements FlatMapFunction<String, Tuple2<String, Integer>> { @オーバーライド パブリック void flatMap(String 入力、Collector<Tuple2<String, Integer>> コレクター){ 文字列[] wordArr = input.split(","); for (文字列 word : wordArr) { コレクター.collect(新しいTuple2<>(word, 1)); } } } } 3.4. ポートデータの読み取りhop01 サービスにポートを作成し、ポートへのデータ送信をシミュレートします。
Flink プログラムを使用して、ポートのデータ コンテンツを読み取って分析します。 パブリッククラス WordCount { パブリック静的void main(String[] args)は例外をスローします{ // ポートデータを読み取る readPort(); } パブリック静的void readPort()は例外をスローします{ // 1. 実行環境を作成する StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment(); // 2. ソケット データ ポートを読み取ります。DataStreamSource<String> inputStream = environment.socketTextStream("hop01", 5566); // 3. データの読み取りと切り取り方法 SingleOutputStreamOperator<Tuple2<String, Integer>> resultDataStream = inputStream.flatMap( 新しい FlatMapFunction<String, Tuple2<String, Integer>>() { @オーバーライド パブリック void flatMap(String 入力、Collector<Tuple2<String, Integer>> コレクター) { 文字列[] wordArr = input.split(","); for (文字列 word : wordArr) { コレクター.collect(新しいTuple2<>(word, 1)); } } }).keyBy(0).sum(1); // 4. 分析結果を印刷する resultDataStream.print(); // 5. 環境の起動 environment.execute(); } } IV. 動作メカニズム4.1、Flinkクライアントクライアントは、データ ストリームを準備して JobManager ノードに送信するために使用されます。その後、特定のニーズに応じて、クライアントは直接切断するか、接続状態を維持してタスク処理の結果を待つことができます。 4.2 ジョブマネージャーFlink クラスターでは、JobManger ノードと少なくとも 1 つの TaskManager ノードが開始されます。JobManager は、クライアントから送信されたタスクを受信すると、タスクを調整して特定の TaskManager ノードに送信し、実行します。TaskManager ノードは、ハートビートと処理情報を JobManager に送信します。 4.3 タスクマネージャースロットは、TaskManager における最小のリソース スケジューリング単位です。スロットの数は起動時に設定されます。各スロットは、タスクを開始し、JobManager ノードによってデプロイされたタスクを受信し、特定の分析と処理を実行できます。 5. ソースコードアドレスGitHub アドレス https://github.com/cicadasmile/big-data-parent GitEE アドレス https://gitee.com/cicadasmile/big-data-parent 上記は、リアルタイムコンピューティングフレームワークFlinkクラスターの構築と動作メカニズムの詳細についての簡単な説明です。リアルタイムコンピューティングフレームワークFlinkクラスターの構築と動作メカニズムの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: MySQL がデータの削除と挿入に非常に時間がかかる問題の解決策
>>: Vue3 がデータ監視を実装するためにプロキシを使用する理由の分析
目次1. 最も単純なサーバー側の例2. バインドシステムコール2.1、inet_bind 2.2、i...
目次序文-リンクカスタムネットワーク質問する序文前回は、 -Linkパラメータを使用してコンテナ間の...
概要: MySQL のパフォーマンス最適化について話すとき、誰もがクエリ パフォーマンスを向上させる...
MTR は Mini-Transaction の略です。名前が示すように、これは「最小のトランザクシ...
HTTPS ウェブサイトの構築コストが下がるにつれて、ほとんどのウェブサイトが HTTPS プロトコ...
目次序文1. 公式サイトからMySQLをダウンロードする2. 解凍ファイルを設定する3. 初期化4....
このセクションでは、テキストの変更の詳細から始めます。これにより、読者はさまざまな HTML フォン...
前回の記事では、JS を使って簡単な揺れ効果を実現する方法を紹介しました。ご興味があればクリックして...
CSS のFlex(彈性布局)すると、Web ページのレイアウトを柔軟に制御できます。Flex Fl...
目次1. jsステートメント2番目、js配列3. js関数4. メイヴンV. 結論1. jsステート...
display:bolck/none によるメニューバーの完成の効果 図 1:まず、完成したエフェク...
テキスト入力でプレースホルダーを使用していますが、問題なく動作します。しかし、選択ボックスにはプレー...
目次概要1. NULL値のテスト2. ユーザー入力を読み取る導入事実の根源はどこにあるのでしょうか?...
で+ 時間 17:23に at> touch /mnt/file{1..9} ##アクションを...
目次1. Nginxロケーションの基本設定1.1 Nginx 設定ファイル1.2 Pythonスクリ...