Запуск Spark, Python и Jupyter Notebook на Amazon EC2
Пошаговое руководство по настройке PySpark для работы с Jupyter Notebook на экземпляре Amazon EC2.
Привет! Меня зовут Хосе Портилья, и я обучаю более 200 000 студентов программированию, науке о данных и машинному обучению на Udemy! Вы можете ознакомиться со всеми моими курсами здесь.
Если вы заинтересованы в изучении Python для науки о данных и машинного обучения, прочтите мой курс здесь. (Я также преподаю Веб-разработка с полным стеком с помощью Django!)
В основном это руководство, на которое я могу ссылаться позже, но я подумал, что оно будет полезно другим. Есть несколько руководств, похожих на это, но многие из них давно не обновлялись. Это руководство предполагает базовое знакомство с командной строкой и консолью AWS.
Шаг 1. Создайте инстанс Amazon EC2
Для простоты мы будем использовать микро-экземпляр уровня бесплатного пользования с Ubuntu 64x. Используйте все настройки по умолчанию, кроме установки All Traffic вместо SSH при редактировании Security экземпляра. Это руководство можно расширить до нескольких экземпляров или более крупных экземпляров.
Шаг 2: подключитесь к этому экземпляру по SSH (Windows)
Для пользователей Windows вам необходимо использовать PuTTY. У Amazon действительно хороший набор инструкций, расположенный здесь. Следуйте этим инструкциям до точки подключения к консоли Ubuntu.
Шаг 3: подключитесь к этому экземпляру по SSH (Linux / Mac OS)
Клиент SSH уже встроен в Mac и Linux (обычно). Вы можете просто ввести простую команду ssh в свой экземпляр EC2, используя загруженный вами файл .pem. У Amazon также есть инструкции по этому поводу здесь.
Теперь вы должны успешно подключиться к командной строке вашего виртуального экземпляра Ubuntu, работающего на EC2. Остальная часть руководства расскажет вам, какие команды нужно вводить в этот терминал.
Шаг 4: Загрузите и установите Anaconda
Затем мы загрузим и установим Anaconda для нашего Python. Вы можете заменить здесь номера версий на любую версию, которую вы предпочитаете (2 или 3).
$ wget http://repo.continuum.io/archive/Anaconda3-4.1.1-Linux-x86_64.sh $ bash Anaconda3–4.1.1-Linux-x86_64.sh
Нажмите Enter в лицензионных соглашениях, затем введите да, чтобы принять, затем еще раз Enter, чтобы принять расположение по умолчанию.
Шаг 5. Проверьте, какой Python вы используете.
Ubuntu уже поставляется с Python, но давайте убедимся, что мы используем версию Anaconda. Использовать:
$ which python
Скорее всего, вы не будете использовать версию Python для Anaconda (это можно определить, проверив вывод команды which python). Перейдите на версию Python для Anaconda, указав свой источник, используя:
$ source .bashrc
Затем подтвердите:
$ which python
Или вы можете просто ввести python и проверить.
Шаг 6. Настройте блокнот Jupyter
Jupyter поставляется с Anaconda, но нам нужно будет настроить его, чтобы использовать его через EC2 и подключаться к SSH. Идите вперед и создайте файл конфигурации для Jupyter, используя:
$ jupyter notebook --generate-config
Шаг 7. Создайте сертификаты
Мы также можем создавать сертификаты для наших подключений в виде файлов .pem. Выполните следующее:
$ mkdir certs $ cd certs $ sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
После ввода последней строчки вам зададут несколько общих вопросов. Просто заполните их общей информацией.
Шаг 8: отредактируйте файл конфигурации
Затем нам нужно закончить редактирование файла конфигурации Jupyter, который мы создали ранее. Измените каталог на:
$ cd ~/.jupyter/
Затем мы воспользуемся визуальным редактором (vi) для редактирования файла. Тип:
$ vi jupyter_notebook_config.py
Вы должны увидеть кучу закомментированного кода Python, здесь вы можете либо раскомментировать строки, либо добавить свои собственные (такие вещи, как добавление защиты паролем, являются здесь вариантом). Мы сохраним простоту.
Нажмите i на клавиатуре, чтобы активировать -ВСТАВИТЬ-. Затем вверху типа файла:
c = get_config() # Notebook config this is where you saved your pem cert c.NotebookApp.certfile = u'/home/ubuntu/certs/mycert.pem' # Run on all IP addresses of your instance c.NotebookApp.ip = '*' # Don't open browser by default c.NotebookApp.open_browser = False # Fix port to 8888 c.NotebookApp.port = 8888
После того, как вы ввели / вставили этот код в файл конфигурации, нажмите Esc, чтобы остановить вставку. Затем введите двоеточие :, а затем введите wq, чтобы написать и выйти из редактора.
Шаг 9. Убедитесь, что Jupyter Notebook работает
Теперь вы можете проверить, работает ли блокнот jupyter. В консоли ubuntu введите:
$ jupyter notebook
Вы увидите вывод о том, что блокнот jupyter работает со всеми IP-адресами на порту 8888. Откройте свой собственный веб-браузер (рекомендуется Google Chrome) и введите свой общедоступный DNS для своего экземпляра Amazon EC2, а затем введите: 8888. Он должен быть в виде:
https://ec2-xx-xx-xxx-xxx.us-west-2.compute.amazonaws.com:8888
После того, как вы введете это в свой браузер, вы, вероятно, получите предупреждение о ненадежном сертификате, нажмите на него и подключитесь в любом случае, вы доверяете сайту. (Надеюсь, в конце концов, это вы сделали!)
Вы должны увидеть, как Jupyter Notebook работает на вашем экземпляре EC2. Большой! Теперь нам нужно вернуться и установить Scala, Java, Hadoop и Spark в том же экземпляре, чтобы PySpark работал правильно. Используйте Crtl-C в консоли EC2 Ubuntu, чтобы убить процесс Jupyter Notebook. Очистите консоль, нажав очистить, и перейдите к следующим шагам по установке Spark.
Шаг 10: установите Java
Затем нам нужно установить Java, чтобы установить Scala, который нам нужен для Spark. Вернувшись в командную строку EC2, введите:
$ sudo apt-get update
Затем установите Java с помощью:
$ sudo apt-get install default-jre
Убедитесь, что он работал с:
$ java -version
Шаг 11: установите Scala
Теперь мы можем установить Scala:
$ sudo apt-get install scala
Убедитесь, что он работал с:
$ scala -version
(Необязательно: вы можете установить определенные версии Scala следующим образом, просто замените номера версий):
$ wget http://www.scala-lang.org/files/archive/scala-2.11.8.deb $ sudo dpkg -i scala-2.11.8.deb
Шаг 12: установите py4j
Нам нужно установить библиотеку python py4j, для этого нам нужно убедиться, что установка pip связана с нашей установкой Python в Anaconda, а не с Ubuntu по умолчанию. В консоли экспортируем путь для pip:
$ export PATH=$PATH:$HOME/anaconda3/bin
Затем используйте conda для установки pip:
$ conda install pip
Убедитесь, что правильный пункт используется с:
$ which pip
Теперь мы можем установить py4j с помощью pip:
$ pip install py4j
Шаг 13: установите Spark и Hadoop
Для загрузки и установки Spark и Hadoop используйте следующее:
$ wget http://archive.apache.org/dist/spark/spark-2.0.0/spark-2.0.0-bin-hadoop2.7.tgz $ sudo tar -zxvf spark-2.0.0-bin-hadoop2.7.tgz
Шаг 14: Сообщите Python, где найти Spark
Наконец, нам нужно установить наши пути для Spark, чтобы Python мог его найти:
$ export SPARK_HOME='/home/ubuntu/spark-2.0.0-bin-hadoop2.7' $ export PATH=$SPARK_HOME:$PATH $ export PYTHONPATH=$SPARK_HOME/python:$PYTHONPATH
Шаг 15: Запустите Jupyter Notebook
Теперь у вас должно быть все настроено для запуска записной книжки Juptyer с помощью Spark! Запустить:
$ jupyter notebook
Затем, как это было сделано ранее, снова подключитесь через браузер к Jupyter Notebook вашего экземпляра. Запускаем новый блокнот и в блокноте типа ячейки:
from pyspark import SparkContext sc = SparkContext()
Если это сработает, все готово!
Надеюсь, вы нашли это полезным! (Прочтите различные комментарии к этой статье, чтобы получить другие полезные советы читателей!) Спасибо за чтение.