Кратко:
- Подключение к кластеру Hadoop с помощью виртуальной машины в Yandex Cloud.
- Использование SSH для подключения к хостам главного подкластера.
- Получение внутреннего FQDN хоста главного подкластера и подключение к нему с помощью SSH.
- Запуск заданий Apache Hive для работы с данными в распределенном хранилище.
- Создание внешней таблицы в формате Parquet с данными о перелетах между городами США в 2018 году.
- Запрос числа перелетов с разбивкой по месяцам с использованием SQL-подобного языка запросов Hive.
- Возможность просмотра докладов сотрудников Yandex Cloud о работе с большими данными в облаке на YouTube-канале Yandex Cloud.
Практическая работа. Подключение к кластеру и работа с Hive
На этом уроке вы научитесь подключаться к кластеру Hadoop и работать с ним на примере выполнения запросов с помощью Hive.
Подключение к кластеру
Подключимся к управляющему хосту главного подкластера. Поскольку хостам кластера Hadoop не назначается публичный IP-адрес, для подключения к ним нужна виртуальная машина, расположенная в той же сети Yandex Cloud.
Выберите машину, которую создавали раньше, или создайте новую. Подключитесь к ней по SSH. Вы уже делали это, когда изучали виртуальные машины.
Подключитесь с этой машины к хосту главного подкластера также с помощью SSH. Для этого на машине должна быть закрытая часть SSH-ключа, открытую часть которого вы указали при создании кластера Data Proc. Вы можете скопировать ключ на виртуальную машину или подключаться к ней с запущенным SSH-агентом.
Скопировать ключ можно с помощью утилиты nano. На виртуальной машине выполните команду:
sudo nano ~/.ssh/<имя ключа>
В открывшийся редактор скопируйте содержимое закрытой части SSH-ключа с вашей локальной машины.
Запустите SSH-агент:
eval `ssh-agent -s`
Добавьте ключ в список доступных агенту:
ssh-add ~/.ssh/<имя ключа>
Узнайте внутренний FQDN хоста главного подкластера. Для этого в консоли управления на странице кластера перейдите на вкладку Хосты и выберите хост с ролью
MASTERNODE.Откройте SSH-соединение с хостом Data Proc для пользователя
root, например:
ssh root@<FQDN хоста> # для версии 1.4
ssh root@rc1b-dataproc-m-d0nl7kf0smevlhnh # для версии 1.4
или
ssh ubuntu@rc1b-dataproc-m-d0nl7kf0smevlhnh # для версии 2.0
ssh Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. # для версии 2.0
иначе запросит пароль который не создавался в процессе создания машины
Пошаговые инструкции по различным способам подключения к кластеру Data Proc приведены в документации.
Проверим, что команды Hadoop выполняются, например:
hadoop version
Результат выполнения этой команды выглядит так:

Запуск заданий Apache Hive
Как мы уже говорили ранее, Hive — это платформа для хранения данных и управления ими в экосистеме Hadoop. Она используется для доступа к большим датасетам, сохранённым в распределённом хранилище.
Hive позволяет работать с данными различного формата (csv, tsv, Parquet, ORC, Avro и другими), подключаться к БД и взаимодействовать с ней с помощью SQL-подобного языка запросов. Hive используется преимущественно для работы с данными в HDFS, HBase, S3-совместимых хранилищах и реляционных СУБД.
Запрос на действия с данными в Hive называется заданием. Задания можно запускать на управляющем хосте с помощью командной оболочки CLI Hive, а также с помощью CLI Yandex Cloud.
Для запуска Hive CLI выполните команду
hive на управляющем хосте.Проверьте, всё ли работает: выполните, например, команду
select 1; — корректный результат выглядит так:
Теперь создайте внешнюю таблицу (external table) в формате Parquet, содержащую открытые данные о списке перелётов между городами США в 2018 году. Для этого с помощью Hive CLI выполните запрос:
CREATE EXTERNAL TABLE flights (Year bigint, Month bigint, FlightDate string, Flight_Number_Reporting_Airline bigint, OriginAirportID bigint, DestAirportID bigint) STORED AS PARQUET LOCATION 's3a://yc-mdb-examples/dataproc/example01/set01';
Проверим список таблиц, выполнив команду
show tables. Результат должен выглядеть так:
Запросим число перелётов с разбивкой по месяцам:
SELECT Month, COUNT(*) FROM flights GROUP BY Month;
Пример результата такого запроса:

Безусловно, на одном примере сложно показать возможности сервиса Data Proc. Если вас интересует работа с большими данными в облаке, посмотрите доклады сотрудников Yandex Cloud об управлении кластерами Hadoop и заданиями в Data Proc на YouTube-канале Yandex Cloud.
Поздравляем, вы завершили тему «Hadoop»
В этой теме вы узнали о технологиях работы с большими данными Hadoop и Spark, познакомились с сервисом Yandex Data Proc, научились создавать кластер Hadoop и работать с ним.
