大数据摄取 - Flafka 用例

Big Data ingestion - Flafka use cases

我看到大数据社区非常热衷于以多种方式使用 Flafka 进行数据摄取,但我还没有真正理解为什么。

为了更好地理解这一点,我开发了一个简单的示例,即摄取 Twitter 数据并将它们移动到多个接收器(HDFS、Storm、HBase)。

我通过以下两种方式完成了 ingestion 部分的实现: (1) Plain Kafka Java 有多个消费者的生产者 (2) Flume agent #1 (Twitter source + Kafka sink) | (潜在)Flume agent #2(Kafka source + multiple sinks)。我没有真正看到开发任何这些解决方案的复杂性有什么不同(不是生产系统,我无法评论性能)——我在网上发现的只是 Flafka 的一个很好的用例是来自多个数据的数据在不同地方消耗之前需要聚集在一个地方的资源。

有人可以解释为什么我会使用 Flume+Kafka 而不是普通 Kafka 或普通 Flume 吗?

人们通常会结合使用 Flume 和 Kafka,因为 Flume 有一组很棒的(经过实战检验的)连接器(HDFS、Twitter、HBase 等)和 Kafka 带来了 弹性。此外,Kafka 有助于在节点之间分发 Flume 事件。

编辑:

Kafka replicates the log for each topic's partitions across a configurable number of servers (you can set this replication factor on a topic-by-topic basis). This allows automatic failover to these replicas when a server in the cluster fails so messages remain available in the presence of failures. -- https://kafka.apache.org/documentation#replication

因此,一旦Flume收到消息到Kafka,你就可以保证你的数据不会丢失。注意:您可以在摄取的每个阶段将 Kafka 与 Flume 集成(即 Kafka 也可以用作源、通道和接收器)。