A. F. リンクのご紹介
近年ではビッグデータの急速な発展は、有名なHadoopの、嵐、そして後にスパークを含め、多くの人気のあるオープンソースのコミュニティが存在している、それらはすべて自分専用のアプリケーションシナリオを持っています。スパークは、だけでなく、メモリ・コンピューティングの急速な発展を獲得する賭けのためのメモリに、コンピューティング、メモリ内のその種の最初を開きました。スパーク火の図は、多かれ少なかれ他の分散コンピューティングシステムを影。FLINKのように、また、この時点で静かに開発。
海外のいくつかの地域社会では、多くの人が大きな計算エンジンデータは4つの世代に分かれているだろう、当然のことながら、多くの人が同意しないだろうが存在しています。レッツだと思うしてみようと話し合います。
全ての第1世代のコンピューティングエンジンの最初のは、間違いなくのHadoopのMapReduceを行います。ここでは、不慣れのMapReduceすべきではない、それが二相に分け、それぞれのマップと減少します。上位層アプリケーションでは、私たちも、このような反復計算などの完全なアルゴリズムを、完了するために、上位層のアプリケーションで複数のジョブのシリーズを実装する必要があり、アルゴリズムを分割する方法を見つける必要があります。
サポートDAGの枠組みを出産した、このような欠点に起因します。したがって、DAG支持フレームは、第二世代の計算エンジンに分割されます。より上位OozieなどTEZ。ここでは、達成様々なDAGとの違いを詳しく見て行きますが、時間のためのTEZとOozie、それらのほとんどまたはバッチタスク。
次のステップは、コンピューティングエンジンの第三世代の代表としてスパークすることにあります。第三世代のコンピューティングエンジン特性は、主に(ジョブ交差しない)内部DAGジョブによって支持され、リアルタイムに強調コンピューティング。ここでは、多くの人々は、コンピューティングエンジンの第三世代にも仕事の良いバッチを実行することができると思います。
第三世代のコンピューティングエンジンの出現により、このような性能は、対流およびSQLサポート種々の反復計算と同様の計算などの上位層アプリケーションの迅速な開発を促進します。FLINKの誕生は、第四世代に分類されました。これは、対流FLINKサポートの計算、及び上記複数のリアルタイム工程で主にあるべきです。もちろんFLINKはまた、バッチタスク、およびDAG操作をサポートすることができます。
二つ。 F リンクプロフィール
アパッチFLINKは、分散処理エンジンであり、有界および非有界データのフレームは、計算ステートフルストリーム。FLINKは、任意の計算を実行するためにすべての一般的なクラスタ環境、メモリの速度と規模で実行するように設計されています。
1.無制限と有界流れ
任意のタイプのデータは、イベントのストリームとして生成されます。クレジットカード取引、センサー測定機ログまたはWebサイトやモバイルアプリケーションのユーザー相互作用は、これらすべてのデータは、ストリームとして生成されます。
データは有界やストリーミングなど無制限することができます。
-
無制限ストリームが始まりますがノーエンドの定義があります。彼らは世代で終了し、データを提供していません。私たちは、摂取イベントの直後にイベントを処理しなければならない無限の流れに対処し続けなければなりません。入力は無制限であり、時間の任意の時点で行われることはありませんので、すべての入力データは、到着を待つことができません。典型的には、処理無制限データが特定の順序を必要とする(例えば、イベントのシーケンス)摂取事象、結果の整合性を推測することができるようになります。
-
定義された最初と最後で有界流れ。これは、任意の計算を実行する前に、すべてのデータストリームを有界摂取することにより処理することができます。あなたは常にソートされたデータ・セットを持つようにバインドすることができますので、有界プロセスは、整然とした流れの摂取量を必要としません。バインド処理フローは、バッチとして知られています。
有界と無制限のデータセットを扱うにあるApache FLINK良いです。アプリケーションフローの任意のタイプを実行することができる、時間と状態FLINKの動作の正確な制御に無制限です。内部ストリーム処理アルゴリズムとデータ構造、アルゴリズムと優れた性能を生成するように設計された固定サイズの特定のデータセットのデータ構造によって囲ま。
2.デプロイアプリケーションの任意の場所
アパッチFLINKは、分散システム、アプリケーションを実行するために必要な計算リソースです。すべての一般的なクラスタリソースマネージャと(のようなFLINK HadoopのYARN、ApacheのMesosと統合Kubernetes)、しかしまた、独立したクラスタとして動作するように設定することができます。
FLINKは、以前に記載されている各リソースマネージャに適しなるように設計されています。これは、これらのモデルはFLINKは、その通常の方法で各リソースマネージャと対話できるように、特定を通じて展開モードのリソースマネージャで行われます。
FLINKは、展開アプリケーションは、FLINKは自動的に並列構成によれば、アプリケーションのリソース要件を認識し、リソースマネージャからそれらを要求します。障害が発生した場合、FLINKは、新しいリソースを要求することにより、障害が発生したコンテナを交換します。送信するすべての通信または制御アプリケーションは、REST呼び出しによって行われています。これはFLINKは、多くの環境に統合簡素化します。
3.任意の割合でアプリケーションを実行します。
FLINKは、任意のスケールステートフルなストリーミングアプリケーション上で動作するように設計されています。アプリケーションは、分散と同時にクラスタで実行されるタスクの数千に平行にすることができます。したがって、アプリケーションは、CPU、メインメモリ、ディスク、およびネットワークIOのほぼ無制限の量を使用することができます。また、FLINKは容易非常に大規模なアプリケーションの状態を維持することができます。ワンタイム状態の一貫性を確保しつつ、その非同期および増分チェックポイントアルゴリズムが、処理遅延に対する影響を最小限に抑えることを保証します。
ユーザーが報告されたため、本番環境で実行されているFLINKアプリケーションデジタル印象的なのスケーラビリティなどを、
- 一日あたりのイベントのアプリケーション処理兆、
- 複数のTBのアプリケーションの保守状況、および
- カーネルで実行されるアプリケーションの数千人。
メモリのパフォーマンスの4.
地元の国賓訪問のためFLINKステートフルなアプリケーションには、最適化されています。タスクの状態は、常に状態のサイズは、ディスクアクセスのデータ構造に格納され、効率的で、利用可能なメモリを超える場合、メモリ内に残り、又は。したがって、非常に低い処理遅延をもたらす、すべての計算を実行するためにローカルタスク(通常メモリ)状態にアクセスすることによって。障害発生時に一貫性のある状態を確保するために、ローカルの永続ストレージに定期的な点検および非同期状態を経てFLINK。
5.Flinkアーキテクチャ
FLINKは地元の高速反復ループの反復と、いくつかのタスクをサポートすることができます。FLINKとは、メモリ管理をカスタマイズすることができます。この時点で、あなたは、アプリケーション層に完全にスパークFLINKし、その後、FLINKなしメモリを比較したい場合。スパーク(メモリ不足)相対FLINK、OOMの原因は、より傾向がある理由です。そして、フレームワーク自体のシナリオはFLINKは嵐に似ている、です。あなたが前に嵐や水路の読者を知るならば、FLINKの概念とアーキテクチャの多くを理解することは容易であろう。私たちは最初、図FLINKのアーキテクチャを見てみましょう。
私たちは、最も基本的な概念、クライアント、JobManagerおよびTaskManagerのいくつかを理解することができFLINK。クライアントが実行するタスクを分散するJobManager、JobManagerタスクマネージャにタスクを送信するために、その後、タスクマネージャは、ジョブステータスハートビートを報告します。一部の人々は錯覚Hadoopの世代へのバックのようなものを持っている必要があり、ここを参照してください。実際、アーキテクチャ図からJobTracker年のように、タスクマネージャもTaskTracker年のように、JobManagerを表示します。しかし、最も重要な違いは、タスクマネージャはいストリーム(ストリーム)との間にあるのものがあります。第二に、Hadoopの生成のみ地図間FLINKは、それは段階の数であってもよく、内部とタスクマネージャタスクマネージャとの間のデータ転送を持つことになり、Hadoopのとは異なり、地図を削減するために固定されている、シャッフルを減らし。
三。FLINK 技術特性
1. ストリーム処理特性
高スループット、低遅延、高パフォーマンスのストリーミングをサポートしています
イベント時間(ウィンドウ)の操作でサポート窓
かならず一度セマンティクス状態計算をサポートしています
柔軟性の高いサポート窓口(ウィンドウ)の操作、サポート時間、回数、セッション、およびデータ駆動型の窓オペレータ
バックプレッシャ機能との継続的なフロー・モデルをサポートしています
実装軽量サポートフォールトトレランス分散スナップショット(スナップショット)
ストリーミングおよびストリーミング治療上の実行を処理するサポートバッチ
JVM内部FLINKは、独自のメモリ管理を実装します
反復計算をサポートしています
自動最適化手順をサポートしています:シャッフルは、特定の場合、高価な並べ替え操作を避けるため、中間結果をキャッシュする必要があります
2. APIのサポート
アプリケーションのデータクラスをストリーミング、提供データストリームAPI
DataSetのAPI(のJava / Scalaのためのサポートを)提供するバッチ式の適用については、
3. ライブラリのサポート
サポート機械学習(FlinkML)
チャート分析(ゼリー)のサポート
リレーショナルデータ処理のための支持体(表)
複合イベント処理(CEP)のサポート
4. 統合のサポート
YARNのサポートFLINK
HDFSのサポート
カフカからの入力データのサポート
サポートのApache HBaseの
Hadoopの支援プログラム
サポートタキオン
サポートElasticSearch
RabbitMQのサポート
サポートApacheの嵐
S3のサポート
サポートXtreemFS
5. F. リンク生態系
FLINKは、最初のScalaとJava APIをサポートし、Pythonはまた、テストされています。ゼリーによるFLINKは、操作の観点だけでなく、FlinkMLの機械学習をサポートしています。表は、APIのサポートではなく、SQLの解析と実行のテキストをあるSQLサポートのインタフェースです。完全なスタックのために我々は図を参照することができます。
ビッグデータ・エコシステムのためのより広範なサポートをFLINK、そのサブプロジェクトはまた、コネクタの多くを達成しました。最も身近な、もちろん、HadoopのHDFSと統合されています。第二に、FLINKもタキオン、S3およびMapRFSのサポートを発表しました。しかしタキオンとS3のサポートのために、HadoopのHDFSはタキオンとS3を使用することであるパッケージングのこの層を介して達成される、Hadoopのだけでなく、Hadoopの(コア-site.xmlの)の構成を変更しなければなりません。ブラウザコードディレクトリFLINK場合、我々は、このような水路やカフカなど多くのコネクター・プロジェクトを、表示されます。
四。FLINKプログラミングモデル
FLINKは、フロー/バッチ・アプリケーションを開発するために、異なる抽象化レベルを提供します。