Подготовка и использование управляемого кластера Hadoop/Spark с Cloud Dataproc (командная строка)

1. Обзор

Cloud Dataproc — это управляемая служба Spark и Hadoop, которая позволяет вам использовать инструменты данных с открытым исходным кодом для пакетной обработки, выполнения запросов, потоковой передачи и машинного обучения. Автоматизация Cloud Dataproc помогает быстро создавать кластеры, легко ими управлять и экономить деньги, отключая кластеры, когда они вам не нужны. Потратив меньше времени и денег на администрирование, вы сможете сосредоточиться на своей работе и данных.

Это руководство адаптировано с https://cloud.google.com/dataproc/overview.

Что вы узнаете

  • Как создать управляемый кластер Cloud Dataproc (с предустановленным Apache Spark ).
  • Как отправить задание Spark
  • Как изменить размер кластера
  • Как подключиться по SSH к главному узлу кластера Dataproc
  • Как использовать gcloud для проверки кластеров, заданий и правил брандмауэра
  • Как выключить кластер

Что вам понадобится

Как вы будете использовать это руководство?

Прочтите только до конца Прочитайте его и выполните упражнения.

Как бы вы оценили свой опыт использования сервисов Google Cloud Platform?

Новичок Средний Опытный

2. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Cloud Console и создайте новый проект или повторно используйте существующий. (Если у вас еще нет учетной записи Gmail или G Suite, вам необходимо ее создать .)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не подойдет вам, извините!). Позже в этой лаборатории он будет называться PROJECT_ID .

  1. Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.

Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Обязательно следуйте всем инструкциям в разделе «Очистка», в которых рассказывается, как отключить ресурсы, чтобы вам не приходилось нести расходы, выходящие за рамки этого руководства. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

3. Включите API Cloud Dataproc и Google Compute Engine.

Нажмите на значок меню в левом верхнем углу экрана.

2bfc27ef9ba2ec7d.png

Выберите Менеджер API из раскрывающегося списка.

408af5f32c4b7c25.png

Нажмите «Включить API и службы» .

a9c0e84296a7ba5b.png

Найдите «Computer Engine» в поле поиска. Нажмите «Google Compute Engine API» в появившемся списке результатов.

b6adf859758d76b3.png

На странице Google Compute Engine нажмите «Включить» .

da5584a1cbc77104.png

После включения нажмите стрелку, указывающую влево, чтобы вернуться назад.

Теперь найдите «API Google Cloud Dataproc» и включите его.

f782195d8e3d732a.png

4. Запустите Cloud Shell.

Эта виртуальная машина на базе Debian оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Это означает, что все, что вам понадобится для этой лаборатории кода, — это браузер (да, он работает на Chromebook).

  1. Чтобы активировать Cloud Shell из Cloud Console, просто нажмите «Активировать Cloud Shell». fEbHefbrRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X 3-й квартал (подготовка и подключение к среде займет всего несколько минут).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARE01A

Снимок экрана 14.06.2017, 22.13.43.png

После подключения к Cloud Shell вы увидите, что вы уже прошли аутентификацию и что для проекта уже установлен ваш PROJECT_ID .

gcloud auth list

Вывод команды

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

Вывод команды

[core]
project = <PROJECT_ID>

Если по какой-то причине проект не установлен, просто введите следующую команду:

gcloud config set project <PROJECT_ID>

Ищете свой PROJECT_ID ? Узнайте, какой идентификатор вы использовали на этапах настройки, или найдите его на панели управления Cloud Console:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Cloud Shell также по умолчанию устанавливает некоторые переменные среды, которые могут быть полезны при выполнении будущих команд.

echo $GOOGLE_CLOUD_PROJECT

Вывод команды

<PROJECT_ID>
  1. Наконец, установите зону по умолчанию и конфигурацию проекта.
gcloud config set compute/zone us-central1-f

Вы можете выбрать множество различных зон. Дополнительную информацию см. в разделе «Регионы и зоны» .

5. Создайте кластер Cloud Dataproc.

После запуска Cloud Shell вы можете использовать командную строку для вызова команды Cloud SDK gcloud или других инструментов, доступных на экземпляре виртуальной машины.

Выберите имя кластера для использования в этой лабораторной работе:

$ CLUSTERNAME=${USER}-dplab

Начнем с создания нового кластера:

$ gcloud dataproc clusters create ${CLUSTERNAME} \
  --region=us-central1 \
  --scopes=cloud-platform \
  --tags codelab \
  --zone=us-central1-c

Настройки кластера по умолчанию, включающие два рабочих узла, должны быть достаточными для этого руководства. Приведенная выше команда включает параметр --zone , позволяющий указать географическую зону, в которой будет создан кластер, а также два дополнительных параметра, --scopes и --tags , которые описаны ниже при использовании функций, которые они включают. См. команду gcloud dataproc clusters create Cloud SDK для получения информации об использовании флагов командной строки для настройки параметров кластера.

6. Отправьте задание Spark в свой кластер.

Вы можете отправить задание через запрос jobs.submit Cloud Dataproc API, с помощью инструмента командной строки gcloud или из консоли Google Cloud Platform . Вы также можете подключиться к экземпляру машины в кластере с помощью SSH, а затем запустить задание из экземпляра.

Давайте отправим задание с помощью инструмента gcloud из командной строки Cloud Shell:

$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
  --class org.apache.spark.examples.SparkPi \
  --jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000

По мере выполнения задания вы увидите результат в окне Cloud Shell.

Прервите вывод, введя Control-C. Это остановит выполнение команды gcloud , но задание все равно будет выполняться в кластере Dataproc.

7. Список вакансий и повторное подключение

Распечатайте список вакансий:

$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}

Последняя отправленная вакансия находится вверху списка. Скопируйте идентификатор задания и вставьте его вместо « jobId » в приведенной ниже команде. Команда повторно подключится к указанному заданию и отобразит его выходные данные:

$ gcloud dataproc jobs wait jobId

Когда задание завершится, выходные данные будут содержать приблизительное значение числа Пи.

493928df54f61386.png

8. Изменить размер кластера

Для выполнения более крупных вычислений вам может потребоваться добавить в кластер больше узлов, чтобы ускорить его. Dataproc позволяет добавлять узлы в кластер и удалять их из него в любое время.

Изучите конфигурацию кластера:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Увеличьте размер кластера, добавив несколько вытесняемых узлов:

$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2

Еще раз осмотрите кластер:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Обратите внимание, что в дополнение к файлу workerConfig из исходного описания кластера теперь существует также и secondaryWorkerConfig , который включает два instanceNames для вытесняемых рабочих процессов. Dataproc показывает статус кластера как готовность, пока загружаются новые узлы.

Поскольку вы начали с двух узлов, а теперь у вас четыре, ваши задания Spark должны выполняться примерно в два раза быстрее.

9. SSH в кластер

Подключитесь через ssh к главному узлу, имя экземпляра которого всегда является именем кластера с добавленным -m :

$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c

При первом запуске команды ssh в Cloud Shell там будут сгенерированы ключи ssh для вашей учетной записи. Вы можете выбрать парольную фразу или пока использовать пустую парольную фразу и при желании изменить ее позже с помощью ssh-keygen .

В экземпляре проверьте имя хоста:

$ hostname

Поскольку при создании кластера вы указали --scopes=cloud-platform , вы можете запускать команды gcloud в своем кластере. Перечислите кластеры в вашем проекте:

$ gcloud dataproc clusters list

Выйдите из ssh-соединения, когда закончите:

$ logout

10. Изучите теги

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

Распечатайте описание главного узла:

$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c

Найдите tags: в конце вывода и убедитесь, что он включает codelab .

Распечатайте правила брандмауэра:

$ gcloud compute firewall-rules list

Обратите внимание на столбцы SRC_TAGS и TARGET_TAGS . Прикрепив тег к правилу брандмауэра, вы можете указать, что его следует использовать на всех узлах, имеющих этот тег.

11. Выключите свой кластер

Вы можете выключить кластер с помощью запроса Cloud Dataproc API clusters.delete , из командной строки с помощью исполняемого файла gcloud dataproc clusters delete или из консоли Google Cloud Platform .

Давайте завершим кластер с помощью командной строки Cloud Shell:

$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1

12. Поздравляем!

Вы узнали, как создать кластер Dataproc, отправить задание Spark, изменить размер кластера, использовать ssh для входа в главный узел, использовать gcloud для проверки кластеров, заданий и правил брандмауэра и выключить кластер с помощью gcloud!

Узнать больше

Лицензия

Эта работа распространяется под лицензией Creative Commons Attribution 3.0 Generic License и лицензией Apache 2.0.