Легко разверните ноутбук на базе кластера больших данных

2020 год - отличный год для погружения в большие данные с кластерами Jupyter и Spark. Все 3 ведущих облачных провайдера (Amazon Web Services, Microsoft Azure и Google Cloud) настроили управляемые сервисы для раскрутки кластеров с предварительно загруженными Jupyter и Spark. В связи с бурным ростом больших данных и низким порогом входа (как по стоимости, так и по усилиям) знание того, как решать проблемы с большими данными с помощью кластера машин, становится необходимым набором навыков на сегодняшнем рынке труда в области науки о данных.

В этой статье я покажу вам, как развернуть кластеры Spark с помощью Jupyter в Google Cloud Dataproc. Мы пройдемся по:

  1. Настройка параметров кластера Spark на Dataproc
  2. Настройка кластеров для Jupyter и Anaconda
  3. Доступ к Jupyter Notebook

Настройка параметров кластера Spark на Dataproc

Dataproc - это управляемая служба Google Cloud для запуска кластеров Apache Spark и Apache Hadoop. Мы собираемся использовать Dataproc для создания кластеров Spark и управления ими. В пользовательской консоли Google Cloud Platform перейдите к Dataproc и нажмите «СОЗДАТЬ КЛАСТЕР».

Вы попадете на страницу «Создать кластер» с настройками для вашего кластера машин. В этом руководстве мы будем использовать тип машины по умолчанию n1-standard-4 как для главного, так и для рабочего узла. Если вы хотите сэкономить, я рекомендую перейти на n1-standard-2, но не на n1-standard-1, потому что машинам с 1 виртуальным ЦП требуется значительно больше времени для раскрутки.

Настройка кластеров для Jupyter и Anaconda

Вот где становится интересно. Несколько лет назад вам нужно было написать собственный сценарий для установки Jupyter и Anaconda. Сегодня вы можете получить те же результаты, нажав несколько кнопок. Установите флажок «Разрешить доступ к веб-интерфейсам» в разделе «Шлюз компонентов» и разверните «Дополнительные параметры».

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

Установите образ машин на 1.5 (Debian 10, Hadoop 2.10, Spark 2.4). По моему опыту, образ 1.3 основан на Python 2 и не сможет получить доступ к новым инструментам, разработанным на Python 3.

Самая важная часть здесь - это «Выбрать компонент» в разделе «Необязательные компоненты». На следующем изображении показаны доступные параметры.

Наконец, отметьте «Разрешить доступ API ко всем сервисам Google Cloud» в разделе «Доступ к проекту». Это позволит вашему кластеру получить доступ к другим сервисам Google Cloud, таким как BigQuery.

В разделе «Дополнительные компоненты» мы видим множество доступных компонентов. Если Spark установлен по умолчанию (не указан), мы отметим Anaconda и Jupyter Notebook и нажмем «Выбрать», чтобы сохранить выбор.

Возвращаясь к меню настроек кластера, у нас есть последний элемент, который нужно установить, прежде чем мы развернем кластер. Установите флажок «Удалить по фиксированному расписанию» в разделе «Запланированное удаление». Эта опция гарантирует, что ваш кластер завершит работу через заданный период времени. Плата за Dataproc выставляется в зависимости от того, как долго работают ваши кластеры. Предварительная установка времени удаления гарантирует, что мы не получим никаких неожиданных счетов в случае, если мы забудем вручную завершить работу наших кластеров. В этом руководстве давайте установим время удаления на 2 часа.

Доступ к Jupyter Notebook

Вот и все! Создание кластера займет от 3 до 10 минут. Как только вращающийся значок рядом с именем вашего кластера превратится в зеленую галочку, щелкните вкладку «веб-интерфейсы» и «Jupyter» в разделе «Шлюз компонентов». Если Jupyter недоступен, убедитесь, что вы выполнили инструкции в предыдущем разделе, чтобы «разрешить доступ к веб-интерфейсам», и выбрали дополнительные компоненты. Как мы видим, любые дополнительные компоненты, которые мы выбрали в процессе создания кластера, будут доступны во вкладке веб-интерфейсов.

Нас встречает знакомый интерфейс записной книжки Jupyter. Щелкните папку «GCS», чтобы получить доступ к сегменту Google Cloud Storage. Любые файлы, которые мы загружаем или создаем в этой папке, будут доступны в облачном сегменте, который мы установили ранее в процессе создания кластера.

У нас есть 4 разных ядра для наших ноутбуков. Все они имеют доступ к нашему кластеру Spark. Мне нравится использовать записные книжки «Python 3», потому что у него есть доступ ко всем пакетам анализа данных, установленным вместе с Anaconda, а также с PySpark.

И альт! Теперь у вас есть записная книжка Jupyter, работающая в кластере Spark! Мы можем проверить записную книжку с помощью следующего кода, чтобы убедиться, что все загружено правильно.

!scala -version

import pandas as pd
import numpy as np
from pyspark.sql import SparkSession
spark = SparkSession.builder \
  .appName('Jupyter BigQuery Storage')\
  .config('spark.jars', 'gs://spark-lib/bigquery/spark-bigquery-latest_2.12.jar') \
  .getOrCreate()
table = "bigquery-public-data.wikipedia.pageviews_2020"
df = spark.read \
  .format("bigquery") \
  .option("table", table) \
  .load()
df.printSchema()
df_agg = df \
  .select('wiki', 'views') \
  .where("datehour = '2020-03-03'") \
  .groupBy('wiki') \
  .sum('views')
df_agg.show()

Закончив с аналитикой, не забудьте удалить кластер, чтобы избежать дополнительных расходов! Запуск кластера из этого руководства в течение 2 часов обойдется примерно в 1 доллар США. Вы можете оценить стоимость своего кластера с помощью Google Cloud Pricing Calculator и выбора сервиса Dataproc.

Заключительные замечания

С развитием больших данных для специалистов по данным важно научиться использовать Jupyter + Spark в облаке. Таким образом, мы можем масштабировать наши вычислительные ресурсы по горизонтали, а не только по вертикали. В этом руководстве мы создали кластер Spark, загруженный с Jupyter и Anaconda, в Google Cloud Dataproc. А теперь займемся большими данными!

Не знаете, где найти большие данные для практики? Ознакомьтесь с моей предыдущей статьей о терабайтах наборов данных, доступных в общедоступных наборах данных Google: Повышение уровня с общедоступными наборами данных Google.