Jeśli chcesz rozpocząć nowy proces serwera ZooKeeper od kodu Java, zrobiłbyś to w ten sam sposób, w jaki uruchamiasz dowolny inny proces zewnętrzny z Java, np. przy użyciu ProcessBuilder. Nie ma nic szczególnego w przypadku ZooKeeper. Możesz sprawdzić oficjalne dokumenty na temat tego, jak powinno wyglądać rzeczywiste polecenie. Staje się to skomplikowane, jeśli chcesz nadzorować proces do wykorzystania w produkcji, więc w takim przypadku lepiej byłoby użyć czegoś podanego w twoim systemie operacyjnym (np. Upstart, runit, etc ...) lub zajrzyj do Wystawcy, by zobaczyć przykłady kodu : https://github.com/Netflix/exhibitor.
Jeśli pytasz o uruchomienie klastra ZooKeeper z poziomu programu Java, komplikujesz jeszcze bardziej, ponieważ zasadniczo potrzebujesz nadzorować wiele procesów JVM ZooKeeper na różnych hostach. Zobacz również Wystawcę.
Jeśli twoje pytanie dotyczy uruchamiania instancji serwera ZooKeeper w tym samym procesie JVM, co kod Java (osadzony), jest to również możliwe. Istnieje kilka ważnych szczegółów, aby pamiętać, spojrzeć na to odpowiedź: Is it possible to start a zookeeper server instance in process, say for unit tests?
Jeśli chodzi o drugie pytanie, prawdziwe wsparcie dla dynamicznej rekonfiguracji klastra dodano niedawno, w 3.5.0: http://zookeeper.apache.org/doc/trunk/zookeeperReconfig.html.
Wcześniej można nadal "dodawać serwery do klastra zookeepera bez konieczności ręcznego przechodzenia do poszczególnych komputerów i aktualizowania ich konfiguracji", ale trzeba użyć narzędzia do zarządzania konfiguracją, takiego jak Chef, Puppet lub podobne, a także W takim przypadku należy również zrestartować klaster, aby pobrać nową konfigurację.
Dzięki @igorbel za odpowiedź! Spośród wszystkich tych opcji, znalazłem to, co jest tutaj wymienione: [link] (http://stackoverflow.com/questions/9286054/is-it-possible-to-start-a-zookeeper-server-instance-in-process -say-for-unit-tes) najprościej. Tak więc, na razie używam tej metody! –