Spark Streaming は、マイクロバッチ処理に基づくストリーミング コンピューティング エンジンであり、通常は Spark Core または Spark Core と Spark Sql を使用してデータを処理します。エンタープライズ リアルタイム処理アーキテクチャでは、通常、Spark Streaming と Kafka は、ビッグ データ処理アーキテクチャ全体のコア リンクの 1 つとして統合されます。 異なる Spark および Kafka バージョンでは、データを統合して処理する方法として、レシーバー ベースのアプローチと直接アプローチの 2 つの方法があります。さまざまな統合バージョンのサポートについては、次の図を参照してください。 レシーバーベースのアプローチレシーバーベースのアプローチは、Kafka コンシューマー高レベル API を使用して実装されます。 すべての受信者にとって、Kafka を介して受信されたデータは Spark エグゼキューターに保存されます。基礎となるレイヤーは BlockManager に書き込まれ、デフォルトでは 200 ミリ秒ごとにブロックが生成されます (構成パラメータ spark.streaming.blockInterval によって決定されます)。その後、BlockRdd は Spark ストリーミングによって送信されたジョブによって構築され、最終的に Spark コア タスクとして実行されます。 受信方式に関しては、いくつか注意すべき点があります。
パラメータ spark.locality.wait を使用してデータの局所性を調整することをお勧めします。このパラメータが適切に設定されていない場合、たとえば、10 に設定されていてタスクが 2 秒で処理される場合、データが存在するエグゼキュータにスケジュールされるタスクがますます多くなり、タスクの実行が遅くなったり、失敗したりします (これはデータ スキューとは区別する必要があります)。 複数の Kafka 入力を持つ DStreams は、異なるグループとトピックを使用して作成でき、複数のレシーバーを使用してデータを受信および処理できます。 2 種類の受信機: 信頼できる受信機:
消費者が消費する最大速度を制限するには、次の 3 つのパラメータが関係します。
ジョブが生成されると、現在のジョブの有効範囲内のすべてのブロックが BlockRDD に結合され、1 つのブロックが 1 つのパーティションに対応します。 Kafka082 バージョンのコンシューマー高レベル API には、グループ化の概念があります。コンシューマー グループ内のスレッド数 (コンシューマー数) を Kafka パーティションの数と一致させることをお勧めします。パーティションの数を超えると、一部のコンシューマがアイドル状態になります。 直接アプローチ直接的なアプローチは、Spark Streaming がレシーバーを使用せずに Kafka と統合する方法です。一般的には、エンタープライズの生産環境でより多く使用されます。受信機と比較すると、次の特徴があります。 1. 受信機を使用しない 複数のKafkaストリームを作成して集約する必要がない 不要なCPU使用率を削減 データを受信して BlockManager に書き込むプロセス全体が削減され、実行時に blockId、ネットワーク転送、ディスク読み取りなどを通じてデータを取得するため、効率が向上します。 WALが不要になり、ディスクIO操作がさらに削減されます。 2. 直接方式で生成された RDD は KafkaRDD であり、そのパーティション数は Kafka パーティション数と一致します。消費には同じ数の RDD パーティションが使用されるため、並列度を制御しやすくなります。 注意: この対応は、シャッフルまたは再パーティション操作後に生成された RDD では無効になります。 3. オフセットを手動で管理して、正確に1回のセマンティクスを実装できます。 4. データの局所性の問題。 KafkaRDD のコンピューティング関数では、SimpleConsumer を使用して、指定されたトピック、パーティション、オフセットに従って Kafka データを読み取ります。 ただし、バージョン 010 以降では、Kafka と Spark が同じクラスター内にある場合、データの局所性に問題が発生します。 5. 消費者の消費の最大速度を制限する spark.streaming.kafka.maxRatePerPartition: 各 kafka パーティションからデータを読み取ることができる最大速度 (1 秒あたりのレコード数)。これは各パーティションのレート制限です。システム スループットを評価するには、Kafka パーティションの数を事前に知っておく必要があります。 |
<<: リモートコラボレーションプラットフォームはどこにでもあります。なぜチームワークの中心になったのでしょうか?
>>: GaussDB T分散クラスタデータベースの日常的なメンテナンスは知っておく必要があります
序文:百度ウェブマスタープラットフォームは10月23日に発表しました:ハイパーリンク不正のアルゴリズ...
運用においては、ユーザー数と収益が最も重要な 2 つの指標です。新規ユーザーの維持率を高め、既存ユー...
123systems は、私の記憶が正しければ、ダラスのデータセンターに常に VPS を設置してきま...
はじめに: 雷軍はインターネットの考え方を「集中、極限、口コミ、高速」という 7 つの単語に凝縮しま...
COVID-19 パンデミックにより、データの使用方法だけでなく、データが使用および生成される場所も...
多くの場合、コンテンツの革新にかかるコストは SEO にかかっています。現在、ソーシャル メディアと...
1. 中小企業向けパブリッククラウドコンピューティングの必要性分析クラウド コンピューティングの情報...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています企業サイト...
まず、ゲーム素材のデザイン目標は、プレイアビリティと高品質を強調することであることを強調したいと思い...
私がインターネットに初めて触れた時から今まで、十数個のウェブサイトを構築してきました。ウェブサイト構...
北京時間2月26日、海外メディアの報道によると、有名な市場調査機関ByteMobileが発表した20...
WebhostPython (Python Host) は、2003 年に設立されたアメリカのホステ...
VIP(Very Important Person)は、優等生、上級ユーザー、上級会員などと呼ばれる...
現在、モバイルプログラマティック広告は爆発的な成長を遂げており、さまざまな業界の広告主の予算は徐々に...
3月27日の朝、Facebookは、1,000機以上の太陽光発電レーザードローンを使用して、世界中の...