TR-4947:『Apache Kafka workload with NetApp NFS storage - Functional Validation and performance』
ネットアップShantanu Chakole、Karthikeyan Nagalingam、Joe Scott
Kafkaは、大量のメッセージデータを受け入れることができる堅牢なキューを備えた分散型パブリッシュサブスクライブメッセージングシステムです。Kafkaを使用すると、アプリケーションは非常に高速な方法でトピックへのデータの書き込みと読み取りを行うことができます。フォールトトレランスと拡張性を備えているため、多くのデータストリームを迅速に取り込み、移動するための信頼性の高い方法として、ビッグデータ分野でよく使用されています。ユースケースには、ストリーム処理、Webサイトアクティビティの追跡、指標の収集と監視、ログの集約、リアルタイム分析などがあります。
NFSに対する通常のKafka処理は問題なく機能しますが、NFSで実行されているKafkaクラスタのサイズ変更中や再パーティション中に、silly renameの問題によってアプリケーションがクラッシュします。これは、負荷分散やメンテナンスのためにKafkaクラスタのサイズを変更または再パーティションする必要があるため、重要な問題 です。詳細については、こちらを参照して "こちらをご覧ください"ください。
このドキュメントでは、次の項目について説明します。
-
silly-renameの問題と解決策 の検証
-
CPU使用率を削減してI/O待機時間を短縮します
-
Kafkaブローカーのリカバリ時間の短縮
-
クラウドとオンプレミスでのパフォーマンス
KafkaワークロードにNFSストレージを使用する理由
本番アプリケーションのKafkaワークロードでは、アプリケーション間で大量のデータをストリーミングすることができます。このデータは、Kafkaクラスタ内のKafkaブローカーノードに保持され、格納されます。Kafkaは可用性と並列処理でも知られています。Kafkaは、トピックをパーティションに分割し、それらのパーティションをクラスタ全体に複製することで実現します。これは、最終的には、Kafkaクラスタを通過する膨大な量のデータのサイズが一般的に倍増されることを意味します。NFSを使用すると、ブローカーの数が非常に迅速かつ簡単に変更されるため、データのリバランシングが可能になります。大規模な環境では、ブローカーの数が変更されたときにDAS間でデータをリバランシングするのは非常に時間がかかり、ほとんどのKafka環境ではブローカーの数が頻繁に変更されます。
その他にも、次のようなメリットがあります。
-
成熟度。 NFSは成熟したプロトコルであり、実装、セキュリティ保護、使用のほとんどの側面がよく理解されています。
-
オープン。 NFSはオープンプロトコルであり、その継続的な開発はインターネット仕様で無料でオープンなネットワークプロトコルとして文書化されています。
-
コスト効率に優れています。 NFSは、ネットワークファイル共有用の低コストの解決策 であり、既存のネットワークインフラストラクチャを使用しているため、セットアップが簡単です。
-
一元管理 NFSの一元管理により'個のユーザー・システムでソフトウェアやディスク・スペースを追加する必要がなくなります
-
分散。 NFSを分散ファイルシステムとして使用できるため、リムーバブルメディアストレージデバイスの必要性が軽減されます。
ネットアップがKafkaワークロードに最適な理由
ネットアップのNFS実装はプロトコルのゴールドスタンダードとみなされ、無数のエンタープライズNAS環境で使用されています。ネットアップの信頼性に加えて、次のようなメリットもあります。
-
信頼性と効率性
-
拡張性とパフォーマンス
-
ハイアベイラビリティ(NetApp ONTAP クラスタ内のHAパートナー)
-
データ保護
-
*ディザスタリカバリ(NetApp SnapMirror)。*サイトがダウンしたか、別のサイトから始めて中断したところから作業を続行したい。
-
ストレージシステムの管理性(NetApp OnCommand を使用した管理)。
-
*ロードバランシング。*クラスタでは、異なるノードでホストされているデータLIFから異なるボリュームにアクセスできます。
-
ノンストップオペレーション。 LIFやボリュームの移動はNFSクライアントに対して透過的です。
-