Подготовка и использование управляемого кластера 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

Запомните идентификатор проекта (Project ID) — уникальное имя для всех проектов 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

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

b6adf859758d76b3.png

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

da5584a1cbc77104.png

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

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

f782195d8e3d732a.png

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

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

  1. Для активации Cloud Shell из консоли Cloud Console просто нажмите «Активировать Cloud Shell». fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (На подготовку и подключение к среде должно уйти всего несколько минут).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 2017-06-14 at 10.13.43 PM.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 ? Проверьте, какой 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 вы можете использовать командную строку для вызова команды gcloud из Cloud SDK или других инструментов, доступных в экземпляре виртуальной машины.

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

$ CLUSTERNAME=${USER}-dplab

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

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

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

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

Вы можете отправить задание через запрос jobs.submit API Cloud Dataproc, используя инструмент командной строки 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.

Прервите вывод, нажав Ctrl+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. Выключите кластер.

Выключить кластер можно с помощью запроса clusters.delete через API Cloud Dataproc, из командной строки, используя исполняемый файл 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.