一、内在逻辑原理
-
Flume:
数据采集:Flume是一个分布式、可靠和高可用的海量日志采集、聚合和传输的系统。它可以用来收集各种数据,如日志数据、事件数据等。 数据传输:Flume通过其内置的通道(如Memory Channel或File Channel)来暂存数据,然后将其发送到Kafka。这使得Flume能够持续、稳定地向Kafka提供数据。 -
Kafka:
缓冲:Kafka作为一个分布式发布订阅消息系统,它在这里起到一个缓冲的作用。由于Flume可能会以较高的速率生成数据,而Flink可能无法立即处理这些数据,因此Kafka提供了一个中间层来存储这些数据,直到Flink能够处理它们。 解耦:通过将Flume和Flink解耦,Kafka允许数据的生产和消费在不同的速率下进行,提高了系统的灵活性和可扩展性。 -
Flink:
实时处理:Flink是一个开源的流处理框架,专门用于处理无界(unbounded)数据流。它可以实时地处理来自Kafka的数据,并执行各种计算和转换操作。 状态保持:Flink支持状态保持的计算,这意味着它可以处理有状态的操作,如连接、窗口操作等。这对于许多流处理任务来说是必需的。
二、工作大致流程
- Flume从各种来源收集数据。
- 数据被发送到Kafka的topic中。
- Flink从Kafka的topic中读取数据。
- Flink对数据进行实时处理。
- 处理后的数据可以被发送到其他系统或存储,或者可以触发其他事件。