Кирилл Алешин - big data и lambda архитектура на практике
DESCRIPTION
IT_Share. Highload 2.0TRANSCRIPT
![Page 1: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/1.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Ламбда Архитектура на Практике
Кирилл АлешинIDEXX Laboratories
![Page 2: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/2.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
План Доклада
• Что такое Ламбда Архитектура?
• Описание проекта
• Характеристики масштабной аналитической системы данных
• Суп технологий: Твиттер Сторм, Редис, Хадуп.
• Выученые уроки
• Ответы на вопросы
![Page 3: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/3.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Ламбда Архитектура
• Инвентор – Натан Марц (Твиттер)
• Обещание – «неограниченная масштабируемость данных в реальном времени»
![Page 4: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/4.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Интуиция: запрос
![Page 5: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/5.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Описание Проекта
• Несколько слов об Айдексе
• Глобальный лидер в ветеринарной сфере
• Рыночная капитализация - $5.5 млрд.
• Самые высокие расходы на R&D во всей вет. индустрии – как реальные, так и пропорцианальные обороту
![Page 6: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/6.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Описание Проекта
• Циклическое импортирование тысяч баз данных из ветеринарных клиник в реальном времени
• Складирование этих данных в хорошо масштабируемой системе
• Открытие центрального доступа к этим данным как внутри, так и вне компании
• Научная аналитика
• ...и все это должно быть не сильно дорого
![Page 7: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/7.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Какие данные?
• Финансовые:
• Ветеринарные платежи
• Медицинские:
• Результаты лабораторных тестов
• Вакцинации
• Истории болезни
• Медицинский нарратив (неструктурированные данные)
• Общие:
• Клиентские визиты
• Напоминания о визитах
![Page 8: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/8.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Бизнес Цели – Данные Это Продукт
• Сопоставление итогов маркетинговых компаний
• Определение характеристик лучших клиентов
• Упреждающая детекция эпидемий
• Превентивная медицина
• Перепродажа данных крупным фармацевтическим компаниям
![Page 9: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/9.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Проблемы...
• Импортируемые базы данных не позволяют определять новые или измененные значения
• Каждая база данных должна обрабатываться каждый раз заново
• ... четыре раза в день
• 10 тысяч баз данных х 4 раза в день = 1 база в 2 секунды
• Средняя база данных содержит в себе 4-5 млн рядов.
![Page 10: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/10.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Задачи
Наша система данных должна:
• Быстро сохранять и обрабатывать огромное количество данных (масштабируемость).
• Делать это относительно недорого (стоимость).
• Быть настоящей системой данных – представлять данные на протяжении всего временного континуума (особая модель данных).
![Page 11: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/11.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Фундаментальный принцип: Неизменяемость (Immutability)
• Неизменяемые данные никогда не обновляются.
• Как следствие, неизменяемые системы данных предствляют собой полнyю репрезентацию фактов на временном континууме.
• Как следствие, неизменяемые системы данных гораздо более устойчивы к человеческим ошибкам, так как ошибочные данные могут быть просто удалены без всяких усилий на восстановление правдивых значений.
![Page 12: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/12.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Пример: Изменяемые Данные
id name gender color species
1 Sam male brown canine
2 Rover male yellow canine
3 Fluffy female white feline
![Page 13: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/13.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Пример: Изменяемые Данные
id name gender color species
1 Sam male brown canine
2 Rover neutered male yellow canine
3 Fluffy female white feline
![Page 14: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/14.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Пример: Неизменяемые ДанныеName Data
id name Timestamp1 Sam 4/3/2011 10:25:442 Rover 7/4/2010 16:35:203 Fluffy 10/12/2012 19:45:45
Species Dataid Species timestamp1 canine 4/3/2011 10:25:442 canine 7/4/2010 16:35:203 feline 10/12/2012 19:45:45
Sex Data
id name timestamp
1 Male 4/3/2011 10:25:44
2 Male 7/4/2010 16:35:20
3 Female 10/12/2012 19:45:45
Sex Data
id name timestamp
1 Male 4/3/2011 10:25:44
2 Male 7/4/2010 16:35:20
3 Female 10/12/2012 19:45:45
2 Neutered Male 04/02/2013 22:34:56
![Page 15: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/15.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Еще раз о плюсах такой модели данных
• Позволяет осуществлять запрос в любой временной момент
• Толерантна к человеческой ошибке
• Фундаментальна столбчата – минимизирует усилия на чтение
![Page 16: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/16.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Основные Компоненты
• Клиент для выкачивания данных из ветеринарных практик
• Твиттер Сторм – как высокоскорстная ETL система
• Редис – как высокоскоростная система фильтрации
• Хадуп – как аналитическая система
• Системы материализованных представлений – serving layer.
![Page 17: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/17.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Клиент для выкачки данных
• Софт, который устанавливается в клинике и:
• Переодически выкачивает все данные
• Сохраняет их в «облаке»
• Посылает сигнал готовности
![Page 18: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/18.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Сторм – потоковая система обработки данных
• Любые потоковые вычисления
• Источником данных может быть что угодно: обычно какая-то очередь.
• Ключевые абстракции (spouts and bolts) конфигурируются в топологии и распределяются по серверам (supervisors) и Ява процессам (workers).
• Легкая горизонтальная масштабируемость.
• Сторм предоставляет гарантированную доставку данных. Akka, Erlang – отдыхают.
![Page 19: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/19.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Редис: фильтр для неизмененных рядов
• Для каждого ряда, который будет сохраняться в Хадупе, мы сцепляем все значения в единую строку и вычисляем ее 128 битный хэш.
• Этот хэш сохраняется в Редисе вместе с первичным ключом каждого для каждого ряда.
• Точно также мы вычисляем этот хэш для каждого ряда из пришедшей базы данных и сравниваем его со значением в Редисе.
• Если оно одно и то же, то ряд отфильтровывается.
![Page 20: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/20.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Хадуп – Ключевые Идеи
• HDFS – данные сохраняются на распределенной файловой системе.
• Код выполняется прямо на узлах данных (локальность).
• Распределение данных и кода автоматическое и незаметное.
• Падение узлов незаметно для приложения.
• Масштабируемость достигается простым добавлением узлов без остановки кластера.
![Page 21: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/21.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Уроки Хадупа: Часть 2
• Общая оркестровка рабочего процесса пока слаба – используем Spring Batch.
• Если нужны быстрые результаты,то надо много узлов.
• Никогда не используйте MapReduce напрямую – пользуйтесь высокоуровневыми библиотеками – Cascading, JCascalog – особенно, когда данные структурированы.
• dfs-datastores – неплохая библиотека для прямого складирования и чтения структурированных данных прямо на HDFS.
• Легко интегрируется с S3, что позволяет использование Amazon EMR, для особо тяжелых процессов.
![Page 22: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/22.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Как читать данные?
• Ламбда архитектура говорит, что они должны поставляться из некоторого дополнительного уровня материализованных представлений – the serving layer.
• Фактически это может быть что угодно. Основное требование – скорость обновления и консистенция чтения на клиенте в момент обновления.
• Можно делать и в реляционной базе данных через материализованные представления (если обем данных не сильно большой)
• Есть и специализированные базы данных: ElephantDB, Voldemort
![Page 23: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/23.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Общие Заметки
• Твиттер Сторм оказался чрезвычайно стабильной системой – работает фактически на автопилоте.
• Редис также невероятно стабильная высокоскоростная система. Мы буквально не можем его перегрузить.
• Хадуп – требует заботы и внимания, но тем не менее легко масштабируется и позволяет обрабатывать огромное колличество данных.
![Page 24: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/24.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Реализованная Ламбда Архитектура
• Горизонтально масштабируемая система на всех уровнях.
• Неизменная модель данных, позволяющая любой уровень аналитики данных.
• Поскольку данные никогда не удаляются (кроме человеческих ошибок) и сохраняются «сырыми», то ошибки в анализе легко исправляются – новый код и получите новое представление данных (view) на уровне, на котором данные читаются.
![Page 25: Кирилл Алешин - Big Data и Lambda архитектура на практике](https://reader033.vdocuments.site/reader033/viewer/2022061209/548c9b30b47959e7368b45ef/html5/thumbnails/25.jpg)
Copyright © 2013 Kyrill Alyoshin. All rights reserved.
Вопросы Пожалуйста!
Кирилл Алешин
Twitter: kyrill007