2014-01-16 130 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中的事件如果失敗將會丟失)。但是,如果您想要獲得最佳性能,則無論如何您都必須進行折衷。