ホームページ >Java >&#&チュートリアル >リアルタイム データ送信: Flume と Kafka から選択する 2 つのソリューション
Flume と Kafka はどちらもリアルタイム データ用のオープンソース プラットフォームです伝染 ; 感染。これらはすべて、高スループット、低遅延、および信頼性を備えています。ただし、その設計と実装にはいくつかの違いがあります。
Flume は、信頼性が高くスケーラブルな分散型ログ収集、集約、および送信システムです。ファイル、Syslog、Taildir、Exec、HTTP などの複数のデータ ソースをサポートします。 Flume は、テキスト、JSON、Avro などの複数のデータ形式もサポートしています。
Flume のアーキテクチャを以下の図に示します:
[写真]
Flume のコンポーネントには次のものが含まれます:
Flume の構成ファイルは次のとおりです。
# Name the agent a1.sources = r1 # Describe the source r1.type = exec r1.command = tail -F /var/log/messages # Describe the sink s1.type = hdfs s1.hdfs.path = hdfs://namenode:8020/flume/logs # Use a channel which buffers events in memory c1.type = memory c1.capacity = 1000 c1.transactionCapacity = 100 # Bind the source and sink to the channel a1.channels = c1 c1.sinks = s1
Kafka は、分散型、スケーラブル、フォールトトレラントなメッセージング システムです。テキスト、JSON、Avro などの複数のメッセージ形式をサポートします。 Kafka は、Java、Python、C、Go などの複数のクライアント言語もサポートしています。
Kafka のアーキテクチャを次の図に示します。
[図]
Kafka のコンポーネントは次のとおりです。
Kafka の設定ファイルは次のとおりです:
# Create a topic named "my-topic" with 3 partitions and a replication factor of 2 kafka-topics --create --topic my-topic --partitions 3 --replication-factor 2 # Start a Kafka producer kafka-console-producer --topic my-topic # Start a Kafka consumer kafka-console-consumer --topic my-topic --from-beginning
Flume と Kafka は両方とも、リアルタイム データ送信のための優れたプラットフォームです。これらはすべて、高スループット、低遅延、および信頼性を備えています。ただし、その設計と実装にはいくつかの違いがあります。
Flume は、信頼性が高くスケーラブルな分散型ログ収集、集約、送信システムです。複数のデータ ソースとデータ形式をサポートします。 Flume の設定ファイルは理解しやすく、使いやすいです。
Kafka は、分散型、スケーラブル、フォールトトレラントなメッセージング システムです。複数のメッセージ形式とクライアント言語をサポートします。 Kafka の構成ファイルは比較的複雑であり、一定の学習コストが必要です。
Flume と Kafka はどちらも、リアルタイム データ送信のための優れたプラットフォームです。これらはすべて、高スループット、低遅延、および信頼性を備えています。ただし、その設計と実装にはいくつかの違いがあります。
Flume は、ログの収集、集約、送信に適しています。 Kafka はメッセージングに適しています。
次は、Flume を使用してログを収集および送信するコード例です。
# Create a Flume agent agent = AgentBuilder.newInstance().build() # Create a source source = ExecSourceBuilder.newInstance().setCommand("tail -F /var/log/messages").build() # Create a channel channel = MemoryChannelBuilder.newInstance().setCapacity(1000).setTransactionCapacity(100).build() # Create a sink sink = HDFSSinkBuilder.newInstance().setBasePath("hdfs://namenode:8020/flume/logs").build() # Add the source, channel, and sink to the agent agent.addSource("r1", source) agent.addChannel("c1", channel) agent.addSink("s1", sink) # Start the agent agent.start()
次は、Kafka を使用してメッセージを送受信するコード例です。 :
うわー以上がリアルタイム データ送信: Flume と Kafka から選択する 2 つのソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。