Geek University Data Engineering
Hadoop
HDFS
WebHDFS
MapReduce
YARN
Hive
Hue
SQOOP
Flume
HBase
Cassandra
PARQUET
ORC
AVRO
SequenceFile
Python:snakebite
Python:hdfs
Python:hdfs3 (libhdfs3)
- Hadoop — не база данных
- Не заточен под OLTP, заточен под OLAP - https://habr.com/ru/post/442754/
- Нет ACID транзакций (справка по уровням изоляции - https://habr.com/ru/post/469415/)
- В основном раскрывает себя для data analyst, data engineer, data scientist
- Можно начинать после 50Тб или если данные не реляционны
- Наименьшая стоимость за единицу хранения около $10-$20K за узел (32thread/256Gb/45Tb)
- Стоит начинать от 10 узлов
В ходе выполнения домашнего задания зашел по ssh на предоставленный кластер с Hadoop
и выполнил команду hdfs dfs -ls
. Также ознакомился с интерфейсом Cloudera Manager.
- Разобрали особенности хранения данных в файловой системе HDFS.
- Познакомились с основными консольными командами HDFS (FS shell, HDFS Commands)
Домашнее задание:
-
Опробовать консольные утилиты для работы с кластером
[] Создать/скопировать/удалить папку
[] Положить в HDFS любой файл
[] Скопировать/удалить этот файл
[] Просмотреть размер любой папки
[] Посмотреть как файл хранится на файловой системе (см. команду fsck)
[] Установить нестандартный фактор репликации (см. команду setrep)
Решение -
*Опробовать доступ для работы с кластером
[] Используя утилиту CURL - Решение
[] Используя python3 - Решение
[] Используя libhdfs3 - Решение
[] Используя snakebite - Решение
Выполнение задач
- Application приложение, которое выполняется в Yarn
- Container единица выделения ресурсов кластера
Кластер
- Resource manager Координатор ресурсов кластера. Учитывает только CPU и память
- Node Manager Координатор ресурсов одного узла кластера
- ApplicationMaster Представитель приложения
https://habr.com/ru/company/dca/blog/267361/
https://habr.com/ru/company/dca/blog/268277/
https://habr.com/ru/post/270453/
Домашнее задание:
-
Запустить один-два примера
Опробовать запускиmap-reduce
задач для кластера используяhadoop-mapreduce-examples.jar
. Чтобы увидеть полный список нужно выполнитьyarn jar $YARN_EXAMPLES/hadoop-mapreduce-examples.jar
без параметров. -
Изучить интерфейс Resource Manager
Выполнить любую задачу включенную в этотJAR
Найти свою задачи в интерфейсе Cloudera Manager
Пример:
YARN_EXAMPLES=/opt/cloudera/parcels/CDH-5.16.2-1.cdh5.16.2.p0.8/lib/hadoop-mapreduce
yarn jar $YARN_EXAMPLES/hadoop-mapreduce-examples.jar pi 32 20000
-
Написать MapReduce-задачу WordCount
Опираясь на лекцию написатьWordCount
, используяHadoop Streaming
или используяjava
. -
Ответить на вопросы *Что такое YARN?
*Почему задачи на YARN нестабильны?
Почему Map Reduce долго выполняется?
Почему Map Reduce не выполняется?
*Где хранится результат выполнения Map Reduce?
5*. Написать join на map-reduce
- Скачать любой датасет из списка ниже с сайта Kaggle.com (достаточно большой)
- Загрузить этот датасет в
HDFS
в свою домашнюю папку - Создать собственную базу данных в
HIVE
- Создать таблицы внутри базы данных с использованием всех загруженных файлов. Один файл – одна таблица.
- Сделать любой отчет по загруженным данным используя групповые и агрегатные функции.
- Сделать любой отчет по загруженным данным используя
JOIN
.
- Создать таблицы в форматах PARQUET / ORC / AVRO c компрессией и без оной.
- Заполнить данными из большой таблицы
hive_db.citation_data
- Посмотреть на получившийся размер данных
- Посчитать
count
некоторых колонок в разных форматах хранения. - Посчитать агрегаты по одной и нескольким колонкам в разных форматах.
- Сделать выводы о эффективности хранения и компресии.
- Создать отдельную БД в Hive
- Посмотреть при помощи SQOOP содержимое БД в PostgreSQL (список таблиц)
- Импортировать в нее три любые таблицы из базы
pg_db
в PostgreSQL используя SQOOP. - Найдите папки на файловой системе куда были сохранены данные. Посмотрите их размер.
- Сделайте несколько произвольных запросов к этим таблицам.
- Flume: Придумать свой скрипт, который генерит выходные данные.
- Flume: Запустить свой Flume, прочитать свои данные в Hive
- Подключиться к HBase и Cassandra.
- Создать там таблицы в консоли, вставить записи.