В своем стремлении изучить Spark, H20 и Sparkling Water я обнаружил, что общий процесс загрузки / установки для настройки исходной среды может быть не таким простым, как можно было бы ожидать (особенно в операционной системе Windows). Эта статья представляет собой попытку описать шаги для тех, кто отправляется в похожее путешествие. Прежде чем мы перейдем к тому, как запустить H2O на Spark на вашем локальном компьютере, позвольте нам сначала обновить то, что Spark и H2O предлагают пользователям.

Spark - это система распределенной обработки с открытым исходным кодом, которая предоставляет платформу общего назначения с кэшированием в памяти и оптимизированным выполнением запросов. Типичные варианты использования Spark включают интеграцию данных, потоковую обработку и, конечно же, машинное обучение. Теперь H2O - это платформа с открытым исходным кодом, распределенная в памяти машинного обучения, которая поддерживает широкий спектр статистических алгоритмов и алгоритмов машинного обучения. H20 также рекламирует функциональность AutoML, которая автоматизирует процесс создания бесчисленного количества моделей для определения лучшей модели. Газированная вода дает нам «лучшее из обоих миров», объединив возможности Spark и H20. Он содержит все те же функции, что и H2O, и предоставляет возможность использовать эти функции в крупномасштабной кластерной структуре Spark. Сделав этот краткий обзор, давайте перейдем к процессу установки.

Обратите внимание, что для всего этого упражнения наиболее важным фактором является то, что все различные компоненты, которые мы устанавливаем, должны быть совместимы друг с другом. Убедитесь, что вы проверяете совместимость между различными версиями нескольких компонентов в настроенной среде, иначе это может вызвать зацикливание. В целях этой демонстрации мы будем использовать обновление Java 8 251, Spark 2.4.5, Sparkling Water 3.30.0.1 и H20 версии 3.30.0.1. Среда настраивается в Windows.

1. Перво-наперво, поскольку Spark написан на Scala, который выполняется на JVM, нам нужна Java. Скачайте Java с официального сайта Java здесь. При установке Java 8 JDK вам придется установить JRE отдельно, но для более поздних версий установка JDK также автоматически установит JRE.

2. После установки нам нужно установить «Переменную среды». Чтобы установить переменную среды, выполните следующие действия: Панель управления - ›Система и безопасность -› Система - ›Расширенные настройки системы -› Переменные среды - ›Системные переменные. Чтобы добавить новые переменные, нажмите «Создать». Задайте необходимые переменные следующим образом:

а. Имя: JAVA_HOME

Значение: системное расположение, в котором установлена ​​Java (например: C: \ Java \ JDK)

б. Имя: JRE_HOME

Значение: системное расположение, в котором установлена ​​Java (например, C: \ Java \ JRE)

3. Следующим шагом будет установка Spark. Чтобы установить Spark, все, что вам нужно сделать, это загрузить заархивированный файл и распаковать его в желаемое место. В этом случае давайте скачать Spark 2.4.5. Нажмите Загрузить Spark (пункт 3 в списке), и вы перейдете на страницу загрузки.

По ссылке загружается заархивированная папка, которую можно извлечь с помощью winrar или аналогичного программного обеспечения. Поместите извлеченную папку в безопасное место по вашему выбору и переименуйте папку для удобства. Например, путь к моей папке Spark выглядит так - C: \ Spark в моей системе. После этого мы установили Spark.

Опять же, после установки нам нужно установить «Переменную среды». Чтобы установить переменную среды, перейдите по пути Панель управления - ›Система и безопасность -› Система - ›Расширенные настройки системы -› Переменные среды - ›Системные переменные. Чтобы добавить новые переменные, нажмите «Создать».

Имя: SPARK_HOME

Значение: место, где установлен Spark (например, C: \ Spark).

4. Следующим шагом будет создание HADOOP_HOME. Фактически мы не устанавливаем Hadoop в нашей системе; мы просто заставляем систему поверить в то, что «Hadoop» существует на нашей машине. Для этого загрузите WinUtils.exe для версии Hadoop, на которую ссылается ваш дистрибутив Spark. просто введите «WinUtils» в Google и загрузите совместимую версию. Внимание. Убедитесь, что версия совместима (когда вы загружаете Spark на шаге 3 и выбираете выпуск Spark, он покажет вам совместимый тип пакета Hadoop - на рис. 1 я выбираю Spark выпуска 2.4.5, и он говорит мне, что это предварительно создано для Apache Hadoop 2.7)

Создайте папку «Hadoop» в C: \ и подпапку «bin». Поместите загруженный файл «WinUtils» во вновь созданную папку «C: \ Hadoop \ bin \». Затем установите «Переменную среды». Панель управления → Система и безопасность → Система → Расширенные настройки системы → Переменные среды → Системные переменные. Щелкните «Новый».

Имя: HADOOP_HOME

Значение: расположение, в котором находится файл Winutils (Пример: C: \ Hadoop).

5. Скачать газированную воду H2O. Для этого упражнения мы используем версию 3.30.0.1–1–2.4. Извлеките и поместите папку в C: \ и переименуйте для удобства (например, C: \ SparklingWater).

6. Запустите Anaconda от имени администратора и создайте новую среду. Чтобы создать новую среду в Anaconda, сначала запустите Jupyter Notebook с базовой (корневой) средой.

Нажмите «Терминал» в раскрывающемся списке, и откроется терминал Jupyter.

Выполните следующие команды в терминале.

а) conda create -n python36 python = 3.6 anaconda. Это создает новую среду в Anaconda Jupyter Notebook с именем «python36».

б) conda активирует python36. Это активирует среду python36, которую мы создали с помощью первой команды.

в) conda config - добавить каналы conda-forge

7. После успешного выполнения этих команд закройте терминал и перейдите в навигатор Anaconda. В раскрывающемся меню «Приложения включены» выберите вновь созданную среду (python36) и снова запустите Jupyter.

8. Еще раз выберите New и запустите Terminal (теперь он должен быть во вновь созданной среде) и выполните следующие команды для установки H2O в новой среде.

pip install h2o == 3.30.0.1

После успешного запуска закройте все вкладки и перезапустите Jupyter из навигатора Anaconda в новой среде. Откройте Терминал и перейдите к папке Sparkling Water, которую мы создали на шаге 5.

а) Перейдите в папку "Газированная вода": cd C: \ Sparkling-Water \ bin.

б) Попав в папку, выполните: ./pysparkling

Это инициирует сеанс Spark, в котором мы можем выполнить код pyspark. Оставьте этот терминал включенным.

9. Откройте новый файл в Jupyter Notebook и выполните следующие команды.

а) импорт воды

б) из строки импорта pyspark.sql, SparkSession (в случае ошибок см. шаг 10)

в) h2o.init ()

Это импортирует H2O и инициализирует соединение с экземпляром H2O.

г) spark = SparkSession.builder.appName («SparklingWaterApp»). getOrCreate ()

Это получает существующий сеанс SparkSession или, если его нет, создает новый на основе параметров, установленных в этом построителе. Вы можете установить имя для приложения, которое будет отображаться в веб-интерфейсе Spark.

Следующим шагом будет создание нашего контекста H2O, выполнив:

из pysparkling import * (в случае ошибок см. шаг 10)

hc = H2OContext.getOrCreate ()

10. Обратите внимание, что вы можете столкнуться с ошибками при импорте pyspark или pysparkling, если у вас еще не установлены пакеты. Чтобы решить эту проблему, откройте новый Терминал и выполните следующие команды, чтобы установить соответствующие пакеты.

pip install pyspark == 2.4.5

pip install h2o-pysparkling-2.4 == 3.30.0.4–1

Теперь у нас есть среда, настроенная для запуска H2O Sparkling Water из Jupyter Notebooks в системе Windows. Это обеспечивает эффективный способ запроса с использованием Spark SQL, передачи данных в H2O для построения моделей машинного обучения и последующего использования результатов в Spark.

Об авторе: Кишан - специалист в области обработки данных, более 9 лет консультировал клиентов и принимал управленческие решения на основе анализа данных, науки о данных и машинного обучения. В настоящее время он является старшим консультантом в Inspired Intellect, с ним можно связаться в LinkedIn. Inspired Intellect направляет и трансформирует возможности организаций адаптироваться к корпоративной культуре, основанной на данных, чтобы преуспевать во все более динамичной, конкурентной и глобальной среде.

Особая благодарность моему наставнику Брайану Монтейро за его руководство и поддержку.