2014-09-04 6 views
4

В настоящее время я работаю с Netbeans на Windows-машине для разработки топологий. Когда я раскрываю в локальном режиме:
LocalCluster cluster = new LocalCluster(); cluster.submitTopology("word-count", conf, builder.createTopology());
все работает нормально, но когда я пытаюсь:
StormSubmitter.submitTopology("word", conf, builder.createTopology());
, очевидно, пытается развернуть топологию в кластерном режиме и не так как я не имею шторм нимб работает на моем локальный компьютер. У меня есть шторм, развернутый на одной камере Digital Ocean, но моим текущим (и не удобным) решением является копирование JAR-файла и использование команды storm jar... для развертывания.
Мой вопрос: есть ли способ сообщить Netbeans, что такое мой nimbus IP-адрес, чтобы он мог развернуть его удаленно? (и сэкономить время)
Спасибо заранее!Как разработать (локально) и установить топологию шторма (удаленно)?

+0

Я потратил несколько часов, чтобы попытаться найти решение. Я знаю, что я могу запускать штормовой клиент локально и использовать storm.yaml для настройки моего nimbus IP или, альтернативно, использовать штормовую банку '-c .....' есть ли способ упомянуть nimbus в конфигурации, которую мы передаем, а submitTopology? –

ответ

5

Check this link
Теперь я могу разработать топологии в Netbeans, протестировать их локально и в конечном итоге развернуть их на своем Nimbus на кластере. Это решение отлично работает для меня !!!
Добавить в Conf файл:
conf.put(Config.NIMBUS_HOST, "123.456.789.101); //YOUR NIMBUS'S IP conf.put(Config.NIMBUS_THRIFT_PORT,6627); //int is expected here

Кроме того, добавьте следующее: System.setProperty("storm.jar", <path-to-jar>); //link to exact file location (w/ dependencies) избежать следующее сообщение об ошибке:
[main] INFO backtype.storm.StormSubmitter - Jar not uploaded to master yet. Submitting jar... Exception in thread "main" java.lang.RuntimeException: Must submit topologies using the 'storm' client script so that StormSubmitter knows which jar to upload.
Ура!

1

Вы можете передать эти данные, используя параметры conf карты .. вы можете передать ключ, значение пары в соответствии с вашими требованиями

для списка принятых параметров проверки this страницы ..

2

Да, определенно вы можете рассказать свою топологию о своем nimbus IP. Ниже приведен пример кода для отправки топологии на удаленный кластер.

Map storm_conf = Utils.readStormConfig(); 
storm_conf.put("nimbus.host", "<Nimbus Machine IP>"); 
Client client = NimbusClient.getConfiguredClient(storm_conf) 
           .getClient(); 
String inputJar = "C:\\workspace\\TestStormRunner\\target\\TestStormRunner-0.0.1-SNAPSHOT-jar-with-dependencies.jar"; 
NimbusClient nimbus = new NimbusClient(storm_conf, "<Nimbus Machine IP>", 
           <Nimbus Machine Port>); 
// upload topology jar to Cluster using StormSubmitter 
String uploadedJarLocation = StormSubmitter.submitJar(storm_conf, 
           inputJar); 

String jsonConf = JSONValue.toJSONString(storm_conf); 
nimbus.getClient().submitTopology("testtopology", 
         <uploadedJarLocation>, jsonConf, builder.createTopology()); 

Вот рабочий пример: Submitting a topology to Remote Storm Cluster

+0

Итак, в этом случае следует определить носики и болты без класса топологии в TestStormRunner-0.0.1-SNAPSHOT-jar-with-dependencies.jar? Потому что у нас есть topologyBuilder в данном фрагменте кода – Humoyun

+0

Нет, нам также нужно добавить класс топологии в TestStormRunner, потому что из StormSubmitter мы не устанавливаем Spout и болты. которые выполняются в целевой топологии –

+0

ahh теперь я знаю причину моей проблемы, я определил StormSubmitter.submitTopology (...) как в классе RemoteSubmitter (который отвечает за отправку jar), так и в файле topology.jar. Насколько я понимаю, я должен определить setBolt и setSpout как в RemoteSubmitter, так и в topology.jar и StormSubmitter.submitTopology (...) только в RemoteSubmitter, но не в topology.jar, правильно? – Humoyun

Смежные вопросы