2014-01-16 169 views
0

我的要求是将数据(只是字符串)从高性能系统收集到Hadoop。 我使用Akka收集数据并将其发送给Flume。 但是,为了实验目的,我想看看Flume是否能够完成这项工作。我准备好FlumeRPCClient,它将与Flume收集器集群进行通信。Flume RPC客户端异步?

我的客户端扩展了org.apache.flume.api.LoadBalancingRpcClient。

问题是,FlumeRPCClient是否是异步的。如果不是,发件人将会有性能问题。

谢谢。

回答

0

为了保证事件传输,flume agent需要将事件从FlumeRPCClient存储到通道(文件或内存通道,这取决于您的接收代理的配置)。 因此,它应该阻止,直到事件被接受并存储在通道中。您可能希望将事件分组分组以提高性能,或者将它们转储到旋转的文件并通过单独的流量代理程序进行读取。

+0

谢谢。这意味着我不能采用这种方法。欣赏你的答案。 – Zaneer

0

你可以考虑来自Log4j2的异步appender。它使用Disruptor将事件传递给你选择的任何appender。

您将失去保证您永久存储所有事件的权利(因为任何发生在Disruptor中的事件如果失败将会丢失)。但是,如果您想要获得最佳性能,则无论如何您都必须进行折衷。