Предлагаем вашему вниманию новый курс лекций Техносферы. Он представляет собой введение в Hadoop, фокусируясь на проектировании и реализации распределенных алгоритмов, которые могут применяться в различных сферах: обработка текстов, графов, связанных данных и т.п. Также рассматриваются различные компоненты платформы Hadoop и программные модели. Целью курса является знакомство студентов со стеком технологий Hadoop, применяемых для хранения, доступа и обработки больших объемов данных. Преподаватели курса: Алексей Романенко, Михаил Фирулик, Николай Анохин.

Лекция 1. Введение в Big Data и MapReduce


Что такое «большие данные». История возникновения этого явления. Необходимые знания и навыки для работы с большими данными. Что такое Hadoop, где он применяется. Что такое «облачные вычисления», история возникновения и развития технологии. Web 2.0. Вычисление как услуга (utility computing). Виртуализация. Инфраструктура как сервис (IaaS). Вопросы параллелизма. Управление множеством воркеров. Дата-центры и масштабируемость. Типичные задачи Big Data. MapReduce: что это такое, примеры. Распределённая файловая система. Google File System. HDFS как клон GFS, его архитектура.



Лекция 2. Основы Hadoop


История Hadoop и его применение. Хранение данных, кластер Hadoop. Системные принципы. Горизонтальное масштабирование вместо вертикального. Код к данным. Отказы оборудования. Инкапсуляция сложности реализации. Сравнение с СУБД (RDBMS). Экосистема Hadoop. Дистрибутивы, вендоры, поддерживаемые ОС. Полезная литература. Hadoop на Cloudera VM. Импорт и запуск VM. Копирование файлов в HDFS. Запуск MapReduce-задачи в Hadoop. Проверка результатов.



Лекция 3. Распределённая файловая система HDFS


Задачи, для которых подходит и не подходит HDFS. Демоны HDFS. Файлы и блоки. Репликация блоков. Клиенты, Namenode и Datanodes. Чтение и запись файла. Namenode: использование памяти. Устойчивость к отказам в Namenode. Доступ к HDFS, в том числе через прокси. Команды оболочки shell. Копирование данных в shell, удаление и статистика. Команда fsck. Права в HDFS. Команда DFSAdmin. Балансер. File System Java API. Реализация File System. Объект Configuration. Чтение данных из файла и запись в него. Подстановки (globbing).



Лекция 4. MapReduce в Hadoop (введение)


Рабочий процесс MapReduce. Hadoop MapReduce и HDFS. Выполнение MapReduce. Архитектура и работа первой версии MapReduce. Hadoop API (типы, классы). WordCount (Congigure Job, Mapper, Reducer). Reducer в качестве Combiner. Типы данных в Hadoop. InputSplit, InputFormat, OutputFormat. Shuffle и Sort в Hadoop. Запуск и отладка задач. Hadoop Streaming. Streaming в MapReduce.



Лекция 5. MapReduce в Hadoop (алгоритмы)


WordCount (baseline, In-mapper combining, среднее значение, различающиеся значения). Кросс-корреляция (pairs, stripes). Реляционные паттерны MapReduce (Selection, Projection, Union, Intersection, Difference, Symmetric Difference, GroupBy и Aggregation, Repartition Join, Replicated Join, TF-IDF).



Лекция 6. MapReduce в Hadoop (графы)


Граф как структура данных. Задачи и проблемы на графах. Графы и MapReduce. Матрица смежности. Списки смежности. Поиск кратчайшего пути. Алгоритм Дейкстры. Параллельный BFS: алгоритм, псевдокод, итерации, критерий завершения, сравнение с Дейкстерой. BFS weighted: edges, критерий завершения, сложности. Графы и MapReduce. PageRank: что это такое, где применяется. Вычисление PageRank, упрощения для него. PageRank на MapReduce. Полный PageRank, сходимость. Другие классы проблем на графах. Основные проблемы для алгоритмов на графах. Улучшение партиционирования. Schimmy Design Pattern.



Лекция 7. Введение в Pig и Hive


Что такое Pig, для чего используется. Pig и MapReduce. Основные возможности. Компоненты. Режимы выполнения. Запуск Pig. Pig Latin. Операции DUMP и STORE. Большой объём данных. Команда LOAD. Типы данных для схемы. Pig Latin (cредства диагностики, группировка, Inner и Outer bag, FOREACH, функция TOKENIZE, оператор FLATTEN, WordCount, Inner и Outer Join). Hive (архитектура, интерфейс, концепция, создание таблицы, загрузка данных, выполнение запроса, Inner и Outer Join, WordCount).



Лекция 8. NoSQL, HBase, Cassandra


Масштабирование вверх. Масштабирование RDBMS (master/slave, sharding). Что такое NoSQL. Dynamo и BigTable. Теория CAP. Модель консистентности. Eventual Consistency. Типы NoSQL. Key/Value. Schema-Less. Что такое HBase, когда его нужно и когда не нужно использовать. Модель данных HBase. Column Family. Timestamp. Ячейки. Архитектура и компоненты HBase. Распределение ключей в RegionServer. Хранение данных в HBase. Master и Zookeeper. Доступ к HBase. Column Family как единица хранения. Запрос данных из HBase. Что такое Cassandra. Типичный NoSQL API. Модель данных. Cassandra и консистентность.



Лекция 9. ZooKeeper


Что такое ZooKeeper, его место в экосистеме Hadoop. Неправда о распределённых вычислениях. Схема стандартной распределённой системы. Сложность координации распределённых систем. Типичные проблемы координации. Принципы, заложенные в дизайн ZooKeeper. Модель данных ZooKeeper. Флаги znode. Сессии. Клиентский API. Примитивы (configuration, group membership, simple locks, leader election, locking без herd effect). Архитектура ZooKeeper. ZooKeeper DB. ZAB. Обработчик запросов.



Лекция 10. Apache Mahout


Что такое Apache Mahout. Реализованные алгоритмы. Классификация (Naive Bayes, k-Means). Рекомендации (коллаборативная фильтрация, Item-based, алгоритм Slop One, Apache.teste, Item-based с Hadoop, Mahout со Spark, co-occurrence recommenders).



Лекция 11. Вычислительная модель Pregel


Web 2.0 и социальные графы. Примеры графов. Задачи обработки графов. Средства обработки больших графов. Pregel (что это такое, концепция). Vertex. Метод compute. Combiner. Aggregator. Изменение графа. Giraph (архитектура, выполнение программы, отказоустойчивость). PageRank. Кратчайшие пути. Производительность.



Лекция 12. Spark


Мотивация. RDD. Программная модель Spark. Higher-Order Functions. Трансформация RDD (Map, Reduce, Join, CoGroup, Union и Sample). RDD actions. SparkContext. Создание RDD. Общие переменные (broadcast, accumulator). Движок Apache Spark. Программный интерфейс Spark. Lineage. Зависимости между RDD (Narrow, Wide). Расписание задач. Отказоустойчивость RDD. Управление памятью. Приложения, которые подходят и не подходят для RDD.



Лекция 13. YARN


Что такое YARN, для чего он нужен. YARN и старый MapReduce. Компоненты MapReduce на YARN. Выполнение MR-задачи на YARN. Запуск MapReduce-задачи. Инициализация задачи. Инициализация MRAppMaster. MRAppMaster и Uber Job. Назначение задач. Управление памятью (создание контейнеров для запуска задач, контроль памяти для каждой задачи, JVM-куча, виртуальная память). Выполнение задач. Обновления статуса. Веб-интерфейс Resource Manager. Сбои выполнения задач. Сбои Application Master. Сбои Node Manager. Сбои Resource Manager. Расписание задач.



Лекция 14. Hadoop в Поиске Mail.Ru


История внедрения, компоненты Поиска. Почему Hadoop? Почему HBase? Поисковый робот (Old school, New generation H). Что мы храним в HBase? Работа с Hadoop. Трудности перевода. Эксплуатация (Ganglia). Полезные уроки Hadoop и HBase.



Предыдущие выпуски


Технопарк:

Техносфера:

Подписывайтесь на youtube-канал Технопарка и Техносферы!

Комментарии (2)


  1. slava_k
    17.05.2015 20:30
    +4

    Большое спасибо!


    1. Dmitry21 Автор
      18.05.2015 13:33

      Не за что. У нас еще есть )