Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
ЛЕКЦИЯ 1. Основные понятия стандарта MPI. Дифференцированные обмены
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
ЛЕКЦИЯ 1. Основные понятия стандарта MPI. Дифференцированные обмены
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...Alexey Paznikov
ЛЕКЦИЯ 2. POSIX Threads. Жизненный цикл потоков. Планирование. Синхронизация
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Доклад Кулагина И.И., Пазникова А.А., Курносова М.Г. "Оптимизация информационных обменов в параллельных PGAS-программах" на 3-й Всероссийской научно-технической конференции «Суперкомпьютерные технологии» (СКТ-2014)
29 сентября – 4 октября 2014 г., с. Дивноморское
Лекция 4. Производные типы данных в стандарте MPIAlexey Paznikov
ЛЕКЦИЯ 4. Производные типы данных в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ЛЕКЦИЯ 4. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Многоядерные вычислительные систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Энергоэффективная обработка Больших Данных на гетерогенных многоядерных компьютерных кластерах
Дистрибутив Hadoop основанный на
Apache Bigtop (bigtop.apache.org)
Следующем поколении планировщика Apache Hadoop YARN
Использует параллельные вычислительные мощности GPU нового поколения средствами Java
Зеленый ЦОД
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...Alexey Paznikov
ЛЕКЦИЯ 2. POSIX Threads. Жизненный цикл потоков. Планирование. Синхронизация
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Доклад Кулагина И.И., Пазникова А.А., Курносова М.Г. "Оптимизация информационных обменов в параллельных PGAS-программах" на 3-й Всероссийской научно-технической конференции «Суперкомпьютерные технологии» (СКТ-2014)
29 сентября – 4 октября 2014 г., с. Дивноморское
Лекция 4. Производные типы данных в стандарте MPIAlexey Paznikov
ЛЕКЦИЯ 4. Производные типы данных в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ЛЕКЦИЯ 4. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Многоядерные вычислительные систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Энергоэффективная обработка Больших Данных на гетерогенных многоядерных компьютерных кластерах
Дистрибутив Hadoop основанный на
Apache Bigtop (bigtop.apache.org)
Следующем поколении планировщика Apache Hadoop YARN
Использует параллельные вычислительные мощности GPU нового поколения средствами Java
Зеленый ЦОД
Мы поговорим об Apache Spark — более быстром, универсальном и user friendly аналоге Hadoop как инструменте для batch-обработки больших данных. Рассмотрим архитектуру Spark и его главного строительного блока — RDD. Сравним код в MapReduce и RDD моделях. Обсудим развитие других Apache top-level проектов и плавный отход индустрии от MapReduce модели к Spark.
BigData Dive in Minsk / Altoros conference /
Windows Azure and BigData- autoscale, Linux, HDInsigh.
Options for developers and startups - BizSpark, msdn subscriptions, seed fund
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
Alexey Zinoviev Алексей Зиновьев рассказывает о выборе одной из следующих баз данных CouchDB, Neo4j, Mongo, Cassandra, HBase, Riak на Happydev 2013
Article "Choice of NoSQL database for your project: Don't bite off more than you can chew" presented on HappyDev 2013 (IT-conference in Omsk) by Alexey Zinoviev
The main idea of this article is comparison of the most popular NoSQL databases: CouchDB, Cassandra, Mongodb, Riak, Neo4j, HBase
DC/OS – больше чем PAAS, Никита Борзых (Express 42)Ontico
Доклад про ближайшее будущее в эксплуатации распределённых систем.
Компания Mesosphere весной 2016 сделала свою платформу DC/OS (data center operation system) бесплатной и открытой. Платформа DC/OS унифицирует и упрощает процесс поставки и эксплуатации систем.
Основными особенностями платформы являются:
– переход от host centric к resource centric подходу для всех компонентов вашего проекта за счёт представления серверов как ресурсов для приложения (с помощью mesos и marathon);
– наличие инструментов автоматического восстановления вашего проекта после аварии;
– marketplace для приложений. Например, можно развернуть MySQL, Elasticsearch, Kafka или mongodb кластер, используя готовые скрипты развертывания. Процесс развертывания кастомизируется, в случае необходимости можно описать кастомные приложения и поправить скрипты существующих;
– наличие API для интеграции в ваши системы CI/CD, мониторинга, и т.д.
Основные компоненты DC/OS:
– Apache Mesos — абстракция над датацентром, которая представляет сервера (физические и виртуальные) как ресурсы и распределяет эти ресурсы на основании данных о потребностях приложения;
– Marathon — система распределённого запуска приложений (в т.ч. docker контейнеров), основной фишкой является возможность декларативного описания вашей системы. Вы можете описать, сколько ресурсов нужно вашему приложению, зависимости между приложениями, и в каком порядке производить деплой.
Доклад разбит на три части:
– Интро про DC/OS, сравнение с kubernetes и coreos стеком;
– Рассказ про компоненты mesos и marathon, как их можно использовать с докером (и без!) уже сейчас;
– Опыт Express 42. Мы построили CI/CD платформу для приложений, с использованием Mesos, Marathon, Docker и Jenkins 2.0.
Предсказание оттока игроков из World of TanksYandex
Одна из наиболее часто возникающих задач в бизнес-аналитике для компаний — это предсказание оттока клиентов. Ведь если заранее знать, что клиент собирается уйти к конкуренту, его можно попытаться остановить. Задача будет рассмотрена на примере прогнозирования оттока игроков из World of Tanks.
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
Лекция Сергея Царика в Школе вебмастеров: «Как принять/организовать работу по поисковой оптимизации сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Основные этапы и методы поисковой оптимизации
Рассмотрим проработку стратегии продвижения, планирование ресурсов на проект, поймем как нужно прорабатывать семантическое ядро для продвижения, разберемся с очередностью всех работ.
Разложим по полочкам основные приемы оптимизации в связке с внутренними и внешними факторами ранжирования поисковых систем, а также в связке с поведенческими факторами и характеристиками. Разберемся с тем, что же должен делать оптимизатор для достижения топа.
Что должно включать в себя ТЗ на поисковую оптимизацию
Разберемся с основными блоками технического задания от оптимизатора, с тем, каким оно должно быть с точки зрения подачи информации и ее глубины.
Сравнение in-house подхода и агентства
Рассмотрим все «за» и «против» оптимизатора в штате компании и вне её.
На основе каких метрик нужно оценивать эффективность оптимизаторской работы
Выделим ключевые показатели эффективности работы оптимизатора, рассмотрим процесс их измерения, динамику, разберемся с возможными «миксами» и их связкой с мотивацией подрядчика.
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
Лекция Юлия Тихоход в Школе вебмастеров: «Структурированные данные на поиске»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Что такое микроразметка и в чём её польза
Что такое микроразметка (семантическая разметка, семантическая микроразметка) и кому она нужна. Очень кратко — всё, что я знаю о применении семантической разметки поисковыми системами и другими веб-сервисами.
Передача данных в машиночитаемом виде
Какие ещё есть способы передать данные о сайте поисковым системам кроме микроразметки, особенности разных способов. Что бывает с плохими вебмастерами, которые пытаются обмануть поисковые системы и передать неверные данные.
Типы разметки
Из чего состоит микроразметка, какие бывают словари и синтаксисы. Популярные сочетания словарей и синтаксисов, как правильно выбирать нужную комбинацию для своего сайта.
Передача данных об интернет-магазине
Разбор семантической разметки: что в принципе доступно для разметки в интернет-магазине, что это даёт, а что можно не размечать вовсе.
Проверка правильности микроразаметки
Ошибки в микроразметке, способы их обнаружения и исправления. Популярные валидаторы микроразметки. Какие ошибки непременно нужно исправлять, а что можно игнорировать.
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
Лекция Сергея Лысенко в Школе вебмастеров: «Представление сайта в поиске»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Основные элементы сниппетов: как влиять на их формирование
Как по внешнему виду и содержанию визитки судят, стоит ли «связываться», так и по представлению сайта на странице выдачи пользователи решают, стоит ли переходить на сайт. Как изменить представление сайта в выдаче поисковых систем? Что может повлиять на CTR и что для этого нужно сделать? Рассмотрим фавиконки, навигационные цепочки, быстрые ссылки и многое, многое другое.
Зачем нам заголовок: как им управлять
Что должно быть в заголовке, а чего уж точно не стоит делать. Как избавиться от мусора и расставить акценты. И как это скажется на представлении сайта в поиске.
Основной контент аннотации и мета-описания: что нам они дают
Сниппет — зачем он нужен? Как обрабатываются данные для аннотаций? Что в сниппете помогает, а что мешает пользователю сориентироваться? Как подсказать поисковой системе, что выводить в сниппете? От Open Graf до schema.org. Инструменты, возможности, рекомендации.
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
Лекция Екатерины Гладких в Школе вебмастеров: «Плохие методы продвижения сайта»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Как завязывают с портянками
Как использовать wordstat, чтобы превратить текст в SEO-портянку. Как Яндекс определяет текстовый спам и какие ограничения могут быть применены к сайтам, злоупотребляющим ключевыми словами.
Эффектное размещение SEO-ссылок
Какие бывают SEO-ссылки и как они классифицируются в базе Яндекса. В чём отличие SEO-ссылок от рекламы. Как размещать SEO-ссылки наиболее эффектно. Методы борьбы против ссылочного спама – АГС и Минусинск. Снятие ссылок.
Поведенческие факторы, медитативные практики
Популярные сервисы накрутки: как это работает и как это не работает. Методы накрутки и методы борьбы с мошенничеством. Примеры пользовательских сессий и кто на самом деле посещает ваш сайт. Как выйти из-под санкций за накрутку поведенческих факторов.
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
Лекция Сергея Царика и Антона Роменского в Школе вебмастеров: «Основные принципы ранжирования»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Как работает поиск
При запросе пользователя к поисковой системе происходит множество процессов, которые позволяют дать наиболее релевантный ответ. Рассмотрим основные механизмы формирования выдачи: формулы, Матрикснет, персонализацию и обновления.
Что учитывается при ранжировании сайтов
Так как сайты разные и по-разному решают пользовательские задачи, при ранжировании поисковой системе нужно учитывать множество факторов. Поговорим о том, что обязательно должно быть на сайте для правильной индексации.
Ещё о факторах ранжирования
Какой контент действительно важен и как его правильно представить. Для правильного ранжирования сайта важно разобраться с его региональной привязкой. Разберёмся, какой регион присваивать сайту и как сделать это правильно.
Реальный кейс долгосрочной работы над позициями
Посмотрим на реальном примере, как изменялись основные жизненные характеристики (трафик, конверсии) сайта на пути в топ выдачи поисковых систем.
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
Лекция Александра Смирнова в Школе вебмастеров: «Основные принципы индексирования сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Как поиск находит страницу, её путь до появления в поиске
Поисковые системы постоянно собирают информацию о страницах в интернете. Как же это происходит и как добавить страницы своего сайта в поиск? Проверка индексирования сайта.
Как управлять роботом (зеркала, sitemap, robots.txt)
Множество сайтов в интернете доступны сразу по нескольким адресам. Как указать поисковому роботу на основной и как скорректировать индексирование?
Особенности индексирования
Современные сайты используют различные технологии в своей работе. Рассмотрим, как настроить их правильно и сделать контент доступным для робота.
Как улучшить индексирование (дубли, HTTP-ответ, удаление из поиска)
В поиск попадают различные страницы, которые известны роботу. Какие нужны, а какие нет? Как повлиять на их индексирование?
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
Лекция Александра Лукина в Школе вебмастеров: «Мобильное приложение: как и зачем»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Проектирование. Быть или не быть
Обсудим обоснование для разработки мобильного приложения — какую ценность оно может принести для проекта и бизнеса. Определим основные типы приложений и сценарии использования. Рассмотрим основные технологии и выбор оптимальных для конкретных задач. ТЗ — как оценить и какие особенности необходимо учесть.
Разработка. Важные детали
На что обратить внимание на этапе разработки и тестирования, заметки по специфике мобильных экосистем. Выбираем арсенал SDK для всестороннего анализа проекта в полёте.
Публикация и продвижение
Кратко рассмотрим специфику Google Play и AppStore. Проведём экскурс в мир мобильного маркетинга, подчеркнём сходства с вебом и отличия от него. Рассмотрим ключевые метрики для анализа продукта и процесса продвижения, а также способы их повышения.
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
Лекция Олега Ножичкина в Школе вебмастеров: «Сайты на мобильных устройствах»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Статистика и тренды по мобильному интернету
Основные показатели мобильного интернет-рынка. Тенденции роста мобильной аудитории.
Новые алгоритмы ранжирования поисковых систем
Адаптация сайта к мобильным пользователям и её влияние на позиции в поисковой выдаче.
Возможности для бизнеса в мобильном вебе
Мобильный сайт позволяет воспользоваться дополнительными возможностями взаимодействия с пользователем. Рассмотрим конкретные примеры.
Мобильный сайт и приложение — в чём разница
Чем отличается мобильное приложение от мобильно сайта. Какие преимущества и недостатки у каждого варианта.
Представление сайтов на мобильных устройствах
Адаптивные сайты. Мобильные сайты. Сайты для десктопа. Чем они отличаются, какие преимущества у каждого типа и нужно ли переключаться между мобильной и десктоп-версиями?
Удобный мобильный сайт для пользователя
Поведение пользователей на мобильном сайте. Отличия от десктопа, достижение целей и простые правила увеличения конверсии.
Специфика разработки мобильного сайта
Особенности проектирования, разработки и тестирования сайтов.
Инструменты для разработки мобильных сайтов
Готовые инструменты для проектирования и тестирования. Примеры фреймворков.
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
Лекция Юрия Батиевского в Школе вебмастеров: «Качественная аналитика сайта»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Что мы хотим от аналитики сайта
На какие вопросы должна отвечать аналитика сайта. Как аналитика сайта связана с аналитикой бизнеса. На какие блоки можно поделить аналитику онлайн-процессов. Какой должна быть идеальная аналитическая система.
Анализ общих показателей бизнеса
Как построить систему аналитики бизнеса в интернете. Ключевые показатели эффективности (KPI). Построение воронки продаж. Business Intelligence — сквозная аналитика всех процессов.
Обзор инструментов для анализа сайта и аудитории
Яндекс.Метрика и Google Analytics как основа веб-аналитики. Инструменты для веб-мастеров. Инструменты для анализа действий пользователей (Kiss-metrics, Woopra, Mixpanel). Системы для подсчета целевых действий, CPA и ROMI.
Анализ каналов привлечения клиентов
Как анализировать источники трафика. Популярные инструменты для анализа.
Пройти тест по теме
Процесс развертывания системы аналитики сайта
Подготовка к установке систем веб-аналитики. Тонкости установки и настройки трекеров. Подключение коллтрекинга и дополнительных инструментов фиксации целевых действий. Настройка пользовательских сценариев. Пример по анализу пользовательского сценария.
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
Лекция Петра Аброськина в Школе вебмастеров: «Что можно и что нужно измерять на сайте».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Базовые принципы веб-аналитики
Как работает веб-аналитика и какие подводные камни есть в учёте и анализе данных. Как правильно работать с данными.
Основные метрики и термины
Посетители, визиты, глубина просмотра, время на сайте — какие метрики важны и чем они отличаются.
Как выбрать правильный KPI
Самый важный этап в веб-аналитике и продвижении сайта. Какие цели выбрать интернет-магазину, сайту услуг, контентному проекту и т.д.
Ключевые группы отчетов и применение знаний на практике
Семь главных типов отчётов для бизнеса. Анализ контекстной рекламы, SEO и контента сайта — на конкретных примерах.
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
Лекция Алексея Бородкина в Школе вебмастеров: «Как правильно поставить ТЗ на создание сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
ТЗ: две буквы с большим потенциалом
Что такое техническое задание. Какое место оно занимает в веб-разработке. Какие цели преследует. И каким требованиям оно должно отвечать.
Что нужно сделать, прежде чем садиться за ТЗ
Зачем нужна подготовка к написанию ТЗ. Какую информацию нужно собрать и как выстроить этот процесс. На каком этапе веб-разработки нужно писать ТЗ — и что будет, если этот момент упустить. Какое отношение имеют к ТЗ прототипы, пользовательские истории и прочие инструменты проектирования.
Хорошее ТЗ
Как соединить в один документ описание интерфейсов, структуру данных и много чего ещё. Структура правильного, хорошего ТЗ с подробным разбором каждого пункта. С какой стороны приступать и как эффективнее всего выстроить работу.
Кто должен писать ТЗ
Кто может написать хорошее ТЗ. Где найти такого человека и как встроить его в общие процессы. Что делать, если ТЗ пишет сам заказчик.
Плохое ТЗ
Популярные ошибки. Чем они ужасны и как их избежать.
Жизнь с ТЗ
По какой схеме нужно согласовывать ТЗ. Как применять его в дальнейшей работе. Кому не нужно показывать ТЗ ни при каких обстоятельствах. Что делать, если ТЗ никому не нравится.
ТЗ по ГОСТ: ад на Земле
Краткая история развития ТЗ со времён Брежнева и до наших дней. Почему я старательно избегаю слова «ТЗ». Почему вы должны нервно вздрагивать при слове «ГОСТ». Что делать, если вы работаете с госзаказчиком.
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
Лекция Петра Волкова в Школе вебмастеров: «Как защитить свой сайт».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Актуальные типы угроз и динамика их развития
Компрометация сервера и её последствия. Распределённые атаки типа «отказ в обслуживании». Подмена или добавление рекламы на стороне клиента. Атаки, направленные на пользователей. Проблемы, связанные со внешним содержимым.
Управление рисками безопасности веб-сайтов
Разные типы сайтов подвержены разным типам рисков информационной безопасности. Понимание целей и подходов злоумылшенников как ключ к эффективному снижению рисков. Методы монетизации атак на сайты.
Доступный инструментарий и методики для обеспечения безопасности
Открытые инструменты форензики для типовых и сложных проектов. Системы обнаружения вторжений, подходы к проектированию безопасности в архитектуре и процессах.
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
Лекция Дмитрия Сатина в Школе вебмастеров: «Как правильно составить структуру сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Структура сайта, ориентированная на человека; построение структуры, карточная сортировка
Содержимое сайтов часто организовано так, как кажется удобным разработчику или контент-менеджеру компании. Чаще всего такие структуры неудобны для реальных посетителей, потому что не совпадают с их знаниями, не поясняют, как устроен материал, и не помогают найти желаемое. Структура, ориентированная на пользователя, повышает вероятность того, что посетители найдут нужную информацию или товар и сделают это быстро.
Стройте структуру, исходя из пользовательских сценариев. Выделение на сайте разделов, соответствующих структуре компании или схеме процесса закупки, как правило, усложняет навигацию для пользователя. Правильная структура учитывает уровень знаний покупателя и использует понятные ему термины и способы группировки.
Разные типы структур, средства навигации, дальнейший поиск информации на странице
Структуры сайтов, на которых ищут что-то определённое, отличаются от тех, что используются на сайтах, посетители которых ещё не уверены, что именно они хотят или как называется нужная вещь. Строгие структуры — например, организация по наименованию товара, производителю, — предполагают один способ группировки. При нестрогой организации данные можно группировать по теме, по жизненной ситуации и так далее. Используйте средства навигации, которые помогают понять, как организован материал. Решая, какой будет визуальная реализация навигации на сайте, необходимо учитывать количество разделов и связи �
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
Лекция Дмитрия Васильева в Школе вебмастеров: «Технические особенности создания сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Сайт — расплывчатое понятие
Раньше под словом «сайт» понимался набор HTML-страниц, расположенных в домене второго или третьего уровня. Появление социальных сетей размыло это понятие.
Как выбрать домен
Различные варианты, и какой из них подойдёт именно вашему сайту: доменные зоны, читаемые и нечитаемые домены, кириллица и латиница.
Подходы к созданию сайтов
Первые сайты делались на чистом HTML. Сейчас такой способ ещё встречается, но подавляющее большинство веб-страниц создаются при помощи CMS, фреймворков, конструкторов.
Составные сущности: структура, макеты дизайна, интерактивные элементы, контент, система прав. Размещение сайта на хостинге. Российские и зарубежные, дорогие и дешевые, облачные и традиционные провайдеры. Кратко о тонкостях взаимодействия с ними.
Что такое HTTPS
Всё более популярный безопасный протокол доступа к сайту. Нужен ли он вам и в каких случаях. Как выбрать платформу для сайта, основные системы управления сайтом (CMS) и конструкторы.
Сайт после запуска
Сайты создаются с конкретной целью, обычно связанной с получением дохода. Как контент сайта и его технические характеристики напрямую могут влиять на бизнес-эффективность.
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
Лекция Елены Першиной в Школе вебмастеров: «Конструкторы для отдельных элементов сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
О пользе тех или иных технологий
Взгляд в будущее, короткий обзор других полезных технологий и «опасностей», которые подстерегают на пути к правильному их выбору.
Как выбрать поиск для сайта
Поиск для сайта — важный инструмент навигации. Чтобы оценить качество поиска по своему сайту, посмотрите на количество уходов со страницы результатов. Полнота, скорость индексирования, обработка запросов (исправление ошибок, опечаток, неправильной раскладки) — без этого невозможно представить качественный поиск.
Как выбрать карты для сайта
Уход посетителя с сайта на «большие» Яндекс.Карты за точной информацией об организации может обернуться потерей клиента, который уже был готов к покупке. Чтобы этого не допустить, лучше сделать интерактивную карту прямо на сайте.
Автоматизация оплаты на сайте
Люди привыкают платить картой, сегодня даже уличные киоски принимают их. Поэтому многим посетителям кажется «подозрительным» интернет-магазин, в котором недоступны электронные платежи. Начать приём банковских карт в онлайне очень просто, главное выбрать для этого подходящую технологию.
Перевод важных страниц
На каких языках говорит ваша аудитория, много ли у вас посетителей из-за рубежа? Ответы на эти вопросы даст Яндекс.Метрика. Именно она поможет оценить, нужно ли тратиться на профессионального переводчика и готовить отдельные описания товаров или новости на других языках. Во многих случаях для совершения покупки достаточно и простого машинного перевода. Узнайте, как его настроить, чтобы ключевые разделы сайта автоматически переводились для иностранных посетителей.
Социальная интеграция
Как заставить пользователей говорить о себе в социальных сетях? В первую очередь нужно сделать хороший продукт или услугу, но и без удобного инструмента для «шаринга» в соцсетях — никуда. Рекомендации о том, как выбрать и установить такой инструмент к себе на сайт.
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
Лекция Катерины Ерошиной в Школе вебмастеров: «Контент для интернет-магазинов».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Виды контента для интернет-магазинов
Основные страницы, карточки товаров, каталог в целом. Письма покупателям. Статьи для интернет-магазина.
Основные сервисные страницы: что нужно знать покупателю
О страницах доставки, оплаты, контактов, условий работы.
Страница товара интернет-магазина: какой нужен текст, чтобы товар нашли
Признаки товаров. Сниппеты товарных позиций. Когда текст не нужен вообще. Постоянная и техническая информация на карточке.
Блог и внешние публикации интернет-магазина
О чем писать, чтобы подогреть интерес к магазину. Сторителлинг. UGC: методы вовлечения (кратко).
Персонализация интернет-магазина: стать ближе к покупателю
Красивый пример личного бренда директора магазина.
Копирайтинг для интернет-магазина: на чём можно и нельзя экономить
Что делать, если у вас 100 000 товарных позиций и они постоянно меняются.
Хорошее ТЗ копирайтеру для наполнения интернет-магазина
Что должен знать копирайтер, чтобы не писать ерунду.
Как оценить работу копирайтера
Стандартные проверки. Контроль качества текста средствами аналитики.
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
Лекция Катерины Ерошиной в Школе вебмастеров: «Как написать хороший текст для сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Назначение и типы текстов на сайте и вне его
Цель текста — влиять на поведение пользователя. Самое простое — информировать, самое сложное — привести к покупке. Виды текстов для внешних публикаций. Белые книги и другие способы подтвердить экспертизу.
Контент-план для наполнения, развития сайта и внешних публикаций
Как проектировать контент для нового сайта. Как наращивать информационную массу сайта. Внешние контакты с потребителем.
Разные уровни вовлечения: информируем, продаём, помогаем
Пройти по пути покупателя, выдавать информацию, необходимую для совершения следующего шага. Ловушки на этом пути.
Информационный стиль: применение с пониманием
Чистить текст без фанатизма. Эмоциональное вовлечение. Рациональное обоснование.
Структура и вёрстка
Заголовки и подзаголовки, списки, абзацы, иерархия подачи информации.
SEO-аспекты и LSI-копирайтинг
Понимание ценности ключей. Зачем копирайтеру нужно семантическое ядро.
Оценка качества текста (чеклист)
Уникальность, фактическая достоверность, соответствие целям, информационная плотность, грамотность.
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
Лекция Алексея Иванова в Школе вебмастеров: «Usability и дизайн: как не помешать пользователю».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Что такое юзабилити и почему оно важно
Поведение пользователей на сайте и достижение ими запланированных целей зависит не только от контента, но и от удобства сайта.
Информационное и функциональное наполнение сайта
Перед созданием сайта нужно правильно определить, какая информация и какой функционал должны быть на сайте. При этом нужно исходить не из того, что у вас есть, а из того, что будет нужно будущим посетителям вашего сайта.
Проектирование входных страниц
В зависимости от целей сайта и источников посетителей нужно сформулировать требования к входным страницам сайта и их содержанию.
Сценарии поведения пользователя
Для правильного распределения информации нужно описать сценарии взаимодействия с сайтом для разных групп посетителей. Рассмотрим методы совмещения разных сценариев на одном сайте.
Пройти тест по теме
Управление конверсией
В большинстве случаев мы ждем от посетителя сайта какого-то целевого действия. Это может быть регистрация, отправка заявки, звонок или что-то ещё. Вы увидите способы мотивации посетителей к совершению целевого действия для различных типов сайтов.
Пройти тест по теме
Основные принципы распределения информации
В рамках этого блока вы увидите, как нужно распределять информацию на странице, чтобы посетители увидели всё, что вы хотите им показать.
Мобильная версия сайта и принципы юзабилити
Всё больше посетителей приходят на сайт с мобильных устройств. Рассмотрим основные особенности взаимодействия с информацией с мобильного устройства и подходы к адаптации сайта под них.
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
Лекция Алексея Иванова в Школе вебмастеров Яндекса: «Сайт. Зачем он и каким должен быть».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Типы сайтов и потребности аудитории
В зависимости от решаемых задач, сайты можно разделить на несколько характерных типов с разными функциями и контентом. Перед созданием сайта важно понять, чего ждут посетители и какими хотят видеть веб-страницы. При этом на один и тот же сайт может попадать разная аудитория, которая ведёт себя по-разному и каждая имеет свои потребности. Для каждого сегмента нужно разработать отдельные сценарии взаимодействия с информацией на вашей площадке.
Сайт с точки зрения бизнеса
Чаще всего сайт создается для решения конкретных бизнес-задач. Рассмотрим различные типы монетизации сайтов и особенности каждого из них.
Основные показатели и методы измерения
Одно из главных преимуществ цифровых каналов — детальная аналитика взаимодействия посетителей с сайтом. В данном блоке рассмотрим основные инструменты измерения, ключевые показатели сайта, на которые нужно обращать внимание, и подходы к интерпретации полученных данных для принятия решений.
2. План лекции
Модель программирования MapReduce
Реализация Google
Знакомство с Apache Hadoop
О.В. Сухорослов () 07 MapReduce 06.04.2012 2 / 77
3. MapReduce
Модель программирования для описания алгоритмов обработки
больших массивов данных
Среда выполнения для параллельной обработки больших объемов
данных
Программная реализация (Google, Hadoop, ...)
О.В. Сухорослов () 07 MapReduce 06.04.2012 3 / 77
4. Феномен Big Data
Коммерческие приложения
Web
десятки миллиардов страниц, сотни терабайт текста
Google MapReduce: 100 TB данных в день (2004), 20 PB (2008)
Социальные сети
Facebook - петабайты пользовательских данных (15 TB/день)
Поведенческие данные пользователей (business intelligence)
Научные приложения
Физика высоких энергий
Большой Адронный Коллайдер - 15 PB/год
Астрономия и астрофизика
Large Synoptic Survey Telescope (2015) - 1.28 PB/год
Биоинформатика
Секвенирование ДНК, European Bioinformatics Institute - 5 PB
(2009)
О.В. Сухорослов () 07 MapReduce 06.04.2012 4 / 77
5. Наблюдения
Мы можем хранить все больше данных
Но латентность и пропускная способность жестких дисков не
успевают за ростом объема
Современные задачи намного превышают возможности одной
машины
Требуются кластеры из сотен и тысяч машин
Стратегия scale out выгоднее стратегии scale up
Данные нельзя разместить полностью в памяти, приходится
обращаться к диску
Последовательные чтение и запись данных при обработке гораздо
эффективнее случайного доступа
О.В. Сухорослов () 07 MapReduce 06.04.2012 5 / 77
6. Наблюдения (2)
Отказы становятся нормой
10K серверов с MTBF=1000d -> 10 отказов в день
Необходимы автоматическая обработка и восстановление после
отказов
Традиционные HPC-системы имеют отдельные системы хранения
данных
Большие объемы данных эффективнее обрабатывать там же, где
они хранятся
Разрабатывать приложения для подобных систем на низком
уровне очень сложно
Требуются высокоуровневые модели программирования,
скрывающие детали системного уровня
Требуются универсальные среды выполнения, масштабируемые и
проверенные на корректность
О.В. Сухорослов () 07 MapReduce 06.04.2012 6 / 77
7. Web Search
Сбор содержимого Web (crawling)
offline, загрузка большого объема данных, выборочное обновление,
обнаружение дубликатов
Построение инвертрованного индекса (indexing)
offline, периодическое обновление, обработка большого объема
данных, предсказуемая нагрузка
Ранжирование документов для ответа на запрос (retrieval)
online, сотни миллисекунд, большое кол-во клиентов, пики
нагрузки
О.В. Сухорослов () 07 MapReduce 06.04.2012 7 / 77
11. Модель программирования MapReduce
Базовой структурой данных являются пары (ключ, значение)
Программа описывается путем определения функций
map : (k1, v 1) → [(k2, v 2)]
reduce : (k2, [v 2]) → [(k3, v 3)]
Между map и reduce происходит группировка и сортировка
промежуточных данных по ключу k2
О.В. Сухорослов () 07 MapReduce 06.04.2012 11 / 77
17. Дополнительные функции
partition : (k2, num_reducers) → reducer _id
Определяет распределение промежуточных данных между
reduce-процессами
Простейший случай: hash(k2) mod num_reducers
combine : (k2, [v 2]) → [(k2 , v 2 )]
Осуществляет локальную агрегацию промежуточных данных после
map() в рамках одного map-процесса
Для ассоциативных и коммутативных операций может
использоваться reduce()
compare(k2, k2 ) → {−1, 0, 1}
Определяет отношение порядка между промежуточными ключами
О.В. Сухорослов () 07 MapReduce 06.04.2012 17 / 77
19. Запуск MapReduce-программы
Конфигурация задания
Входные данные, способ получения (k1,v1)
Функции map, reduce, partition, combine, compare
Местоположение и формат выходных данных
Параметры запуска (число map- и reduce-заданий...)
Запуск задания: MapReduce.runJob(config)
Остальное берет на себя реализация среды выполнения
О.В. Сухорослов () 07 MapReduce 06.04.2012 19 / 77
20. Обязанности реализации
Декомпозиция на параллельные подзадачи (map- и reduce-задачи)
Запуск рабочих процессов
Распределение задач по рабочим процессам и балансировка
нагрузки
Передача данных рабочим процессам (требуется минимизировать)
Синхронизация и передача данных между рабочими процессами
Обработка отказов рабочих процессов
О.В. Сухорослов () 07 MapReduce 06.04.2012 20 / 77
21. Реализации MapReduce
Распределенная память (кластер)
Google MapReduce (C++ / С++, Python, Java)
Apache Hadoop (Java / any)
Disco (Erlang / Python)
Skynet (Ruby)
Holumbus-MapReduce (Haskell)
FileMap: File-Based Map-Reduce
Yandex MapReduce (С++ / any)
...
Общая память (многоядерные процессоры)
QtConcurrent (C++)
Phoenix (C, C++)
GPU
Mars: A MapReduce Framework on Graphics Processors
О.В. Сухорослов () 07 MapReduce 06.04.2012 21 / 77
22. Инфраструктура Google
Кластеры из дешевых серверов
PC-class motherboards, low-end storage/networking
Linux + свое ПО
Сотни тысяч машин
Отказы являются нормой
Распределенная файловая система GFS
Поблочное хранение файлов большого размера
Последовательные чтение и запись в потоковом режиме
write-once-read-many
Репликация, отказоустойчивость
Узлы кластера одновременно отвечают за хранение и обработку
данных
Перемещение вычислений дешевле, чем перемещение данных
Планировщик
Распределяет ресурсы кластера между приложениями
О.В. Сухорослов () 07 MapReduce 06.04.2012 22 / 77
25. Мастер
Управляет выполнением одного MapReduce-задания
Распределяет задачи между рабочими узлами кластера
Хранит состояния всех задач
status, workerId
Осуществляет координацию между map- и reduce-задачами
Получает информацию о файлах с промежуточными данными от
map-процессов
Передает эту информацию reducе-процессам
Предоставляет информацию о статусе вычислений через
встроенный HTTP-сервер
О.В. Сухорослов () 07 MapReduce 06.04.2012 25 / 77
26. Оптимизации
Локальность данных
Направлять map-задачи на узлы, хранящие требуемые данные или
находящиеся рядом
Локальная редукция
Выполнять после map функцию сombine
Совмещение операций
Загрузка и сортировка промежуточных данных
Спекулятивное выполнение
В конце map или reduce запустить незавершенные задания на
нескольких машинах
О.В. Сухорослов () 07 MapReduce 06.04.2012 26 / 77
28. Отказоустойчивость
Сбой при выполнении задачи
Отказ рабочего узла
Сбой аппаратуры, ПО или отзыв узла планировщиком (preemption)
Определяется через heartbeat
Перезапуск задач
Map - всех выполненных или незаконченных + уведомление
reduce-процессов
Reduce только незаконченных
Отказ мастера
О.В. Сухорослов () 07 MapReduce 06.04.2012 28 / 77
29. Семантика распределенного выполнения программы
Для детерминированных функций map и reduce гарантируется
совпадение результата вычислений с результатом
последовательного выполнения программы
Для недетерминированных функций map и reduce гарантируется
совпадение результата каждой reduce-задачи с результатом
последовательного выполнения программы
Результаты разных reduce-задач могут соответствовать разным
последовательным выполнениям
Атомарные операции
Передача списка промежуточных файлов от map-процесса к
мастеру
Переименование файла в GFS с результатом reduce-задания
Поддержка выполнения на локальной машине
О.В. Сухорослов () 07 MapReduce 06.04.2012 29 / 77
30. Количество задач
Много больше числа машин
Динамическая балансировка нагрузки
Восстановление после отказов
Число map-задач M
Input / M ∼ 16-64 Mb
Число reduce-задач R
В несколько (∼2) раз больше числа машин
Для N=2000: M=200000, R=5000
О.В. Сухорослов () 07 MapReduce 06.04.2012 30 / 77
31. MapReduce в Google
large-scale machine learning problems
clustering problems for the Google News and Froogle products
extracting data to produce reports of popular queries
extracting properties of Web pages for new experiments and products
processing of satellite imagery data
language model processing for statistical machine translation
large-scale graph computations
О.В. Сухорослов () 07 MapReduce 06.04.2012 31 / 77
32. Пример кода (Map)
1 # include " mapreduce / mapreduce . h "
2
3 // User ’s map function
4 class WordCounter : public Mapper {
5 public :
6 virtual void Map ( const MapInput & input ) {
7 const string & text = input . value ();
8 const int n = text . size ();
9 for ( int i = 0; i < n ; ) {
10 // Skip past leading whitespace
11 while (( i < n ) && isspace ( text [ i ]))
12 i ++;
13
14 // Find word end
15 int start = i ;
16 while (( i < n ) && ! isspace ( text [ i ]))
17 i ++;
18 if ( start < i )
19 Emit ( text . substr ( start ,i - start ) , " 1 " );
20 }
21 }
22 };
23 REGISTER_MAPPER ( WordCounter );
О.В. Сухорослов () 07 MapReduce 06.04.2012 32 / 77
33. Пример кода (Reduce)
1 // User ’s reduce function
2 class Adder : public Reducer {
3 virtual void Reduce ( ReduceInput * input ) {
4 // Iterate over all entries with the
5 // same key and add the values
6 int64 value = 0;
7 while (! input - > done ()) {
8 value += StringToInt ( input - > value ());
9 input - > NextValue ();
10 }
11
12 // Emit sum for input - > key ()
13 Emit ( IntToString ( value ));
14 }
15 };
16 REGISTER_REDUCER ( Adder );
О.В. Сухорослов () 07 MapReduce 06.04.2012 33 / 77
34. Пример кода (main)
1 int main ( int argc , char ** argv ) {
2 Par se C o m m a n d L i n e Flag s ( argc , argv );
3
4 Ma pR e d u c e S p e c i f i c ati on spec ;
5
6 // Store list of input files into " spec "
7 for ( int i = 1; i < argc ; i ++) {
8 MapReduceInput * input = spec . add_input ();
9 input - > set_format ( " text " );
10 input - > set_filepattern ( argv [ i ]);
11 input - > set_mapper_class ( " WordCounter " );
12 }
13
14 // Specify the output files :
15 MapReduceOutput * out = spec . output ();
16 out - > set_filebase ( " / gfs / test / freq " );
17 out - > set_num_tasks (100);
18 out - > set_format ( " text " );
19 out - > set_r educer_class ( " Adder " );
О.В. Сухорослов () 07 MapReduce 06.04.2012 34 / 77
35. Пример кода (main)
1 // Optional : do partial sums within map
2 // tasks to save network bandwidth
3 out - > s et _co mb in er_class ( " Adder " );
4
5 // Tuning parameters : use at most 2000
6 // machines and 100 MB of memory per task
7 spec . set_machines (2000);
8 spec . set_m ap_megabytes (100);
9 spec . s e t _ r e du c e _ megabytes (100);
10
11 // Now run it
12 MapReduceResult result ;
13 if (! MapReduce ( spec , & result )) abort ();
14
15 // Done : ’ result ’ structure contains info
16 // about counters , time taken , number of
17 // machines used , etc .
18 return 0;
19 }
О.В. Сухорослов () 07 MapReduce 06.04.2012 35 / 77
36. Преимущества MapReduce
Модель программирования
Высокий уровень абстракции за счет скрытия деталей организации
вычислений внутри библиотеки
Позволяет разработчику сконцентрироваться на решаемой задаче
Легкость добавления новых стадий обработки
Реализация
Автоматическое распараллеливание, распределение заданий и
балансирование нагрузки
Устойчивость к отказам
Масштабируемость
О.В. Сухорослов () 07 MapReduce 06.04.2012 36 / 77
40. Цели
Открытые реализации технологий Google (GFS, MapReduce...)
Программная платформа для хранения и обработки больших
объемов данных
Надежность
Масштабируемость
Эффективность
Экономичность
Open Source
О.В. Сухорослов () 07 MapReduce 06.04.2012 40 / 77
41. Подпроекты
Hadoop Common
Общие компоненты
HDFS
Распределенная файловая система по образу GFS
MapReduce
Реализация MapReduce для распределенной обработки больших
объемов данных на кластере
О.В. Сухорослов () 07 MapReduce 06.04.2012 41 / 77
43. Hadoop Distributed File System (HDFS)
Хранение больших наборов данных
Отказоустойчивость
Модель "write-once-read-many"
Streaming data access
Перемещение вычислений дешевле, чем перемещение данных
О.В. Сухорослов () 07 MapReduce 06.04.2012 43 / 77
44. HDFS
Иерархическая структура
Управляется выделенным узлом namenode
Файлы разбиваются на блоки (chunks)
По умолчанию 64 Mb
Файлы хранятся на узлах datanodes
Репликация, по умолчанию 3 копии
Клиенты
Поиск ближайшей реплики с помощью namenode
Получение данных напрямую с datanode
О.В. Сухорослов () 07 MapReduce 06.04.2012 44 / 77
48. Hadoop MapReduce
JobTracker
Принимает задания (job) от приложений
Разбивает задание на много задач (tasks)
Распределяет задачи по узлам
Отслеживает выполнение задач
Осуществляет перезапуск задач
TaskTracker
Запрашивает новые задачи
Загружает код и запускает задачу в новой JVM
Уведомляет JobTracker о статусе задачи
Предоставляет доступ к промежуточным файлам
О.В. Сухорослов () 07 MapReduce 06.04.2012 48 / 77
49. Реализация MapReduce-программ для Hadoop
Java
Стандартный Java API
Другие языки и скрипты
Hadoop Streaming
C++ (и другие языки через SWIG)
Hadoop Pipes
О.В. Сухорослов () 07 MapReduce 06.04.2012 49 / 77
51. Общая структура программы
Реализации Mapper и Reducer (Partitioner, Combiner...)
Код формирования и запуска задания
Ожидание результата или выход
О.В. Сухорослов () 07 MapReduce 06.04.2012 51 / 77
53. Реализация по умолчанию
1 protected void map ( KEYIN key , VALUEIN value , Context context )
2 throws IOException , I n te r r u pt e d E xc e p t ion {
3 context . write (( KEYOUT ) key , ( VALUEOUT ) value );
4 }
5
6 public void run ( Context context )
7 throws IOException , I n te r r u pt e d E xc e p t ion {
8 setup ( context );
9 while ( context . nextKeyValue ()) {
10 map ( context . getCurrentKey () , context . getCurrentValue () ,
11 context );
12 }
13 cleanup ( context );
14 }
О.В. Сухорослов () 07 MapReduce 06.04.2012 53 / 77
54. WordCount: Mapper
1 public static class TokenizerMapper
2 extends Mapper < LongWritable , Text , Text , IntWritable > {
3
4 private final static IntWritable one = new IntWritable (1);
5 private Text word = new Text ();
6
7 public void map ( LongWritable key , Text value , Context context )
8 throws IOException , I n t e r r u pt edException {
9 StringTokenizer tok = new StringTokenizer ( value . toString ())
10 while ( tok . hasMoreTokens ()) {
11 word . set ( tok . nextToken ());
12 context . write ( word , one );
13 }
14 }
15 }
О.В. Сухорослов () 07 MapReduce 06.04.2012 54 / 77
56. Реализация по умолчанию
1 protected void reduce ( KEYIN key , Iterable < VALUEIN > values ,
2 Context context ) throws IOException , Inter ru pt ed Ex ce pt ion {
3 for ( VALUEIN value : values ) {
4 context . write (( KEYOUT ) key , ( VALUEOUT ) value );
5 }
6 }
7
8 public void run ( Context context )
9 throws IOException , I n te r r u pt e d E xc e p t ion {
10 setup ( context );
11 while ( context . nextKey ()) {
12 reduce ( context . getCurrentKey () , context . getValues () ,
13 context );
14 }
15 cleanup ( context );
16 }
О.В. Сухорослов () 07 MapReduce 06.04.2012 56 / 77
57. WordCount: Reducer
1 public static class IntSumReducer
2 extends Reducer < Text , IntWritable , Text , IntWritable > {
3 public void reduce ( Text key , Iterable < IntWritable > values ,
4 Context context )
5 throws IOException , I n t e r r u pt edException {
6 int sum = 0;
7 for ( IntWritable val : values ) {
8 sum += val . get ();
9 }
10 context . write ( key , new IntWritable ( sum ));
11 }
12 }
О.В. Сухорослов () 07 MapReduce 06.04.2012 57 / 77
58. Конфигурация и запуск задания
1 public class WordCount extends Configured implements Tool {
2
3 public static void main ( String [] args ) throws Exception {
4 int ret = ToolRunner . run ( new WordCount () , args );
5 System . exit ( ret );
6 }
7
8 public int run ( String [] args ) throws Exception {
9 if ( args . length != 2) {
10 System . err . println (
11 " Usage : lecture7 . WordCount < input > < output > " );
12 return -1;
13 }
14
15 Job job = new Job ( getConf ());
16 job . setJarByClass ( WordCount . class );
17 job . setJobName ( " wordcount " );
18
19 job . setMapperClass ( TokenizerMapper . class );
20 job . setCombinerClass ( IntSumReducer . class );
21 job . setReducerClass ( IntSumReducer . class );
О.В. Сухорослов () 07 MapReduce 06.04.2012 58 / 77
59. Конфигурация и запуск задания
1 job . s et M a pOu t p u tKe y C l a s s ( Text . class );
2 job . s e t M a p O u t p u t V a lu e C l a s s ( IntWritable . class );
3 job . set OutputKe yClass ( Text . class );
4 job . s et Output Va lu e Cl a ss ( IntWritable . class );
5
6 job . s et InputF or ma t Cl a ss ( TextInputFormat . class );
7 job . s et O u tpu t F o rma t C l a s s ( TextOutputFormat . class );
8
9 FileInputFormat . addInputPath ( job , new Path ( args [0]));
10 FileOutputFormat . setOutputPath ( job , new Path ( args [1]));
11
12 boolean success = job . waitF orCompletion ( true );
13 return success ? 0 : 1;
14 }
15 }
О.В. Сухорослов () 07 MapReduce 06.04.2012 59 / 77
60. Входные и выходные данные
(input) → (k1, v 1) → map → (k2, v 2) → combine → (k2, v 2) →
reduce → (k3, v 3) → (output)
Базовые интерфейсы
Входные данные: InputFormat
Выходные данные: OutputFormat
Ключи: WritableComparable
Значения: Writable
О.В. Сухорослов () 07 MapReduce 06.04.2012 60 / 77
61. Типы данных
Text
BooleanWritable
IntWritable
LongWritable
FloatWritable
DoubleWritable
BytesWritable
ArrayWritable
MapWritable
...
См. пакет org.apache.hadoop.io
О.В. Сухорослов () 07 MapReduce 06.04.2012 61 / 77
62. InputFormat
TextInputFormat (по умолчанию)
< LongWritable, Text > = < byte_offset, line >
KeyValueTextInputFormat
< Text, Text >
Текстовый файл со строками вида: key [tab] value
SequenceFileInputFormat<K,V>
Двоичный формат с поддержкой сжатия
...
О.В. Сухорослов () 07 MapReduce 06.04.2012 62 / 77
64. Установка Hadoop на локальной машине
Установить Java
Загрузить дистрибутив Hadoop и распаковать в любую
директорию (далее HADOOP_HOME)
Linux
Открыть файл HADOOP_HOME/conf/hadoop-env.sh и прописать в
переменной JAVA_HOME путь к Java (путь с пробелами надо
взять в кавычки)
Windows
Прописать переменную окружения JAVA_HOME с путем к Java
(Мой компьютер > Свойства > закладка Дополнительно >
Переменные среды)
Дополнительно установить Cygwin, эмулятор Unix shell
Команды hadoop под Windows следует запускать внутри Cygwin
shell
О.В. Сухорослов () 07 MapReduce 06.04.2012 64 / 77
65. Альтернативный вариант
Виртуальная машина с Hadoop
Cloudera’s Hadoop Demo VM
О.В. Сухорослов () 07 MapReduce 06.04.2012 65 / 77
66. Компилируем и создаем jar
Eclipse
Добавить в проект HADOOP_HOME/hadoop-*-core.jar
Build project
File -> Export -> Java / JAR file
Вручную
1 $ mkdir classes
2 $ javac
3 - classpath $ { HADOOP_HOME }/ hadoop - $ { HADOOP_VERSION } - core . jar
4 -d classes WordCount . java
5 $ jar - cvf wordcount . jar -C classes / .
О.В. Сухорослов () 07 MapReduce 06.04.2012 66 / 77
67. Запускаем программу локально
Находясь в HADOOP_HOME
1 $ bin / hadoop jar wordcount . jar lecture7 . WordCount IN OUT
IN - директория с входными файлами
OUT - директория с результатами
не должна существовать перед запуском
О.В. Сухорослов () 07 MapReduce 06.04.2012 67 / 77
68. Запуск из IDE (Eclipse)
Подключаем к проекту HADOOP_HOME/hadoop-*-core.jar и все
библиотеки из HADOOP_HOME/lib
Project->Properties->Java Build Path->Libraries->Add External
JARs...
Создаем Run Configuration, где указываем свой Java-класс
(вкладка Main) и аргументы main (Arguments/Program Arguments)
в VM arguments следует добавить -Xmx512M во избежание
OutOfMemoryError
пути к локальным input- и output-директориям можно указывать
относительно директории проекта
Под Windows может потребоваться Cygwin
О.В. Сухорослов () 07 MapReduce 06.04.2012 68 / 77
69. Число задач
Maps
Определяется числом блоков во входных файлах, размером блока,
параметром mapred.min.split.size, реализацией InputFormat
Reduces
По умолчанию 1 (всегда в локальном режиме)
Опция -D mapred.reduce.tasks=N или метод
job.setNumReduceTasks(int)
Обычно подбирается опытным путем
Время выполнения reduce должно быть не менее минуты
0, если Reduce не нужен
О.В. Сухорослов () 07 MapReduce 06.04.2012 69 / 77
70. Стандартные опции
1 - conf < configuration file > // specify a configuration file
2
3 -D < property = value > // use value for given property
4 -D mapred . reduce . tasks =10
5
6 - files < comma separated list of files >
7 // files to be copied to the map reduce cluster
8
9 - libjars < comma seperated list of jars >
10 // jar files to include in the classpath
11
12 - archives < comma separated list of archives >
13 // archives to be unarchived on the compute machines
О.В. Сухорослов () 07 MapReduce 06.04.2012 70 / 77
71. Запуск на учебном кластере
Копируем jar и исходные данные в домашнюю директорию на
кластере (/home/USER) по SCP
Заходим на кластер по SSH
Загружаем исходные данные в HDFS
Запускаем MapReduce-задание
Загружаем результаты из HDFS
О.В. Сухорослов () 07 MapReduce 06.04.2012 71 / 77
72. Загружаем исходные данные в HDFS
Копирование из локальной директории в HDFS
1 $ hadoop dfs - put local_dir hdfs_dir
dfs_dir лучше задавать в относительном виде, тогда полный путь
будет /user/USER/dfs_dir
1 $ hadoop dfs - mkdir wordcount
2 $ hadoop dfs - put / home / USER / input wordcount / input
О.В. Сухорослов () 07 MapReduce 06.04.2012 72 / 77
73. Запускаем MapReduce-задание
В одну строку
1 $ hadoop jar wordcount . jar lecture7 . WordCount
2 -D mapred . reduce . tasks =1
3 wordcount / input wordcount / output
О.В. Сухорослов () 07 MapReduce 06.04.2012 73 / 77
74. Загружаем результаты из HDFS
Копирование из HDFS в локальную директорию
1 $ hadoop dfs - get wordcount / output output
Просто просмотр
1 $ hadoop dfs - cat wordcount / output / part -00000
О.В. Сухорослов () 07 MapReduce 06.04.2012 74 / 77
75. Повторный запуск
Перед каждым запуском надо удалять из HDFS
output-директорию (wordcount/output)
Или каждый раз указывать новую output-директорию
wordcount/output2(3...)
О.В. Сухорослов () 07 MapReduce 06.04.2012 75 / 77
76. Web-интерфейсы
HDFS
http://hadoop2.yandex.ru:50070
MapReduce
http://hadoop2.yandex.ru:50030
Для доступа необходимо настроить прокси через SSH
См. инструкцию к учебному кластеру на вики
О.В. Сухорослов () 07 MapReduce 06.04.2012 76 / 77
77. Домашнее задание №3 - Подготовка
Задачи
Определить 20 наиболее часто встречающихся слов в русской
(только русские слова) и английской Википедиях
Построить инвертированный индекс для русской и английской
Википедий
Подробности будут на следующем занятии
До следующего занятия
установить Hadoop на своей машине
скомпилировать сегодняшний пример WordCount
(запустить WordCount на своей машине)
запустить WordCount на учебном кластере
в качестве входных данных можно использовать любые текстовые
файлы
убедиться, что все работает и понятно
если нет - задать вопрос на shad-pdc-2012@yandex.ru
О.В. Сухорослов () 07 MapReduce 06.04.2012 77 / 77