2015-12-15 229 views
2

我使用風暴0.10.0部署DRPCTopology風暴羣,但有TTransportExceptionStorm dprc thrift7.transport.TTransportException:幀大小(1213486160)大於最大長度(1048576)!

的代碼是:

DRPCClient client = new DRPCClient(map, "10.10.5.92", 3774, 5000); 
System.out.println(client.execute("match-drpc", "cat")); 

的錯誤是:

Exception in thread "main" org.apache.thrift7.transport.TTransportException: Frame size (1213486160) larger than max length (1048576)! 
    at org.apache.thrift7.transport.TFramedTransport.readFrame(TFramedTransport.java:137) 
    at org.apache.thrift7.transport.TFramedTransport.read(TFramedTransport.java:101) 
    at org.apache.thrift7.transport.TTransport.readAll(TTransport.java:86) 
    at org.apache.thrift7.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:429) 
    at org.apache.thrift7.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:318) 
    at org.apache.thrift7.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:219) 
    at org.apache.thrift7.TServiceClient.receiveBase(TServiceClient.java:69) 
    at backtype.storm.generated.DistributedRPC$Client.recv_execute(DistributedRPC.java:106) 
    at backtype.storm.generated.DistributedRPC$Client.execute(DistributedRPC.java:92) 
    at backtype.storm.utils.DRPCClient.execute(DRPCClient.java:59) 

回答

0

你需要增加nimbus.thrift.max_buffer_sizestorm.yaml文件。之後,重新啓動羣集(否則,不考慮新值)。

+1

我試一試,但不行。 – hai046

+0

你更新了哪個'storm.yaml'?你可以檢查WebUI中的參數嗎(它顯示了Nimbus拾取的參數)。 –

+1

是風暴webUI它更改,但不工作在版本0.10.0。我使用風暴0.9.6而不是 – hai046

4

1213486160不是實際的數據包長度。它是ASCII「HTTP」,被解釋爲一個32位的大端整數。你的「DRPCClient」不是你期望的協議,而是一個Web服務器。

+1

作爲參考:https://rachelbythebay.com/w/2016/10/07/magic/ –

1

STORM-1469與此問題相關,但其拉取請求並未全部合併,因此默認傳輸插件仍舊是舊的(SimpleTransportPlugin)。

添加以下配置爲我解決了Storm v 1.0.2中的問題(應該也適用於0.10.x)。

storm.thrift.transport: "org.apache.storm.security.auth.plain.PlainSaslTransportPlugin"