課外宿題8:ストリームコンピューティング Flink
- 仕事の詳細
コンテンツ
1. Alibaba Cloud - Yunqi Lab - 「PolarDB-X と Flink を使用してリアルタイム データのビッグ スクリーンを構築する」: PolarDB-X と Flink を使用してリアルタイム データのビッグ スクリーンを構築する - Yunqi Lab - オンライン実験 - クラウドの実践- Alibaba Cloud 開発者コミュニティ - Alibaba Cloud 公式実験プラットフォーム - Alibaba Cloud 、または独自の仮想マシンに疑似分散された Flink-1.13.6 をインストールして構成します。
ステップ 3. PolarDB-X で注文テーブルを準備し、SQL ステートメントの名前を変更して注文テーブルにデータを挿入します。 名前を完全に入力します 1 ~ 3。ステップ 4. Flink を実行します。最後のステップは、PolarDB-X の注文テーブル注文のデータを Flink の注文テーブル注文に同期し、実行結果のスクリーンショットを撮ることです。ステップ 5. ストレス テスト スクリプトを開始し、GMV をリアルタイムで取得します。最後のステップでは、Flink のリアルタイム計算結果のスクリーンショットが表示されます。
教科書 12.7.1 を参照してください。テストにはサンプルの単語頻度統計、スクリーンショット コマンドと結果が付属しています。
実験要件:
ステップ 3. PolarDB-X で注文テーブルを準備し、SQL ステートメントの名前を変更して注文テーブルにデータを挿入します。 名前を完全に入力します 1 ~ 3。ステップ 4. Flink を実行します。最後のステップは、PolarDB-X の注文テーブル注文のデータを Flink の注文テーブル注文に同期し、実行結果のスクリーンショットを撮ることです。ステップ 5. ストレス テスト スクリプトを開始し、GMV をリアルタイムで取得します。最後のステップでは、Flink のリアルタイム計算結果のスクリーンショットが表示されます。教科書 12.7.1 を参照してください。テストにはサンプルの単語頻度統計、スクリーンショット コマンドと結果が付属しています。この実験で体験できた Flink のコンピューティング機能を簡単に説明してください。
2. Flink を含む実験リソース
Alibaba Cloud Experiment「EMR ベースのオフライン データ分析」EMR ベースのオフライン データ分析 - Yunqi Lab - Online Experiment - Cloud Practice - Alibaba Cloud Developer Community - Alibaba Cloud Official Experiment Platform - Alibaba Cloud、ステップ 2. クラスターにログインし、 フリンクを開始します。Huawei Cloud Experiment「MRS 基本入門演習」https://lab.huaweicloud.com/testdetail_1970 でクラスターを作成し、Flink を起動します。
3.「授業評価」の内容を簡単に回答します。
- Flink クライアントとは何ですか? Flink クライアントは、Flink クラスターと通信するために使用されるツールです。これは通常、Flink ジョブの送信や Flink クラスターの管理に使用できるコマンド ライン ツールです。Flink クライアントは、ローカル マシンまたはリモート マシン上で実行できます。
- Flink テーブルを作成するにはどうすればよいですか? 実験にデータをインポートするにはどうすればよいですか? Flink テーブルは、Flink SQL の CREATE TABLE ステートメントを通じて作成できます。次に例を示します。
- CREATE TABLE myTable (
- id VARCHAR 、
- 名前 VARCHAR 、
- 年齢INT
- )付き(
- 'connector.type' = 'ファイルシステム' ,
- 'connector.path' = '/path/to/myTable' ,
- 'format.type' = 'csv'
- );
上記のステートメントは、id、name、age の 3 つの列を持つ「myTable」という名前のテーブルを作成します。テーブルのデータは、指定されたファイル システム パス「/path/to/myTable」から取得され、CSV 形式です。
実験にデータをインポートするには、次のようなコマンドを使用できます。
- フリンクラン-c com 。例。MyImporter 私のインポーター。jar --入力/パス/への/データ--出力/パス/への/ myTable
上記のコマンドは、「my-importer」という名前の Java アプリケーションを実行します。これにより、指定されたパスにあるデータを Flink テーブルにインポートできます。
- Flinkテーブルのデータをクエリするにはどうすればよいですか? リアルタイムの統計を取得するにはどうすればよいですか? Flink SQL の SELECT ステートメントを使用して、Flink テーブル内のデータをクエリできます。次に例を示します。
- SELECT COUNT (*) FROM myTable WHERE 年齢> 18 ;
上記のステートメントは、テーブル「myTable」内の 18 歳以上の人の数をクエリします。
リアルタイム統計を実行するには、Flink ストリーム処理 API と演算子を使用して、次のようなさまざまな変換操作をデータ ストリームに定義して適用できます。
- DataStream < Tuple2 < String , Integer >> wordCounts = textStream
- 。flatMap (( String文, Collector < Tuple2 < String , Integer >> out ) -> {
- for ( String word :文.split ( " " ) ) {
- 出ます。collect ( new Tuple2 < String , Integer >( word , 1 ));
- }
- })
- 。keyBy ( 0 )
- 。timeWindow (時間.秒( 5 ))
- 。合計( 1 );
上記のコードは、入力データ ストリームをタプルのストリームに変換します。各タプルは単語とその出現回数を表します。その後、各単語は 5 秒の時間枠でグループ化され、集計されます。最後に、合計演算を通じて集計計算が実行されます。
- ストレス テスト スクリプトは何に使用されますか? ストレス テスト スクリプトは、多数のユーザーの訪問とクエリをシミュレートするために使用されるツールです。短期間に大量のリクエストを送信してシステムのパフォーマンスと信頼性をテストすることで、システムのストレス テストを行うことができます。ストレス テスト スクリプトは、Python、Java、JMeter などのさまざまなプログラミング言語やフレームワークを使用して作成できます。
- Flink はどのようにバッチ処理計算を行うのですか? Flink はバッチ処理計算をサポートしており、DataSet API を使用してバッチ処理計算を実行できます。DataSet API は DataStream API に似ていますが、無限のストリーミング データではなく、制限されたデータ セットを処理できます。
4.12.9 演習
- 従来のデータ処理アーキテクチャには主に次の制限があります。
- データ処理能力には制限があります。ハードウェア リソースとアルゴリズム モデルの制限により、従来のデータ処理アーキテクチャは大量のデータの処理要件に耐えることができません。
- データ処理が非効率的です。従来のデータ処理アーキテクチャでは、静的データをバッチ処理する必要があり、リアルタイム処理ができないため、処理効率が低くなってしまいました。
- データ処理の複雑性は高い。従来のデータ処理アーキテクチャでは、さまざまな種類や形式のデータの処理と変換が必要なため、処理プロセスの作成と維持が複雑になります。
- ビッグデータ Lambda アーキテクチャの利点:
- バッチ処理とストリーム処理の両方のニーズに対応し、リアルタイムかつオフラインでのデータ処理を実現します。
- 長いデータ処理スパン、多様な処理方法、強力な処理能力の特徴を備えており、さまざまなデータ処理シナリオに適しています。
- 複数の処理レベルを使用して、データの効率的な処理と保存を実現し、データ処理の効率と品質を向上させることができます。
制限:
- 構築と保守のコストが高くつくため、処理レベルのアーキテクチャとテクノロジーの選択を同時に検討する必要があります。
- シナリオによっては、遅延の問題が発生する可能性があるため、実際のニーズに基づいて最適化する必要があります。
- ストリーム処理アーキテクチャの利点:
- リアルタイムなデータ処理を実現し、リアルタイムにデータ処理結果を得ることができます。
- 処理効率が高く、大量のデータの処理要件に耐えることができます。
- 処理の複雑性が低く、簡単な処理プロセスでデータのリアルタイム処理や分析が実現できます。
- 企業における Flink のアプリケーション シナリオ:
- リアルタイムのリスク管理と不正行為の検出。
- リアルタイム監視および警報システム。
- リアルタイムのログ分析と処理。
- リアルタイムの広告配信と分析。
- リアルタイムの推奨事項とパーソナライズされたサービス。
- Flink コア コンポーネント スタックには次のレベルが含まれています。
- 基本コンポーネント層: データ ソース、データ レシーバー、データ コンバーター、その他のコンポーネントを含みます。
- ランタイム環境層: 実行エンジン、リソース マネージャー、フォールト トレランス メカニズム、その他のコンポーネントを含みます。
- ユーザー API レイヤー: DataStream API、Table API、SQL API などのコンポーネントが含まれます。
- JobManager はタスクのスケジューリングやステータス管理などを含むタスク全体の調整と制御を担当し、TaskManager はデータの読み取り、計算、出力などのタスクの特定の実行を担当します。
- Flinkプログラミング モデルの階層構造には、次の 3 つのレベルが含まれます。
- ストリーム指向のデータ処理: 基本的なデータ変換操作を通じてデータ ストリームを分析および処理します。
- ステートフル ストリーム処理: さまざまな時点でデータの状態管理を実行することにより、より複雑なデータ処理操作を実現できます。
- イベント駆動型アプリケーション: ストリーム データ処理結果のイベント駆動型により、より高度なアプリケーション シナリオを実現できます。
- Spark、Flink、Storm はいずれも一般的な分散ストリーム処理システムですが、実装と機能が異なります。
Spark : Spark は元々バッチ処理用に開発されましたが、現在はストリーム処理をサポートしており、大規模なデータセットやメモリ内のストリーミング データを処理できるようになり、Java、Python、Scala などのプログラミング言語をサポートします。Spark は DAG (有向非巡回グラフ) を使用してデータ フローを処理し、その強力なデータ キャッシュとメモリ処理機能により、ビッグ データを処理する際に非常に効率的になります。Spark は、機械学習、グラフ処理、SQL 処理などのさまざまな機能も統合しており、非常に包括的なソリューションとなっています。
Flink : Flink は、Storm の代替と考えられるメモリベースのストリーム処理フレームワークです。バッチ処理とストリーム処理をサポートし、Storm よりも耐障害性とパフォーマンスが優れており、Java および Scala プログラミング言語をサポートしています。Flink はイベント時間ベースの処理を使用し、ウィンドウ操作と状態管理機能をサポートします。Flink は、さまざまなシナリオで高度にカスタマイズできる非常に柔軟なシステムです。
Storm : Storm は、リアルタイム データ ストリーム処理で広く使用されている分散ストリーム処理システムです。Spark や Flink とは異なり、Storm にはメモリ内キャッシュ機能がなく、リアルタイム データ ストリームを処理するにはデータをキャッシュする必要があるため、大規模なデータを処理する場合は制限される可能性があります。Storm は Java、Scala、および Clojure プログラミング言語をサポートし、優れたパフォーマンスと信頼性を備え、低遅延と高スループットの処理を提供します。
まとめると、Spark は大規模なデータセットやストリーミング データの処理に適しており、包括的な機能を提供できます。Flink はさまざまなシナリオで高度にカスタマイズできる柔軟なフレームワークであり、Storm はリアルタイムのデータ ストリーム処理に適しています。さまざまなシナリオやデータ処理方法に適したフレームワークが異なるため、ニーズに合った処理フレームワークを選択することが重要です。