Кирилл Алешин - big data и lambda архитектура на практике

25
Copyright © 2013 Kyrill Alyoshin. All rights reserved. Ламбда Архитектура на Практике Кирилл Алешин IDEXX Laboratories

Upload: it-share

Post on 14-Dec-2014

680 views

Category:

Documents


1 download

DESCRIPTION

IT_Share. Highload 2.0

TRANSCRIPT

Page 1: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Ламбда Архитектура на Практике

Кирилл АлешинIDEXX Laboratories

Page 2: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

План Доклада

• Что такое Ламбда Архитектура?

• Описание проекта

• Характеристики масштабной аналитической системы данных

• Суп технологий: Твиттер Сторм, Редис, Хадуп.

• Выученые уроки

• Ответы на вопросы

Page 3: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Ламбда Архитектура

• Инвентор – Натан Марц (Твиттер)

• Обещание – «неограниченная масштабируемость данных в реальном времени»

Page 4: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Интуиция: запрос

Page 5: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Описание Проекта

• Несколько слов об Айдексе

• Глобальный лидер в ветеринарной сфере

• Рыночная капитализация - $5.5 млрд.

• Самые высокие расходы на R&D во всей вет. индустрии – как реальные, так и пропорцианальные обороту

Page 6: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Описание Проекта

• Циклическое импортирование тысяч баз данных из ветеринарных клиник в реальном времени

• Складирование этих данных в хорошо масштабируемой системе

• Открытие центрального доступа к этим данным как внутри, так и вне компании

• Научная аналитика

• ...и все это должно быть не сильно дорого

Page 7: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Какие данные?

• Финансовые:

• Ветеринарные платежи

• Медицинские:

• Результаты лабораторных тестов

• Вакцинации

• Истории болезни

• Медицинский нарратив (неструктурированные данные)

• Общие:

• Клиентские визиты

• Напоминания о визитах

Page 8: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Бизнес Цели – Данные Это Продукт

• Сопоставление итогов маркетинговых компаний

• Определение характеристик лучших клиентов

• Упреждающая детекция эпидемий

• Превентивная медицина

• Перепродажа данных крупным фармацевтическим компаниям

Page 9: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Проблемы...

• Импортируемые базы данных не позволяют определять новые или измененные значения

• Каждая база данных должна обрабатываться каждый раз заново

• ... четыре раза в день

• 10 тысяч баз данных х 4 раза в день = 1 база в 2 секунды

• Средняя база данных содержит в себе 4-5 млн рядов.

Page 10: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Задачи

Наша система данных должна:

• Быстро сохранять и обрабатывать огромное количество данных (масштабируемость).

• Делать это относительно недорого (стоимость).

• Быть настоящей системой данных – представлять данные на протяжении всего временного континуума (особая модель данных).

Page 11: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Фундаментальный принцип: Неизменяемость (Immutability)

• Неизменяемые данные никогда не обновляются.

• Как следствие, неизменяемые системы данных предствляют собой полнyю репрезентацию фактов на временном континууме.

• Как следствие, неизменяемые системы данных гораздо более устойчивы к человеческим ошибкам, так как ошибочные данные могут быть просто удалены без всяких усилий на восстановление правдивых значений.

Page 12: Кирилл Алешин - Big Data и Lambda архитектура на практике

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 архитектура на практике

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 архитектура на практике

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 архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Еще раз о плюсах такой модели данных

• Позволяет осуществлять запрос в любой временной момент

• Толерантна к человеческой ошибке

• Фундаментальна столбчата – минимизирует усилия на чтение

Page 16: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Основные Компоненты

• Клиент для выкачивания данных из ветеринарных практик

• Твиттер Сторм – как высокоскорстная ETL система

• Редис – как высокоскоростная система фильтрации

• Хадуп – как аналитическая система

• Системы материализованных представлений – serving layer.

Page 17: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Клиент для выкачки данных

• Софт, который устанавливается в клинике и:

• Переодически выкачивает все данные

• Сохраняет их в «облаке»

• Посылает сигнал готовности

Page 18: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Сторм – потоковая система обработки данных

• Любые потоковые вычисления

• Источником данных может быть что угодно: обычно какая-то очередь.

• Ключевые абстракции (spouts and bolts) конфигурируются в топологии и распределяются по серверам (supervisors) и Ява процессам (workers).

• Легкая горизонтальная масштабируемость.

• Сторм предоставляет гарантированную доставку данных. Akka, Erlang – отдыхают.

Page 19: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Редис: фильтр для неизмененных рядов

• Для каждого ряда, который будет сохраняться в Хадупе, мы сцепляем все значения в единую строку и вычисляем ее 128 битный хэш.

• Этот хэш сохраняется в Редисе вместе с первичным ключом каждого для каждого ряда.

• Точно также мы вычисляем этот хэш для каждого ряда из пришедшей базы данных и сравниваем его со значением в Редисе.

• Если оно одно и то же, то ряд отфильтровывается.

Page 20: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Хадуп – Ключевые Идеи

• HDFS – данные сохраняются на распределенной файловой системе.

• Код выполняется прямо на узлах данных (локальность).

• Распределение данных и кода автоматическое и незаметное.

• Падение узлов незаметно для приложения.

• Масштабируемость достигается простым добавлением узлов без остановки кластера.

Page 21: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Уроки Хадупа: Часть 2

• Общая оркестровка рабочего процесса пока слаба – используем Spring Batch.

• Если нужны быстрые результаты,то надо много узлов.

• Никогда не используйте MapReduce напрямую – пользуйтесь высокоуровневыми библиотеками – Cascading, JCascalog – особенно, когда данные структурированы.

• dfs-datastores – неплохая библиотека для прямого складирования и чтения структурированных данных прямо на HDFS.

• Легко интегрируется с S3, что позволяет использование Amazon EMR, для особо тяжелых процессов.

Page 22: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Как читать данные?

• Ламбда архитектура говорит, что они должны поставляться из некоторого дополнительного уровня материализованных представлений – the serving layer.

• Фактически это может быть что угодно. Основное требование – скорость обновления и консистенция чтения на клиенте в момент обновления.

• Можно делать и в реляционной базе данных через материализованные представления (если обем данных не сильно большой)

• Есть и специализированные базы данных: ElephantDB, Voldemort

Page 23: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Общие Заметки

• Твиттер Сторм оказался чрезвычайно стабильной системой – работает фактически на автопилоте.

• Редис также невероятно стабильная высокоскоростная система. Мы буквально не можем его перегрузить.

• Хадуп – требует заботы и внимания, но тем не менее легко масштабируется и позволяет обрабатывать огромное колличество данных.

Page 24: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Реализованная Ламбда Архитектура

• Горизонтально масштабируемая система на всех уровнях.

• Неизменная модель данных, позволяющая любой уровень аналитики данных.

• Поскольку данные никогда не удаляются (кроме человеческих ошибок) и сохраняются «сырыми», то ошибки в анализе легко исправляются – новый код и получите новое представление данных (view) на уровне, на котором данные читаются.

Page 25: Кирилл Алешин - Big Data и Lambda архитектура на практике

Copyright © 2013 Kyrill Alyoshin. All rights reserved.

Вопросы Пожалуйста!

Кирилл Алешин

[email protected]

Twitter: kyrill007