Что такое Hadoop?
Что проверяют
Вопрос вводный, и по нему видно, работали ли вы с большими данными руками. От аналитика ждут не администрирования кластера, а понимания, где лежат данные, почему выгрузка идёт минутами и какие ограничения хранилища придётся учитывать в своих запросах.
Как отвечать
Hadoop это не одна программа, а набор компонентов для распределённого хранения и счёта на обычных серверах:
- HDFS: файловая система, которая режет файл на крупные блоки и раскладывает их копии по разным узлам, отсюда отказоустойчивость;
- YARN: распределяет ресурсы кластера между приложениями;
- MapReduce: исторический движок вычислений, разбивающий работу на параллельные задачи.
Главная идея всей конструкции: вычисление едет к данным, а не данные к вычислению.
Дальше стоит показать то, с чем аналитик сталкивается на практике. Поверх HDFS живут Hive и Spark SQL, дающие привычный SQL поверх файлов; данные хранят в колоночных форматах Parquet или ORC и разбивают на партиции, чаще всего по дате. MapReduce сегодня почти вытеснен Spark, который держит промежуточные результаты в памяти, поэтому корректнее говорить, что Hadoop это экосистема, а не один движок.
Где спотыкаются
Называют Hadoop базой данных и ждут от него точечных запросов и обновления строк. HDFS рассчитан на дозапись и полное чтение большими кусками, а за строкой по ключу идут в другое хранилище.
Забывают про партиционирование. Запрос без фильтра по колонке партиции читает весь каталог целиком, и это самая частая причина внезапно долгих выгрузок.
Не знают про проблему мелких файлов: метаданные хранятся в памяти управляющего узла, и миллион крошечных файлов обходится дороже, чем несколько крупных, а число задач растёт по числу файлов.