Не може да се изпрати топология на буря

Опитвам се да изпратя топология на Storm на отдалечен хост, използвайки Eclipse.

Ето моят код:

Config conf = new Config();
conf.setDebug(false);
conf.setNumWorkers(1);
conf.put(Config.NIMBUS_HOST, "hostName");
conf.put(Config.NIMBUS_THRIFT_PORT,6627);
conf.put(Config.STORM_ZOOKEEPER_SERVERS,Arrays.asList(new String[]{"hostName"}));
conf.put(Config.STORM_ZOOKEEPER_PORT,2181);

// Remote submission
StormSubmitter.submitTopology("classMain", conf, topology);

Но получавам това изключение:

Exception in thread "main" java.lang.RuntimeException: org.apache.thrift7.TApplicationException: Binary field exceeded string size limit
  at backtype.storm.StormSubmitter.submitTopologyAs(StormSubmitter.java:250)
 at backtype.storm.StormSubmitter.submitTopology(StormSubmitter.java:271)
  at backtype.storm.StormSubmitter.submitTopology(StormSubmitter.java:157)
  at com.rbc.rbccm.hackathon.Countersearch.submitTopology(Countersearch.java:111)
  at com.rbc.rbccm.hackathon.Countersearch.main(Countersearch.java:37)
Caused by: org.apache.thrift7.TApplicationException: Binary field exceeded string size limit
  at org.apache.thrift7.TApplicationException.read(TApplicationException.java:111)
  at org.apache.thrift7.TServiceClient.receiveBase(TServiceClient.java:71)
  at backtype.storm.generated.Nimbus$Client.recv_submitTopology(Nimbus.java:184)
  at backtype.storm.generated.Nimbus$Client.submitTopology(Nimbus.java:168)
  at backtype.storm.StormSubmitter.submitTopologyAs(StormSubmitter.java:236)
... 4 more

има ли ограничение за размера на низа на параметрите, които можем да предадем на функцията submitTopology?

Когато следвам пътеката още малко, тя води до:

public void submitTopology(String name, String uploadedJarLocation, String jsonConf, StormTopology topology) throws AlreadyAliveException, InvalidTopologyException, AuthorizationException, org.apache.thrift.TException
{
    send_submitTopology(name, uploadedJarLocation, jsonConf, topology);
    recv_submitTopology();
}

recv причинява проблема. някакви мисли?


person AbtPst    schedule 16.10.2015    source източник
comment
Колко дълъг е абсолютният път на jar файла?   -  person Chris Gerken    schedule 16.10.2015
comment
C:\\adasd\\sdsd\\workspace\\adasdasdsadsad\\target\\sample-mainClass-0.0.1.jar това твърде дълго ли е?   -  person AbtPst    schedule 16.10.2015
comment
Какво се случва, когато се опитате да използвате клиента на командния ред за качване на буркана в топологията Storm?   -  person Morgan Kenyon    schedule 16.10.2015


Отговори (2)


Трябва да увеличите nimbus.thrift.max_buffer_size параметър. Можете да го зададете в storm.yaml или в Config обект.

person Matthias J. Sax    schedule 18.10.2015
comment
Благодаря Матиас, но тъй като max_buffer_size вече е отхвърлен (storm.apache.org/releases/1.0.0/javadocs/org/apache/storm/), как проблемът може да бъде разрешен сега? Попаднах на същата грешка. - person Nav; 26.05.2016
comment
Проблемът е вашият много по-голям jar файл. Storm 1.0 въвежда разпределен кеш storm.apache.org/releases/1.0. 0/distcache-blobstore.html Никога не съм го пробвал, но трябва да можете да качите своя jar файл там (вместо да го прехвърляте чрез Nimbus. - person Matthias J. Sax; 26.05.2016

Ако видите кода в изходния код на Storm на адрес StormSubmitter.java, той е следният:

public static void submitTopology(String name, Map stormConf, StormTopology topology)
        throws AlreadyAliveException, InvalidTopologyException, AuthorizationException {
    submitTopology(name, stormConf, topology, null, null);
}

Грешката Thrift е, защото или name, който сте посочили, е твърде дълъг (повече от 2MB?), или stormConf има твърде много информация, или има по-вероятната причина, която е, че когато topology е създаден, вие пълните чучура или болта пример с твърде много информация.

В моя случай създавах болт, в който инициализирах твърде много данни.

builder.setBolt(genBolt, new GenBolt(myTable1.getHashMap(), myTable2.getHashMap(), myTable3.getHashMap(), myTable4.getHashMap()), 2)
  .fieldsGrouping(iterSpout, new Fields(con.BATCH_ID))
person Nav    schedule 27.05.2016