1 сентября

Big Data Tools EAP 10: SSH-туннели, фильтрация приложений, пользовательские модули и многое другое

Блог компании JetBrainsJavaScalaBig Data

Только что вышла очередная версия плагина Big Data Tools — плагина для IntelliJ IDEA Ultimate, DataGrip и PyCharm, который обеспечивает интеграцию с Hadoop и Spark, позволяет редактировать и запускать интерактивные блокноты в Zeppelin.


Основная задача этого релиза — поправить как можно больше проблем и улучшить плагин изнутри, но два важных улучшения видно невооруженным глазом:


  • соединяться с Hadoop и Spark теперь можно через SSH-туннели, создающиеся парой щелчков мыши;
  • мониторинг Hadoop может ограничивать объем данных, загружаемых при просмотре списка приложений.


SSH-туннели


Зачастую нужный нам сервер недоступен напрямую, например если он находится внутри защищенного корпоративного контура или закрыт специальными правилами на файерволе. Чтобы пробраться внутрь, можно использовать какой-то туннель или VPN. Самый простой из туннелей, который всегда под руками, — это SSH.


Проложить туннель можно одной-единственной консольной командой:


ssh -f -N -L 1005:127.0.0.1:8080 user@spark.server

Немного автоматизировать процесс поможет файл ~/.ssh/config, в который ты один раз сохраняешь параметры соединения и потом используешь:


Host spark
    HostName spark.server
    IdentityFile ~/.ssh/spark.server.key
    LocalForward 1005 127.0.0.1:8080
    User user

Теперь достаточно написать в консоли ssh -f -N spark — и туннель поднимется сам по себе, без вписывания IP-адресов. Удобно.


Но с этими способами есть две очевидных проблемы.


Во-первых, у кого-то может возникнуть масса вопросов. Что такое -f -N -L? Какой порт писать слева, а какой — справа? Как выбирать адреса для соединений? Для всех, кроме профессиональных системных администраторов, такие мучения не кажутся полезными.


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


К счастью, начиная с этой версии в Big Data Tools есть возможность создавать туннели без ручного управления SSH-соединениями.



На скриншоте видно, что можно не только вручную указать все адреса и порты, но и подключить заранее подготовленный файл конфигурации SSH.


Опция Enable tunneling работает для следующих типов соединений:


  • Zeppelin
  • HDFS
  • Hadoop
  • Spark Monitoring

Важно отметить, что под капотом у нее все то же самое, что делает SSH. Не стоит ждать особой магии: например, если ты пытаешься открыть туннель на локальный порт, который уже занят другим приложением или туннелем, то случится ошибка.


Это довольно полезная опция, которая облегчает жизнь в большинстве повседневных ситуаций. Если же тебе нужно сделать что-то действительно сложное и нестандартное, то можно по старинке вручную использовать SSH, VPN или другие способы работы с сетью.


Вся работа велась в рамках задачи BDIDE-1063 на нашем YouTrack.


Управляемые ограничения на отображение приложений


Люди делятся на тех, у кого на странице Spark Monitoring всего парочка приложений, и тех, у кого их сотни.



Загрузка огромного списка приложений может занимать десятки минут, и все это время о состоянии сервера можно только гадать.


В этой версии Big Data Tools вы можете существенно ограничить время ожидания, если вручную выберете диапазон загружаемых данных. Например, можно вызвать диалоговое окно редактирования диапазона дат и вручную выбрать только сегодняшний день.


Эта опция значительно экономит время тех, кто работает с большими продакшенами.


Работа велась в рамках задачи BDIDE-1077.


Подключение модулей в зависимости Zeppelin


У многих в Zeppelin используются зависимости на собственные JAR-файлы. Big Data Tools полезно знать о таких файлах, чтобы в IDE нормально работало автодополнение и другие функции.


При синхронизации с Zeppelin, Big Data Tools пытается получить все такие файлы. Но, по разным причинам, это не всегда возможно. Чтобы Big Data Tools узнал о существовании таких пропущенных файлов, необходимо вручную добавить их в IntelliJ IDEA.


Раньше в качестве зависимостей можно было использовать только артефакты из Maven либо отдельные JAR-файлы. Это не всегда удобно, ведь для получения этих артефактов и файлов нужно или их скачать откуда-то, или собрать весь проект.


Теперь любой модуль текущего проекта тоже можно использовать в качестве зависимости. Такие зависимости попадают в таблицу "User dependencies":



Работа велась в рамках задачи BDIDE-1087.


Множество свежих исправлений


Big Data Tools — молодой, активно развивающийся проект. В таких условиях неизбежно появление проблем, которые мы стараемся оперативно устранять. В EAP 10 вошло множество исправлений, значительная часть которых посвящена повышению удобства работы со Spark Monitoring.


  • [BDIDE-1078] Раньше при сворачивании ячеек их заголовки просто не отображались. Теперь они правильно отображаются, но редактировать их из Big Data Tools все еще нельзя — это тема для будущих исправлений.
  • [BDIDE-1137] Удаление соединения Spark Monitoring из Hadoop приводило к ошибке IncorrectOperationException.
  • [BDIDE-570] В таблице Jobs в Spark Monitoring у выделенной задачи могло исчезать выделение.
  • [BDIDE-706] При обновлении дерева задач в Spark Monitoring выделенная задача теряла выделение.
  • [BDIDE-737] Если компьютер заснул и вышел из сна, получение информации о приложении в Spark Monitoring требовало перезагрузки IDE.
  • [BDIDE-1049] Перезапуск IDE мог приводить к появлению ошибки DisposalException.
  • [BDIDE-1060] Перезапуск IDE с открытым Variable View (функциональность ZTools) мог привести к ошибке IllegalArgumentException.
  • [BDIDE-1066] Редактирование свойств неактивного соединения в Spark Monitoring приводило к его самопроизвольному включению на панели.
  • [BDIDE-1091] Удаление только что открытого соединения с Zeppelin приводило к ошибке ConcurrentModificationException.
  • [BDIDE-1092] Кнопка Refresh могла не обновлять задачи в Spark Monitoring.
  • [BDIDE-1093] После перезапуска Spark в Spark Monitoring отображалась ошибка подключения.
  • [BDIDE-1094] При отображении ошибки соединения в Spark Monitoring нельзя было изменить размеры окна с ошибкой.
  • [BDIDE-1099] В Spark Monitoring на вкладке SQL вместо сообщения "Loading" могло неверно отображаться сообщение "Empty List".
  • [BDIDE-1119] В Spark Monitoring свойства SQL продолжали отображаться даже при сбросе соединения или перезагрузке интерпретатора.
  • [BDIDE-1130] Если в списке приложений в Spark Monitoring фильтр скрывал вообще все приложения, возникала ошибка IndexOutOfBoundsException.
  • [BDIDE-1133] Таблицы отображали только один диапазон данных, даже если в свойствах таблицы было указано сразу несколько диапазонов.
  • [BDIDE-406] Раньше при соединении с некоторыми экземплярами Zeppelin отображалась ошибка синхронизации. В рамках этого же тикета включена поддержка Zeppelin 0.9, в частности — collaborative mode.
  • [BDIDE-746] При отсутствии выбранного приложения или задачи в Spark Monitoring на странице с детализацией отображалась ошибка соединения.
  • [BDIDE-769] При переключении между различными соединениями к Spark Monitoring могла не отображаться информация об этом соединении.
  • [BDIDE-893] Время от времени список задач в Spark Monitoring исчезал, и вместо него отображалось некорректное сообщение о фильтрации.
  • [BDIDE-1010] После запуска ячейки, статус "Ready" отображался со слишком большой задержкой.
  • [BDIDE-1013] Локальные блокноты в Zeppelin раньше имели проблемы с переподключением.
  • [BDIDE-1020] В результате комбинации нескольких факторов могло сбиваться форматирование кода на SQL.
  • [BDIDE-1023] Раньше не отображался промежуточный вывод исполняющихся ячеек, теперь отображается под ними.
  • [BDIDE-1041] Непустые файлы на HDFS отображались как пустые, из-за чего их можно было случайно сохранить и стереть данные.
  • [BDIDE-1061] Исправлен баг в отображении отображением SQL-задач. Раньше было неясно, является ли сервер Spark привязанным к задаче или это History Server.
  • [BDIDE-1068] Временами ссылка на задачу в Spark терялась и появлялась вновь.
  • [BDIDE-1072], [BDIDE-838] Раньше в панели Big Data Tools не отображалась ошибка соединения с Hadoop и Spark.
  • [BDIDE-1083] Если при закрытии IDE работала хоть одна задача с индикатором прогресса, возникала ошибка "Memory leak detected".
  • [BDIDE-1089] В таблицах теперь поддерживается интернационализация.
  • [BDIDE-1103] При внезапном разрыве связи с Zeppelin не отображалось предупреждение о разрыве соединения.
  • [BDIDE-1104] Горизонтальные полосы прокрутки перекрывали текст.
  • [BDIDE-1120] При потере соединения к Spark Monitoring возникала ошибка RuntimeExceptionWithAttachments.
  • [BDIDE-1122] Перезапуск интерпретатора приводил к ошибке KotlinNullPointerException.
  • [BDIDE-1124] Подключение к Hadoop не могло использовать SOCKS-прокси.
Теги:big databig data toolshadoopsparkzeppelin
Хабы: Блог компании JetBrains Java Scala Big Data
+11
1,3k 10
Комментировать