我打算使用 Flume 和 HTTPSource 将数据上传到 HDFS。接收器将配置为将数据保存到 Hive/Hbase 表。如果向 HDFS 写入数据时出现任何异常/错误,是否可以将其扔回客户端?如果 HTTPSourceHandler 无法解析数据或无法将数据发送到内存通道,则抛出异常,但是接收器抛出的异常可以发送回客户端吗?
问问题
129 次
1 回答
0
通常,源充当数据生产者,而接收器充当数据消费者。这意味着 sinks 不会将任何数据放入 channel,sources 不会从 channel 中获取任何数据。尽管如此,我认为您可以创建(从未测试过,只是弄清楚如何做这样的事情)自定义源和接收器,它们既可以用作源也可以用作接收器;在这种情况下,您可以有 2 个通道,每个方向一个,并执行某种反向通信。
在任何情况下,如果您希望发回有关从源到接收器的工作流的所有可能错误的 Http 响应,我会说您忘记这一点:一旦源将数据放入通道,无法保证接收器会立即处理此类数据;处理可能需要 1 秒或 1 分钟(通道,它表现为一个队列,可能有很多以前的数据)。我的意思是,你不想实现那种同步通信,因为到达 Flume 代理的新数据将不得不等待很多。
于 2015-06-15T13:54:57.793 回答