2016-04-21 7 views
1

Я пытаюсь запустить программу java, которая использует WEKA libraries на cluster.Как сохранить состояние java-программы и забрать его позже?

Этот кластер истекает после заданий после 12 часов, и я не могу изменить этот факт, потому что я студент и не отвечаю за кластер.

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

Возможно ли это?

Я не думаю, что могу (легко, по крайней мере) вывести состояние переменных в самих объектах WEKA в файл с OOS и перезагрузить их, потому что я использую библиотеки WEKA, и это будет чрезвычайно сложно переписать код для этих программ машинного обучения. (хотя это может быть то, что я должен сделать)

Я пробовал использовать библиотеку под названием javaflow, которую, как я думал, может прочитать, может сделать это, но я не могу заставить ее работать. Когда попытка сделать его счетный пример я встретился с этой ошибкой:

Apr 20, 2016 9:15:12 PM org.apache.commons.javaflow.bytecode.StackRecorder execute 
SEVERE: stack corruption. Is class test_javaflow.MyRunnable instrumented for javaflow? 
java.lang.IllegalStateException: stack corruption. Is class test_javaflow.MyRunnable instrumented for javaflow? 
    at org.apache.commons.javaflow.bytecode.StackRecorder.execute(StackRecorder.java:102) 
    at org.apache.commons.javaflow.Continuation.continueWith(Continuation.java:170) 
    at org.apache.commons.javaflow.Continuation.startWith(Continuation.java:129) 
    at org.apache.commons.javaflow.Continuation.startWith(Continuation.java:102) 
    at test_javaflow.Test_Javaflow.main(Test_Javaflow.java:16) 

погуглить эту ошибку придумали несколько страниц, относящихся к чему-то называется JasperSoft, что я абсолютно уверен, это не то, что я ищу для.

+0

Вы пытались запустить JVM на виртуальной машине? Поскольку инструменты виртуализации, такие как Vmware и VirtualBox, обеспечивают решение для сохранения состояния всей машины. Вы можете запустить машину и сохранить состояние, а через несколько дней просто загрузите ее как есть. – 11thdimension

+0

Возможно дублируется с http://stackoverflow.com/questions/611134/can-the-jvm-provide-snapshot-persistence. –

+0

Я еще не попробовал запустить его на виртуальной машине. Полагаю, это возможно. Я должен спросить ответственного за кластер. –

ответ

0

Посмотрите на контрольную точку докера. Он предоставляет возможность сохранять текущее состояние контейнера докера и возобновлять его. Я использовал его для аналогичного использования - систему на основе JVM. В моем случае я использую его, потому что инициализация занимает много времени. Используя контрольную точку, я могу перезапустить контейнер в известном состоянии несколько раз.

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

  • Нет связанных вопросов^_^