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