2013-09-13 2 views
2

Я пытаюсь преобразовать скрипт bash в программу java. В рамках этого сценария я запускать скрипты запуска для Hadoop, Zookeeper и Accumulo:Как запустить Hadoop, Accumulo и ZooKeeper из программы java?

/hadoop/bin/start_all.sh 
/zookeeper/bin/zkServer.sh start 
/accumulo/bin/start_all.sh 

Это просто сделать в скрипте. И если программы уже запущены, я снова могу вызвать эти сценарии запуска без проблем, и программы просто выведут, что они уже запущены, и их pids.

Я пытаюсь выяснить, есть ли способ сделать это в java-программе. Есть ли скрытая команда в API Hadoop/ZooKeeper/Accumulo, где я могу запускать Class.run (configs), и он начнет или попытается запустить Hadoop/ZooKeeper/Accumulo?

Следующий шаг состоит в том, что я могу, вероятно, использовать jsch для запуска команд ssh, но похоже, что я не оставляю скрипт bash позади.

Редактировать: executing hadoop example jar files from java В этом вопросе задающий выполняет команды запуска с использованием Runtime. Это подходящий способ начать Hadoop? Я бы предпочел использовать собственный API Hadoop, если есть команды для его использования.

+0

Я не могу не задаться вопросом, почему ... разум объясняет? –

+0

@DonaldMiner Я пишу программу, чтобы сделать эти программы легкими для нетехнических. –

+0

Менеджер Cloudera/Амбари? Кукольный? Что-то кажется здесь ... нетехнические люди, вероятно, не должны начинать и останавливать службы хаупа. –

ответ

1

На мой взгляд, не существует какого-либо конкретного API для запуска служб Hadoop или сервисов Zookeeper. Возьмем для экземпляра классу org.apache.hadoop.hdfs.server.namenode.NameNode

Хотя вы можете использовать main() в выше класса, чтобы запустить службу.

Из сценария Hadoop использует следующие функции для запуска служб, вызывающих функцию main() для разных классов с аргументами.

nohup $_JAVA_EXEC -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "[email protected]" > "$_HADOOP_DAEMON_OUT" 2>&1 < /dev/null 

Где, CLASS = org.apache.hadoop.hdfs.server.namenode.NameNode Другие самообъясняющие.

+0

На самом деле, я хотел решение, которое работало с Java-программой, у меня уже был код, который работает в сценарии в порядке. Это не похоже на то, что вы бросаете в программу Java ... Приношу свои извинения за снятие после принятия. Я неправильно прочитал ваше решение. –

+0

Ну, я не против, но дело в том, что у вас нет конкретных API, насколько я знаю, как я уже говорил. Мое намерение состояло в том, чтобы показать, как Hadoop фактически запускает namenode. Таким образом, если сам Hadoop является uisng вышеупомянутого класса, чтобы начать это, могут быть другие способы. –

+0

Я также упомянул метод main(), просто зажег его для вас. Из любого другого Java-класса вы можете все это, но дело в том, что вам нужны аргументы. Возможно, я ошибаюсь. –

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