我使用风暴0.10.0部署DRPCTopology
来风暴群集,但是TTransportException
。
代码是:
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 :(得分:4)
1213486160不是实际的数据包长度。它是ASCII“HTTP”,解释为32位大端整数。您的“DRPCClient”并不是您所期望的协议,而是一个Web服务器。
答案 1 :(得分:1)
STORM-1469与此问题有关,但其拉取请求并非全部合并,因此默认的传输插件仍然是旧的(SimpleTransportPlugin
)。
添加以下配置为我修复了Storm v 1.0.2中的问题(也适用于0.10.x)。
storm.thrift.transport: "org.apache.storm.security.auth.plain.PlainSaslTransportPlugin"
答案 2 :(得分:0)
您需要在nimbus.thrift.max_buffer_size
文件中增加storm.yaml
。然后,重新启动集群(否则,不考虑新值)。