Я выполняю профилирование JVM для задач Hadoop с использованием Java-агента, как в https://github.com/etsy/statsd-jvm-profiler. Профайлер регистрирует крючки остановки, которые сохраняют профили в HDFS. Но в настоящее время крючки прекращаются, прежде чем они смогут закончить. Я уверен, что они выполнены, потому что я вижу некоторые выходы из перехватов.JVM shutdown hook неожиданно завершает работу
ответ
Вы видите ошибки IOExceptions или FileSystem, которые были закрыты. Если это так, то может помочь отключение hdfs hookdown.
Клиент Hdfs также регистрирует крюки остановки, чтобы иметь возможность правильно закрыть соединения hdfs. Не гарантируется порядок, в котором вызывается блокировка выключения. Ключи Hdfs могут быть вызваны перед другими. Вы можете попробовать отключить крюки остановки. Это также означает, что вам нужно будет закрыть соединение в коде.
Для создания экземпляра HDFS клиента:
Configuration conf = new Configuration();
conf.setBoolean("fs.automatic.close", false);
filesystem = FileSystem.get(nnURI, conf)
В отключающей крючке:
fileSystem.close();
По JavaDoc:
Shutdown крючки должны также закончить свою работу быстро. Когда программа вызывает выход, ожидается, что виртуальная машина будет быстро отключена и выйдет. ... Поэтому нецелесообразно предпринимать попытку любого взаимодействия с пользователем или выполнить долговременное вычисление в крюке отключения .
Это означает, что у вас есть меньше одной секунды, чтобы выполнить свою задачу (точное значение действительно зависит от платформы). Также стоит отметить, что:
В редких случаях виртуальная машина может прервать, то есть перестают работать без остановки чисто. ... Если виртуальная машина прерывается, то не может быть гарантирована, будут ли выполняться какие-либо выключения крюков.
- 1. XQuartz неожиданно завершает работу
- 2. LaunchDaemon неожиданно завершает работу
- 3. lxde неожиданно завершает работу
- 4. WorkStealingPool неожиданно завершает работу
- 5. MPMoviePlayerViewController неожиданно завершает работу
- 6. Клиент неожиданно завершает работу
- 7. Java shutdown hook на разных JVM
- 8. Выяснение, кто называет jvm shutdown hook
- 9. MailCompositionService неожиданно завершает работу Ios
- 10. MPMoviePlayerViewController modal неожиданно завершает работу
- 11. Bat сценарий неожиданно завершает работу
- 12. XCODE 8.0 неожиданно завершает работу
- 13. Loop неожиданно завершает работу Python
- 14. Spring Boot shutdown hook
- 15. Android Virtual Device Manager неожиданно завершает работу
- 16. Swift ошибка: «MailCompositionService неожиданно завершает работу»
- 17. emulator64-рука неожиданно завершает работу IntelliJ
- 18. Gulp неожиданно завершает работу, повторно запускает работы
- 19. Python неожиданно завершает работу на Mac
- 20. golang webservice неожиданно завершает работу без ошибок
- 21. Как исправить «Xcode 6 неожиданно завершает работу»
- 22. fontComboBox Приложение QSettings неожиданно завершает работу
- 23. Xcode не открывается, неожиданно завершает работу
- 24. Использование ThreadPool.QueueUserWorkItem - нить неожиданно завершает работу
- 25. Python неожиданно завершает работу, ошибка сегментации: 11
- 26. weblogic stop записывает журналы и завершает работу
- 27. Activemq Shutdown завершает работу, а затем убивает процесс
- 28. ScheduledExecutorService и Shutdown Hook
- 29. appengine python shutdown hook
- 30. Tomcat shutdown hook
Я думаю, что это проблема. Потому что то, что я делаю на крючке, - это написать короткую строку в файл. Но если я установил fs.automatic.close на false, как вручную закрыть соединение HDFS вручную на моем крючке? Я не мог найти его нигде. Большое спасибо! – Zhi