オープンソースのApache Cassandra、Kafka、Spark、およびElasticsearchを使用する場合と使用しない場合

それはあなたのビジネス目標を達成するためにあなたを有効にする必要があり、それはあなたの技術スタックの残りの部分と一緒にうまく動作 アプリケーションアーキテクチャを構築するためのデータ層技術の選択に関しては、オープンソースのApache Cassandra、Apache Kafka、Apache Spark、Elasticsearchが引き続き人気を博しています。

しかし、それらはすべてのユースケースにとって正しい選択ではありません。

これらの各技術と、これらのオープンソースソリューションの有利なアプリケーションであり、そうではないユースケースのいくつかをより深く見てみましょう。

Apache Cassandra

2007年にFacebookによって最初に作成されたCassandraは、DynamoアーキテクチャとBigtableスタイルのデータモデルを利用して、高可用性と高スケーラビリティを提供するNoSQLデー

Apache Cassandraを使用する必要がある場合

Cassandraは、最高レベルのalways-on可用性を必要とするユースケースに理想的な選択肢です。 また、データベースは、大規模なワークロードを予想している組織や、ワークロードの拡大に応じてサービスが柔軟に成長できるようにしたい(したがって、Cassandraが提供す Cassandraは、複数のデータセンター間で信頼性の高いデータ冗長性とアクティブ-アクティブな操作を提供します。

Cassandraは、データウェアハウスや純粋な分析ストレージを担当する場合(利用可能なSparkコネクタとTableauとHadoopプラグインの使用を考慮する場合でも)、代替よりもリソー また、アプリケーション側でコードを実装する必要性が複雑になる可能性があるため、Cassandraは、特にエンドユーザーのアドホックまたはカスタムクエリの形 さらに、Cassandraはほとんどの酸要件を満たしていません。

Apache Kafka

LinkedInの技術チームによって最初に作成されたApache Kafkaは、スケーラブルで可用性の高いストリーミングプラットフォームとメッセージバスを提供します。 Kafkaは、新しく到着したメッセージがキューの先頭に追加され、読者(消費者)がオフセットに基づいてそれらを消費する分散ログとして機能します。

Apache Kafkaを使用する必要がある場合

apache Kafkaは、一般的にマイクロサービスとサービス指向アーキテクチャを含むユースケースに適しています。 Kafkaは、別々の作業パスを調整できる非常に効果的な作業キューとしても機能し、作業が到着するまで待機して待機することで計算能力を確保できます。 プラットフォームのストリーム処理機能は、異常検出、ロールアップ、集計、およびメトリックの通過に役立ちます。 また、Kafkaは、イベントソーシング、さまざまなマイクロサービス間のデータ調整、および分散システムの外部コミットログを提供するための高度な機能を備えたオプションでもあります。 その他の適切なユースケースには、ログの集計、データのマスキングとフィルタリング、データの強化、不正検出などがあります。

ではない場合は、場合によっては魅力的かもしれませんが、少なくともこのユースケースのKafkaの制限とプロパティを非常にしっかりと理解していないと、kafkaをデータベースまたはレコードソースとして使用することはお勧めできません。 真のデータベースは、ほとんどの場合、操作が簡単で柔軟性が高くなります。 Kafkaは、トピック全体で順番に処理するのにも同様に不適切な選択です。 リアルタイムのオーディオやビデオ、その他の損失の多いデータストリームなど、データパケットをエンドソースに高速に進めることを目的とするユースケースでは、組織はKafkaの代わりに専用のソリューションを使用する必要があります。

Apache Spark

大規模なデータを含むユースケースに適した汎用クラスタコンピューティングフレームワークであるApache Sparkは、データを分割し、それらのセグメントで計算を実行し、ワーカーが他のワーカーからのデータを必要とするまですべての可能な作業を実行するようにします。 この設計により、Sparkは驚異的なスケーラビリティと可用性を提供し、データ損失に対して非常に回復力があります。

Apache Sparkを使用する必要がある場合

Sparkは、大規模な分析を含むユースケース、特に複数のソースを介してデータが到着するケースに適しています。 Sparkは、ETLや、トランザクションデータストアからデータウェアハウスやデータレイクを継続的に移入するために使用される場合、またはデータベースやシステム 既存のデータの上に機械学習パイプラインを構築したり、高遅延ストリーミングを使用したり、対話型、アドホック、または探索的な分析を実行したりすると、Sparkは強力なフィット感を発揮します。 また、Sparkは、コンプライアンスの観点から大規模なデータセットのデータマスキング、データフィルタリング、および監査を提供することで、組織がコンプ

一般に

ではない場合、Sparkはリアルタイム処理や低遅延処理を含むユースケースには最適ではありません。 (Apache Kafkaやその他の技術は、リアルタイムストリーム処理を含む、これらのニーズに優れたエンドツーエンドのレイテンシを提供します。)小規模または単一のデータセットで作業する場合、Sparkはほとんどの場合、オプションが過度になります。 また、データウェアハウスやデータレイクに関しては、Apache Sparkの代わりに高レベルの技術を使用する方が良いでしょうが、Spark用の製品は存在します。

Elasticsearch

Elasticsearchは、非構造化データを検索および分析するための幅広い機能を備えた全文検索エンジンを提供しています。 この技術は、リアルタイムに近いスケーラブルな線形検索を提供し、堅牢なドロップイン検索置換、および重要な分析機能を提供します。

Elasticsearchを使用する必要がある場合

Elasticsearchは、フルテキスト検索、地理的検索、パブリックデータのスクレイピングと組み合わせ、ロギングとログ分析、ビジュアライゼーション、小容量のイベントデータとメトリクスを必要とするケースに強く適しています。

Elasticsearchをデータベースまたはレコードソース、リレーショナルデータ、またはACID要件を満たすために使用しないでください。

補完的な技術の選択

組織に最適な技術の組み合わせを選択する(オープンソースかどうかにかかわらず)は、ソリューション自体を評価するだけではなく、意思決定者は、組織が各ソリューションをテクノロジースタックの一部としてどのように採用し、利用するかを想像しなければならない。 Apache Cassandra、Apache Kafka、Apache Spark、およびElasticsearchは、組織が一緒に利用することに意味をなす技術の特に補完的なセットを提供し、オープンソースの性質のおかげでライセンス料やベンダーロックインからの自由を提供します。 これらの技術をチーム化し、収集した利点を実現することにより、組織は目標を達成し、拡張性が高く、利用可能で、移植性が高く、回復力のあるアプリケーシ

Ben SlaterはInstaclustrのチーフプロダクトオフィサーであり、Apache Cassandra、Apache Spark、Elasticsearch、Apache Kafkaなどのオープンソース技術のマネージドサービスプラットフォームを提供しています。

関連アイテム:

ダグ-カッティングが言うことは、Hadoopの最大の貢献です

十年後、Apache Sparkはまだ強くなっています

コメントを残す

メールアドレスが公開されることはありません。