我是flume的新手,正在考虑在下面的场景中使用flume。我们的系统以httppost的形式接收事件,我们需要将事件的一个副本存储在kafka中(用于进一步处理),另一个副本存储在hdfs中(作为永久存储)。我们能否将flume源配置为http,通道配置为kafka,接收器配置为hdfs来满足我们的需求。这个解决方案有效吗?
bnlyeluc1#
如果我理解的很好,您希望kafka作为存储数据的最终后端,而不是flume代理用来通信源和汇的内部通道。我的意思是,flume代理基本上由接收数据的源和构建flume事件组成,这些事件被放入一个通道中,以便接收器读取这些事件并处理它们(通常,将这些数据持久化到最终的后端)。因此,根据您的设计,如果您使用kafka作为内部通道,它将是http源和hdfs接收器的内部通信方式;但从代理外部永远无法访问它。为了满足您的需求,您将需要和代理,例如:
http_source -----> memory_channel -----> HDFS_sink ------> HDFS | |----> memory_channel -----> Kafka_sink -----> Kafka {.................Flume agent.....................} {backend}
请注意,基于内存的通道是内部通道,它们可以基于内存或文件,即使在Kafka,但Kafka通道将不同于最终Kafka您将持久化的数据,这将由您的应用程序访问。
1条答案
按热度按时间bnlyeluc1#
如果我理解的很好,您希望kafka作为存储数据的最终后端,而不是flume代理用来通信源和汇的内部通道。我的意思是,flume代理基本上由接收数据的源和构建flume事件组成,这些事件被放入一个通道中,以便接收器读取这些事件并处理它们(通常,将这些数据持久化到最终的后端)。因此,根据您的设计,如果您使用kafka作为内部通道,它将是http源和hdfs接收器的内部通信方式;但从代理外部永远无法访问它。
为了满足您的需求,您将需要和代理,例如:
请注意,基于内存的通道是内部通道,它们可以基于内存或文件,即使在Kafka,但Kafka通道将不同于最终Kafka您将持久化的数据,这将由您的应用程序访问。