Storm dprc thrift7.transport.TTransportException:帧大小(1213486160)大于最大长度(1048576)!

时间:2015-12-15 03:42:16

标签: exception thrift apache-storm

我使用风暴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)

3 个答案:

答案 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。然后,重新启动集群(否则,不考虑新值)。