hdfs - Flume 用例 : reading from HTTP and push to HDFS via Kafka

标签 hdfs apache-kafka flume flume-ng

我是 Flume 的新手,想在下面的场景中使用 Flume。

我们的系统以 HTTP POST 的形式接收事件,我们需要在 Kafka 中存储它们的副本(用于进一步处理),并将另一个副本存储在 HDFS 中(作为永久存储)。

我们可以将Flume source 配置为HTTP,channel 配置为KAFKA,sink 配置为HDFS 来满足我们的要求。这个解决方案会起作用吗?

最佳答案

如果我理解得很好,您希望 Kafka 作为存储数据的最终后端,而不是 Flume 代理用来通信源和接收器的内部 channel 。我的意思是,Flume 代理基本上由接收数据的源和构建放入 channel 的 Flume 事件组成,以便接收器读取这些事件并对其进行处理(通常,将这些数据保存在最终后端)。因此,根据您的设计,如果您使用 Kafka 作为内部 channel ,它将是一种内部通信 HTTP 源和 HDFS 接收器的方式;但它永远无法从代理外部访问。

为了满足您的需求,您将需要和代理例如:

http_source -----> memory_channel -----> HDFS_sink ------> HDFS
            |
            |----> memory_channel -----> Kafka_sink -----> Kafka

{.................Flume agent.....................}       {backend}

请注意基于内存的 channel 是内部 channel ,它们可以基于内存或文件,甚至在 Kafka 中,但 Kafka channel 将与您将持久化数据的最终 Kafka 不同,并且您的数据可以访问应用程序。

关于hdfs - Flume 用例 : reading from HTTP and push to HDFS via Kafka,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32667179/

相关文章:

hadoop - 如何在AWS集群上安装Hadoop工具

java - MapReduce 以编程方式获取当前作业 ID

apache-spark - apache spark 和 hadoop 之间的 Jar 冲突

apache-kafka - Kafka10.1 heartbeat.interval.ms,session.timeout.ms和max.poll.interval.ms

docker - Docker 中的 Kafka 无法正常工作

hdfs - 在 Flume-ng 中使用 HDFS Sink 和 rollInterval 来批量处理 90 秒的日志信息

hadoop - flume-kite-morphline : com. fasterxml.jackson.core.JsonParseException:意外的输入结束:OBJECT 的预期关闭标记

java - 无法将 Log4J 中的事件获取到 Flume 中

java - 有没有办法覆盖 hadoop-hdfs 3.2.1 jar 的 log4j 1.2.17 到 log4j2 的传递依赖

apache-kafka - 如何在KTable中动态查找?