Статьи

Google Cloud Dataproc и 17-минутная поездка на поезде

Моя поездка на работу и обратно на поезде занимает в среднем 17 минут. Это обычный случай без происшествий, когда большинство людей проводят время, просматривая свои мобильные устройства, ловя несколько Zs или читая книгу. Я один из тех людей, которым нравится регистрироваться у моей семьи и друзей на моем телефоне и видеть, что они делали дома в Европе, в то время как я чувствовал себя как жук в своей постели.

Оставайтесь со мной здесь, ребята.

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

Это называется  Cloud Dataproc .

Постановка задачи

Линия вечеринки Google для этого совершенно нового бета-инструмента для порки проста: всего за несколько простых кликов Dataproc раскрутится и передаст вам  кластер Hadoop  (2.7.1) и  Spark (1.5) на серебряном блюде, который доступен для немедленного использовать и полностью управляемый. О да, и я забыл — все примерно за 90 секунд. Это звучало интригующе.

kcinha1_pksnfisuvnhhvwmcpgilfaofghpfbat0i7eyklji3f1sqcyhryzs1b5loue1yas2048

Это также звучало как очень смелое заявление, и я подумал, что было бы неплохо проверить его и убедиться, что это не просто один из  слишком хороших рекламных шуток . Я имею в виду, серьезно, у кого нет свободных 90 секунд, чтобы раскрутить кластер в облаке с установленным Hadoop & Spark из коробки ?!

Итак, я решил, что однажды вечером, возвращаясь домой с работы, я бросил вызов браваде Google. До того, как мой поезд вернулся домой и, используя только ноутбук и привязывая свой телефон, мог ли я действительно создать кластер Dataproc в облаке с установленными и готовыми к работе Hadoop и Spark?

Игра началась

Однако просто раскрутить кластер казалось слишком легким. Если бы претензия Google была верной, и это могло быть сделано менее чем за 90 секунд, то у меня все равно было бы больше 15 минут, чтобы убить моего дома на работу.

Я не был слишком заинтересован в том, чтобы снова просмотреть мою ленту в Facebook и увидеть другого друга, который выпивает коктейли на прекрасном пляже, где-то отдыхая. Итак, чтобы сделать его еще более сложным и интересным, я поставил задачу:

  1. 15Сядьте на поезд домой
  2. Запустите ноутбук и телефон
  3. Создайте кластер Dataproc менее чем за 90 секунд
  4. SSH в мастер и проверить установки Hadoop & Spark
  5. Запустите 2 предоставленных примера (Spark & ​​PySpark)
  6. Удалить кластер
  7. Высаживайтесь и наслаждайтесь пинтой в местном пабе.

Я был чрезвычайно горд тем, насколько научным был этот тест, который я придумал.

 

Отказ от ответственности 1: У  меня также была уважительная причина попробовать Dataproc. На самом деле мы много работаем над облачной платформой Google для наших клиентов и, в частности, используем BigQuery и Dataflow для создания решений для больших данных для них. Dataproc звучал интригующе, и я подумал, что это может быть чем-то очень полезным для нас.

Отказ от ответственности 2:  Некоторые скриншоты могут быть трудно читаемыми, особенно те, которые сделаны на консоли. Я не принял это во внимание при выполнении задания и забыл увеличить свой браузер, прежде чем отправиться в эпическое путешествие. Тем не менее, быстрый совет — если его трудно прочитать, вы можете нажать на изображение, и оно откроет оригинальное изображение на другой вкладке.

Давайте начнем эту вечеринку.

Сядьте на поезд домой

IMG_20151012_172039

Я ушел с работы в обычное время и направился на  станцию ​​Флиндерс-стрит  в центральном деловом районе Мельбурна. Мой поезд — линия Сандрингема, и он должен был уехать в 5:23 вечера. Тем не менее, я сделал ошибку школьника очень рано. Я полностью забыл, что внизу на станции покрытие сети очень и очень слабое. Я волновался, что, как только поезд отъедет, я буду пытаться найти интернет на своем телефоне, по крайней мере, минуту или две, пока он не выйдет в открытый доступ.

Ба!

Зажги ноутбук и модем

Из-за беспокойства о проблемах с сетью, преследовавших мою сверхнаучную задачу, мой поезд отправился ровно в 5:23 вечера. Это должно было прибыть на мою станцию ​​в 5:40 вечера. Это дало мне 17 минут, дай или возьми. Как только двери захлопнулись, я открыл ноутбук и привязал свой телефон. В конце концов, что хорошего в  облаке,  если у вас нет интернета? Я проверил, что у меня есть немного интернет-сока, зайдя в консоль Google Developers (GDC) в моем браузере. Загрузка была мучительно медленной, но по крайней мере некоторые данные передавались.

Я получил трещину.

Создайте кластер Dataproc менее чем за 90 секунд

Первым шагом было ускорение кластера Dataproc с 1 главным и 4 рабочими узлами. Это оказалось очень просто, и мне не нужно было возвращаться к документам Dataproc на этом этапе. В GDC я просто щелкнул: Большие данные — Cloud Dataproc — Кластеры — Создать кластер

Big Data -> Cloud Dataproc -> Clusters -> Create Cluster

1

Дав кластеру очень подходящее имя, как вы можете видеть выше, я установил зону us-central1-a просто потому, что мне нравится эта область в США, а также увеличил количество рабочих узлов до 4 по сравнению с 2 по умолчанию.

Наконец, я оставил все остальное по умолчанию, например, тип экземпляра по умолчанию  n1-standard-4 (4 vCPU и 15 ГБ ОЗУ), размер основного диска 500 ГБ и т. Д. В результате этой конфигурации мой кластер Dataproc весил его с 16   ядрами YARN и 48 ГБ памяти YARN.

Это звучало хорошо для меня, и поэтому я нажал  Create и запустил свой таймер Apimac. Тик тук, тик ток…! Я ждал. Первая остановка моего движения, станция Ричмонд, быстро приближалась. Я ждал еще немного.

IMG_20151012_172620

Boom. Это заняло 64 секунды. Да, вы правильно прочитали, всего за 64 секунды. Позвольте этому впитаться немного. Чтобы он появился так быстро, Google должен использовать некоторые серьезно оптимизированные изображения. Кластер, который я создал, не был особенно большим (один из наших   кластеров Dataflow масштабируется до 64 экземпляров), но тем не менее он был невероятно впечатляющим.

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

Хорошо, это вернулось к делу. Это было просто сообщение GDC о том, что кластер работает и готов, но я хотел быть на 100% уверенным, что это действительно так. Пришло время получить SSH’ing.

SSH в и проверьте Hadoop & Spark Установки

Я нажал  VM Instances в GDC, и вот, я мог видеть все 5 из моих экземпляров кластера, перечисленных там. Мастер легко идентифицируется как экземпляр с  m суффиксом, а остальные — рабочие с  w суффиксом. Глядя на них в GDC, все 5 экземпляров выглядели здоровыми:

4

Незначительный захват : я обнаружил, что необходимость нажимать,  VM Instances чтобы увидеть все узлы в кластере, немного раздражает. Было бы намного удобнее работать с пользователем, если бы все они были перечислены при нажатии на каждый кластер.

Если вы внимательно посмотрите на скриншот выше, вы увидите удобно расположенную ссылку SSH рядом с каждым экземпляром. Мне не придется тратить время на вкладки между моим терминалом и браузером. Милая! Поэтому я щелкнул  SSH рядом с мастером, и соединение было установлено — хотя и довольно медленно. Затем я выполнил следующую тривиальную команду, чтобы проверить установку Hadoop:

1 hadoop version

6

Установка Hadoop выглядела хорошо. Затем я хотел проверить, что Spark также был успешно установлен. Используя тот же сеанс SSH, который я только что использовал для проверки установки Hadoop, я запустил следующую команду, чтобы запустить  Scala REPL для Spark:

1 spark-shell

7

К вашему сведению:  существует также Python REPL для Spark. Просто запустите команду  pyspark  вместо  spark-shell.

Как вы можете видеть из моего скриншота выше, интерактивная оболочка появилась без каких-либо проблем. Это также подтвердило версию Spark 1.5 прямо сейчас! Нет дополнительных пакетов для загрузки и установки. Нет конфигурационных файлов для изменения. Нет взлома вокруг. Нет — он просто работал из коробки, как и должно быть. Мне нравится, когда технологии делают это.

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

1 sc.context

8

Запустите 2 предоставленных примера (Spark & ​​PySpark)

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

  • Запустите примеры PySpark & ​​Spark из командной строки
  • Запустите тот же пример Spark в веб-интерфейсе

Пришло время получить  Spark’ing .

Я был как раз на вкладке моего терминала, когда заметил, что в GDC есть действительно удобная новая функция. Он называется  Google Cloud Shell и запускает сеанс прямо в вашем браузере на временном экземпляре виртуальной машины Compute Engine под управлением ОС Linux на основе Debian. Отлично!

Сначала был пример PySpark, который представляет собой простой Hello World:

  • Загрузите скрипт Python из облачного хранилища
  • Запустите задание PySpark
1 cpgs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py .

1 gcloud beta dataproc jobs submit pyspark --cluster dataproc-train-challenge hello-world.py

9

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

Затем я запустил работу Spark. file:/// Обозначения вы видите ниже обозначает схему Hadoop LocalFileSystem; Cloud Dataproc устанавливается  /usr/lib/spark/lib/spark-examples.jar на главном узле кластера при создании кластера:

  • Запустите задание Spark, передав имя кластера в качестве аргумента:
gcloud beta dataproc jobs submit spark 
--cluster dataproc-train-challenge 
--class org.apache.spark.examples.SparkPi 
--jars file:///usr/lib/spark/lib/spark-examples.jar 
1000

10

Оказывается, PI «примерно» 3.141756.

Это будет чертовски сложно.

Я переключился на веб-интерфейс и быстро нажал  Submit a job. Затем я продолжил заполнять все детали, необходимые как можно быстрее, например, имя кластера, основной класс и т. Д., Чтобы еще раз запустить пример задания Spark PI:

11

Было так легко заполнить все необходимые детали. Мне нравится, как Dataproc избавляет пользователей от сложности при отправке заданий в кластер. Я ударил  Submit, и работа начала выполняться. На этот раз можно было отслеживать ход работы непосредственно внутри GDC:

12

Я мог видеть, что не было никаких ошибок, и я был особенно счастлив. Но я также подчеркивал в то время. На данный момент я хотел бы поделиться второй ошибкой новичка, которую я сделал на моем вызове; Я сильно недооценил, как долго делаю все эти красивые скриншоты, которые вы видите здесь, прежде чем вы сделаете. Да, конечно, есть комбинация клавиш, но когда вы путешествуете на поезде, который движется с большой скоростью, когда вы пытаетесь все выстроить в линию, позвольте мне заверить вас, что в парке нет прогулок. По моим подсчетам, создание снимков экрана обошлось мне как минимум в 2 минуты.

Окончательное задание выполнено, и я проверил результаты всех 3 заданий, которые я выполнил, перейдя по следующему адресу: 

Cloud Dataproc — Работа

Как видно из вышеизложенного, все три задания были отмечены как успешные. Было 2 задания Spark (1 запускалось через командную строку, 1 через веб-интерфейс) и одно задание PySpark (запускалось через командную строку). Последняя работа заняла 33 секунды, и она закончилась в 5:39:54 вечера! Помните — мой поезд должен был прибыть в 5:40 вечера!

Я посмотрел на улицу и понял, что мы только что покинули последнюю станцию ​​перед моей. К счастью, поезд шел примерно на 1,5 минуты позже графика. Но это было  слишком близко для комфорта .

Удалить кластер

Google предлагает несколько способов удаления кластера, например, из командной строки, REST API или из веб-интерфейса. У меня оставалось достаточно времени для последнего, поэтому я выбрал кластер, который я создал ( dataproc-train-challenge ), и, наконец, нажал  Delete:

13

Я ждал. Я мог видеть, что моя остановка приближается. И я ждал. Осталось около 60 секунд. Он все еще показывал « Удаление ». Черт, я не собираюсь это делать, подумал я.

Я ждал еще немного. Я мог видеть платформу для моей остановки, и поезд начал замедляться. Все еще « удаляя ». Крысы! Я продолжал ждать. Поезд остановился, двери открылись, и мне пришлось сойти. Это было все еще « Удаление ».

Игра закончена.

Disembark и наслаждайтесь пинтой в местном пабе (и заключение)

Технически, я не выполнил задачу поезда Dataproc, поскольку кластер не удалялся до того, как я сошел с поезда. Но я 2015-10-12 думал, что это все еще могущественное большое достижение и вполне заслуживает пинты.

Однако, пока я потягивал свой сливочный Guinness в моем местном пабе, я проверил GDC, чтобы увидеть, был ли кластер в конечном итоге разрушен и удален. Это было. Я бы, наверное, просто перескочил на несколько секунд. Garrh!

Новый IaaS от Google — это то, что должно заинтересовать многих разработчиков больших данных. « Хотите ускорить полностью управляемый кластер Hadoop / Spark менее чем за 90 секунд?»  Нет проблем. « Хотите легко отправлять задания в свой кластер?» Ну, не смотри дальше. « Хотите увидеть будущее работы с большими данными?  «Ну, ребята, вот оно.

Стратегия Google ясна как день. Они, как разработчики, хотят снять с нас бремя, взяв на себя всю тяжелую работу и инфраструктуру для нас. Другими словами, снизить барьеры для входа и привлечь больше разработчиков в их облако. В конце концов, Dataproc — это IaaS. И это означает, что мы можем сосредоточиться на коде и своевременно отвечать на вопросы, которые задают нам наши заинтересованные стороны.

Все дело в простоте и в абстрагировании от сложных сложностей, связанных с управлением большими кластерами для управления массивами данных. Это ясно видно по всем продуктам , входящим в большой набор данных Google, например,  BigQuery , Dataflow , а теперь и Dataproc. Однако не всем это понравится, вместо этого они предпочитают иметь полный контроль над своей средой (например, по соображениям конфиденциальности или по законодательным причинам) и имеют возможность настраивать и настраивать. Но если вы можете, на мой взгляд, вы должны принять этот новый подход.

Помимо невероятно высокой скорости и красивой простоты Dataproc, я также считаю, что это здорово, что вместо того, чтобы конкурировать с технологиями с открытым исходным кодом, такими как Hadoop и Spark, Google вместо этого использует их и интегрирует в свою облачную экосистему. Это особенно полезно для тех, кто уже разработал стек Hadoop / Spark, поскольку перенос существующих рабочих мест в Dataproc должен быть быстрым.

Я также хотел бы продолжить свои тесты в не столь отдаленном будущем:

  • Мне любопытно провести ту же самую научную поездку с  Elastic MapReduce  (EMR) на AWS, чтобы увидеть, как она складывается с Dataproc.
  • Раскрутите гораздо больший кластер и посмотрите, сколько времени это займет.
  • Создайте несколько заданий Spark, которые обрабатывают миллиарды строк и ТБ данных из BigQuery, используя  соединитель,  который развернут с помощью Dataproc, и посмотрите, как работает кластер при нажатии.

Наконец, хотя мне не удалось полностью завершить 17-минутное испытание на поезде Dataproc, я, тем не менее, смог закончить свою пинту задолго до того, как хороший бармен принес мне следующую пинту. Ура!