SlideShare a Scribd company logo
1 of 100
Download to read offline
Hadoop -> Cascading -> Cascalog
обо мне

● Андрей Панфилов
● Java-разработчик
● Интересуюсь: BigData, ФП
проблематика

$600
стоимость диска на который поместится вся
музыка в мире
http://bit.ly/big-data-mk-2011
проблематика

5 миллиардов
мобильников использовалось в 2010
http://bit.ly/big-data-mk-2011
проблематика

30 миллиардов
расшариваний всякой фигни в Facebook
каждый месяц в 2011-м году
http://bit.ly/big-data-mk-2011
проблематика

40%

прогнозируемого роста данных

во всём мире в год

VS

5%
(2011 год)

роста ИТ-расходов во всём мире
http://bit.ly/big-data-mk-2011
проблематика

235 терабайт
данных собрано Библиотекой Конгресса
США в апреле 2011-го
http://bit.ly/big-data-mk-2011
проблематика

15 из 17
секторов экономики в США имеют больше
данных, хранящихся на компанию, чем
Библиотека Конгресса США
http://bit.ly/big-data-mk-2011
MapReduce история вопроса

Опубликована работа

“MapReduce: Simplified Data
Processing on Large Clusters”
Джеффри Дин и Санжай Гемават,

2004
MapReduce история вопроса

Описывает как Google разделяет,
обрабатывает и агрегирует их набор данных
огромных размеров.
MapReduce история вопроса

Начат проект Hadoop*
Дуг Каттинг и Майк Кафарелла

2005

* назван в честь игрушечного слонёнка ребёнка Дуга
MapReduce история вопроса
В течение 2005 — 2006 годов Hadoop
развивался усилиями двух разработчиков —
Каттинга и Майка Кафареллы в режиме
частичной занятости, сначала в рамках
проекта Nutch, затем — проекта Lucene.

http://ru.wikipedia.org/wiki/Hadoop
MapReduce история вопроса
В январе 2006 г. Yahoo пригласила Каттинга
возглавить команду разработки
инфраструктуры распределённых
вычислений (выделение Hadoop в
отдельный проект). В феврале 2008 г.
Yahoo запустила кластерную поисковую
машину на 10 тыс. процессорных ядер,
управляемую средствами Hadoop.
Map & Reduce

Map x2 to (1 2 3 4 5) --> (2 4 6 8 10)

http://www.byzantinereality.com/2009/2/Thoughts-on-MapReduce
Map & Reduce

Reduce "min" to (2 4 6 8 10) --> (2)

http://www.byzantinereality.com/2009/2/Thoughts-on-MapReduce
Apache Hadoop

● Оупенсорсный фреймворк
● Java
Apache Hadoop

1. Hadoop Common
2. HDFS
3. Hadoop MapReduce
Apache Hadoop

Hadoop Common
● абстракция над файловыми системами
(HDFS, S3, maprfs, CloudStore, FTP, read only
HTTP...)
● FS shell (cat, chmod, chown, chgrp, cp, du, ls, mkdir,
mv, rm, tail)
● утилиты
Apache Hadoop

HDFS
● распределённая файловая система
● файлы можно дописывать в конец
● distributed, scalable, reliable portable…
http://en.wikipedia.org/wiki/Hadoop#Hadoop_distributed_file_system
Apache Hadoop

Hadoop MapReduce
● framework на котором пишутся Maps и
Reduces
● движок в котором выполняется ваш код
Cascading
Cascading is a data processing API
and processing query planner used
for defining, sharing, and executing
data-processing workflows on a single
computing
node
or
distributed
computing cluster.

http://docs.cascading.org/cascading/2.0/userguide/htmlsingle/
Cascading
Cascading с разных точек зрения

С точки зрения бизнеса:
● управление бизнес процессами для
оркестрации потоков выполнения (аля
BPM / BPEL)
http://www.slideshare.net/pacoid/cascading-for-the-impatient
Cascading с разных точек зрения

С точки зрения системного интегратора:
● система интеграции гетерогенных
источников данных и платформ
вычисления
http://www.slideshare.net/pacoid/cascading-for-the-impatient
Cascading с разных точек зрения

С точки зрения data scientist:
● направленный ациклический граф для
которого можно применить закон Амдала*
http://www.slideshare.net/pacoid/cascading-for-the-impatient
*для любознательных
Закон Амдала:
В случае, когда задача разделяется на
несколько частей, суммарное время её
выполнения на параллельной системе
не может быть меньше времени
выполнения
самого
длинного
фрагмента.
Cascading с разных точек зрения

С точки зрения data архитектора:
● физический план управления большими
потоками данных
http://www.slideshare.net/pacoid/cascading-for-the-impatient
Cascading с разных точек зрения

С точки зрения архитектора ПО:
● язык паттернов, похожий на план
водопровода или проектирование
принципиальных схем устройств
http://www.slideshare.net/pacoid/cascading-for-the-impatient
Cascading с разных точек зрения

С точки зрения разработчика:
● связывающий API для скалы, кложура,
пайтона, руби, джава
http://www.slideshare.net/pacoid/cascading-for-the-impatient
Cascading с разных точек зрения

С точки зрения админа/Ops’а:
● JAR файл
● которому можно передать параметры
через командную строку
● валяется в Maven Repo
http://www.slideshare.net/pacoid/cascading-for-the-impatient
история
● Крис Венсель (Chris Wensel)
● Начал разработку Cascading’а в начале
2008 (запись в блоге)
● Основал компанию Concurrent в
середине 2008
● В 2011 Concurrent получила инвестиции
для дальнейшего развития Cascading’а
● 2008 20 KLOC
● 2013 106 KLOC
● 3 контрибьютера
Yep, it is open source!

https://github.com/cwensel/cascading
лицензия

Apache License 2.0
коммерческая поддержка

Есть!
http://www.concurrentinc.com/support/
аналоги каскадинга

●
●
●
●

Oozie
Crunch
Apache Falcon
Cloudera Morphlines
основные понятия

● Pipes / трубы (потоки данных)
● Filters / фильтры (операции над данными)
основные понятия
Набор разных труб (pipes) позволяет*:

●
●
●
●

разделять данные
мёрджить данные
группировать
джойнить
* Для каждого кортежа или для группы
кортежей.
основные понятия: tuples
Cascading оперирует кортежами

(“the man sat”,
25)
(“hello dolly”,
42)
(“say hello”,
1)
(“the woman sat”, 10)
основные понятия: tuples

[“sentence”, “value”]
(“the man sat”,
25)
(“hello dolly”,
42)
(“say hello”,
1)
(“the woman sat”, 10)
основные понятия: tuples

● Аналог тапла -- это строка в таблице базы
данных.
● В каскадинге для кортежей есть
специальный тип: cascading.tuple.
Tuple
● Внутри это List<Object> elements;
основные понятия: fields

[“sentence”, “value”]
(“the man sat”,
25)
(“hello dolly”,
42)
(“say hello”,
1)
(“the woman sat”, 10)
основные понятия: fields
● Определяет имя элемента кортежа.
● В каскадинге для полей есть специальный
тип: cascading.tuple.Fields
● Поле может быть строкой, целым
числом или специальным значением из
предопределённого множества.
● Специальные значения нужны для
выполнения шаблонных операций.
основные понятия: fields

Специальные значения:
ALL, RESULTS, REPLACE, SWAP,
ARGS, GROUP, VALUES,
UNKNOWN, NONE
основные понятия: pipes

● Это узел в котором может что-то
происходить с кортежами (в документации нет
чёткого определения пайпа).
● В каскадинге для пайпов есть
специальный тип: cascading.pipe.
Pipe
основные понятия: pipes
Типы пайпов:
● Класс Pipe -- нужно для создания и
именования пайпа (планировщик использует
имена для соединения с тапами).
● Подкласс SubAssembly -- повторное
использование сборок пайпов.
● Шесть основных подклассов: Each,
Merge, GroupBy, Every, CoGroup,
HashJoin.
основные понятия: pipes
Each:
● операции основанные на содержимом
кортежа: анализ, трансформация или
фильтрация
● оперирует конкретным кортежем из потока
● применяет функции или фильтры такие как
условная замена определённых значений
полей, удаление кортежей значение полей
которых выходит за заданные пределы…
● откалывание отдельной ветки потока данных
● удаление ненужных полей из потока данных
основные понятия: pipes

Merge:
● слияние нескольких потоков данных в один
● принимает несколько потоков с идентичными
полями
● отдаёт один поток с кортежами из входных
потоков в произвольном порядке
основные понятия: pipes
GroupBy:
● группирует кортежи потока данных по общим
значениям указанных полей
● если на вход подать несколько потоков, то
перед группировкой происходит слияние
(поля потоков должны быть одинаковые)
● обычно группировку делают перед
операциями “aggregator” или “buffer”
● по сути сортирует все кортежи в группы (в
группах кортежи в произвольном порядке)
основные понятия: pipes

Every:
● оперирует сгруппированными кортежами
● используется для применения операций
“aggregator” или “buffer”
● используется только после GroupBy или
CoGroup
● можно несколько операций “aggregator”
ставить подряд (для “buffer” не работает)
основные понятия: pipes
CoGroup:
● выполняет операцию “join” на нескольких
входных потоках данных или на самом себе
● похож на SQL join (тоже может быть inner,
outer, left, или right)
● отдаёт поток данных сгруппированный по
указанным полям
● выходной поток данных содержит все поля
входных потоков
● входные потоки не могут содержать
одинаковые имена полей
основные понятия: pipes
HashJoin:
● выполняет операцию “join” на нескольких
входных потоках данных или на самом себе
● похож на SQL join (тоже может быть inner,
outer, left, или right)
● отдаёт поток данных в произвольном прядке
● если не нужна группировка, быстрее чем
CoGroup (при условии нескольких маленьких
входных потоков и не более одного большого)
основные понятия: пайпы (трубы)
основные понятия: pipe assembly
Простая последовательность пайпов без
разветвлений и слияний.
основные понятия: tuple stream
Последовательность кортежей проходящая
через ветвь пайпов или сборку (assembly).
паттерны работы с потоками

● Split
● Merge
● Join
паттерны работы с потоками

Split:
● Разделение данных из одного
потока на несколько потоков.
● К одному Pipe’у присоединяется
несколько последующих Pipe’ов.
паттерны работы с потоками

Merge:
● Слияние нескольких потоков
данных в один.
● Несколько Pipe’ов
присоединяются к Pipe’у типа
Merge или GroupBy.
паттерны работы с потоками

Join:
● Комбинирование данных из
нескольких потоков с разными
полями по общим полям (аналог
SQL join).
● Несколько Pipe’ов
присоединяются к Pipe’у типа
HashJoin или CoGroup.
основные понятия: tap

“кран” -- источник данных
основные понятия: sink

сток -- пункт назначения данных
основные понятия: флоу

flow = pipe assemblies +
source taps +
sink taps
(краны + трубы + стоки)
основные понятия: флоу
● Важный момент: флоу -- это
информация о том где брать данные, как
обрабатывать и куда складывать
результат.
● Где и куда должны существовать в
момент выполнения.
● После создания, флоу нужно выполнить
в одной из платформ.
основные понятия: флоу

Платформы:
● Hadoop
● Local
основные понятия: флоу

Флоу можно соединять в
цепочки.
операции

аля юникс команды:

sed, grep, sort, uniq и awk
основные понятия: фунции
● Ожидает на вход один кортеж.
● Хороший тон: указать набор
входных и выходных полей.
● Возвращает ноль или больше
кортежей.
● Используется с пайпом Each,
который может следовать после
пайпа любого типа.
основные понятия: фунции

Примеры:
● парсеры
● маршалеры
● преобразователи (одних
полей в другие)
основные понятия: фильтры
● Ожидает на вход один кортеж.
● Возвращает true или false
(выбрасываем кортеж из потока
или нет).
● Используется с пайпом Each,
который может следовать после
пайпа любого типа.
основные понятия: агрегаторы
● Ожидает на вход группу кортежей
(вывод пайпа GroupBy или
CoGroup).
● Возвращает ноль или несколько
кортежей для каждой входной
группы кортежей.
● Примеры: Average, Count, First,
Last, Max, Min, Sum
основные понятия: буфферы
● Ожидает на вход группу кортежей
(вывод пайпа GroupBy или
CoGroup).
● Возвращает ноль или несколько
кортежей для каждой входной группы
кортежей.
● Получает всю группу кортежей сразу
(доступ через итератор).
● Удобно для вставки кортежа в
группу.
как происходит
разделение на map и reduce
Hadoop MapReduce Job Planner
тестирование
● Юнит-тесты для функций, фильтров,
агрегаторов и буфферов (cascading.
CascadingTestCase).
● cascading.operation.Debug -фильтр, печатает кортеж в stdout или
stderr.
● запуск в локальном режиме.
● пишите логи (в коде своих операций)
дебаг
● в локальном режиме:
https://github.com/ScaleUnlimited/cascading.utils
final FlowRunner runner = new FlowRunner();
runner.addFlow(flow);
runner.complete();

● Hadoop кластер из одной ноды:
export HADOOP_OPTS = "-agentlib:
jdwp=transport=dt_socket,server=y,suspend=y,
address=8788"
hadoop jar your-casc.jar <параметры>
генерация диаграмм
деплоймент

Всё точно так же как если
бы вы писали Hadoop
MapReduce Job.
особенности

● файлы: лучше мало больших, чем
много маленьких.
● S3 + много маленьких -> s3distcp.
ещё один шаг вперёд
● Cascading -- это высокоуровневый API
● Меньше кода и проще проектировать
сложную обработку данных (по
сравнению с обычным MapReduce)
● Следующий логичный шаг -- DSL
● Выразительный
● Гибкий
● Правильная идеология
тааадааам!

cascalog
раскрываем тайну названия

cascalog
раскрываем тайну названия

cascalog
datalog

● Декларативный логический язык
программирования.
● Синтаксически является подмножеством
Пролога.
● Часто используется как язык запросов к
дедуктивным базам данных (более
выразительный чем SQL).
datalog
1
2
3
4
5
6

родил(Авраам,Исаак).
родил(Исаак,Иаков).
предок(X,Y) :- родил(X,Y).
предок(X,Y) :родил(X,Z),предок(Z,Y).
?- предок(Авраам,X).

1 - Авраам родитель Исаака; 2 - Исаак родитель Иакова; 3, 4, 5 - правила
определения предков; структура правила: <голова> :- <тело>; 3 - X предок
Y’а если известно что X родитель Y’а; 4, 5 - X предок Y’а если известно
что X родитель Z’а и Z предок Y’а; 6 - запрос “найти всех людей у кого в
предках Авраам”, результат: Исаак и Иаков.
история

● Натан Марц (Nathan Marz)
● Первый коммит в гитхабе весной 2010
(пруф)

●
●
●
●

Прародитель
2010 1 KLOC
2013 9 KLOC
29 контрибьютеров
Yep, it is open source!

https://github.com/nathanmarz/cascalog
лицензия

Apache License 2.0
коммерческая поддержка

Не нашёл.
пример
(def age
[
;; [person age]
["alice" 28]
["bob" 33]
["gary" 28]
["john" 27]
["luanne" 36]
])
пример

(?<- ;; определение и выполнение запроса
(stdout) ;; куда попадает вывод
[?person ?a2] ;; результат (переменные)
(age ?person ?age) ;; предикат - генератор
(< ?age 30) ;; предикат - фильтр
(* 2 ?age :> ?a2)) ;; предикат - операция
REPL session

Несколько примеров в консоле.
пример: word count
пример: word count
пример: word count
пример: word count
проблемы каскалога

● Высокий порог вхождения (clojure).
● Мало документации.
● В Украине практически нет людей с
опытом использования сабжа.
● Нет формальной грамматики
описывающей язык запросов.
сообщество

● Гугл группа каскалога.
● Гугл-группа каскадинга.
● Как ни странно на stackoverflow.com
практически ничего нет о сабжах.
● Митапы в Сан-Франциско и Лондоне.
кто использует cascalog
●
●
●
●
●
●
●
●

Twitter
Amazon продукты MultiTool и LogAnalyzer
Etsy рынок для хенмейда
FlightCaster предсказание задержек
рейсов
Ion Flux биоинформатика
RapLeaf рекомендательные системы
Razorfish рекламное агенство
The Climate Corporation страхование от
неурожая
развитие

● Каскалог 2.0 не будет привязан к
каскадингу.
● Storm -- одна из возможных платформ.
когда использовать

● Данных должно быть ОЧЕНЬ много (не
помещаются в память).
● Исторические данные (логи).
● Данные всё время добавляются.
документация

● Отличный User Guide по каскадингу.
● Замечательный туториал по каскадингу.
● Вики по каскалогу в гитхабе.
конец

Вопросы!
andrew@dzer6.com

More Related Content

What's hot

CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...IT-Portfolio
 
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...Ontico
 
Technopolis.NoSQL 01
Technopolis.NoSQL 01Technopolis.NoSQL 01
Technopolis.NoSQL 01Vadim Tsesko
 
Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3Evgeny Gazdovsky
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)Ontico
 
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Yandex
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEBAlexandre Kalendarev
 
Очистка и интеграция открытых данных из разнородных источников
Очистка и интеграция открытых данных из разнородных источниковОчистка и интеграция открытых данных из разнородных источников
Очистка и интеграция открытых данных из разнородных источниковIlia Karpov
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)Ontico
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetOntico
 
Active Record for CoreData
Active Record for CoreDataActive Record for CoreData
Active Record for CoreDataDmitriy Kuragin
 

What's hot (14)

CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Строим N...
 
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...Долгожданный релиз pg_pathman 1.0 / Александр Коротков,  Дмитрий Иванов (Post...
Долгожданный релиз pg_pathman 1.0 / Александр Коротков, Дмитрий Иванов (Post...
 
Technopolis.NoSQL 01
Technopolis.NoSQL 01Technopolis.NoSQL 01
Technopolis.NoSQL 01
 
Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3Презентация Neo4j на ADD-3
Презентация Neo4j на ADD-3
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
 
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
 
Использование Sedna в WEB
Использование Sedna в WEBИспользование Sedna в WEB
Использование Sedna в WEB
 
Очистка и интеграция открытых данных из разнородных источников
Очистка и интеграция открытых данных из разнородных источниковОчистка и интеграция открытых данных из разнородных источников
Очистка и интеграция открытых данных из разнородных источников
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
 
Active Record for CoreData
Active Record for CoreDataActive Record for CoreData
Active Record for CoreData
 

Viewers also liked

Signals1
Signals1Signals1
Signals1lyndyv
 
φυλλομετριτες
φυλλομετριτεςφυλλομετριτες
φυλλομετριτεςgiaki3
 
ηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηgiaki3
 
ηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηgiaki3
 
Памятники от простых до элитных г.Оренбург. ..
Памятники от простых до элитных г.Оренбург. ..Памятники от простых до элитных г.Оренбург. ..
Памятники от простых до элитных г.Оренбург. ..tominpavel
 
connectionpool 事業概要書
connectionpool 事業概要書connectionpool 事業概要書
connectionpool 事業概要書Yu Ito
 
Auth and association
Auth and associationAuth and association
Auth and associationlyndyv
 
01.07 Apresentação evolution AP online
01.07 Apresentação evolution AP online01.07 Apresentação evolution AP online
01.07 Apresentação evolution AP onlinevipessencia
 
Herb as health food
Herb as health foodHerb as health food
Herb as health foodsharmin14
 
IEEE WLAN standards
IEEE WLAN standardsIEEE WLAN standards
IEEE WLAN standardslyndyv
 

Viewers also liked (20)

Cloud services From Calsoftlabs
Cloud services From CalsoftlabsCloud services From Calsoftlabs
Cloud services From Calsoftlabs
 
Signals1
Signals1Signals1
Signals1
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
φυλλομετριτες
φυλλομετριτεςφυλλομετριτες
φυλλομετριτες
 
ηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχληση
 
The Digital Blind Spot
The Digital Blind SpotThe Digital Blind Spot
The Digital Blind Spot
 
ηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχληση
 
Памятники от простых до элитных г.Оренбург. ..
Памятники от простых до элитных г.Оренбург. ..Памятники от простых до элитных г.Оренбург. ..
Памятники от простых до элитных г.Оренбург. ..
 
Wvdial
WvdialWvdial
Wvdial
 
connectionpool 事業概要書
connectionpool 事業概要書connectionpool 事業概要書
connectionpool 事業概要書
 
Auth and association
Auth and associationAuth and association
Auth and association
 
Tv print digital differences april 2013
Tv print digital  differences april 2013Tv print digital  differences april 2013
Tv print digital differences april 2013
 
01.07 Apresentação evolution AP online
01.07 Apresentação evolution AP online01.07 Apresentação evolution AP online
01.07 Apresentação evolution AP online
 
Optimising Video Creative in a Digital World
Optimising Video Creative in a Digital WorldOptimising Video Creative in a Digital World
Optimising Video Creative in a Digital World
 
Herb as health food
Herb as health foodHerb as health food
Herb as health food
 
IEEE WLAN standards
IEEE WLAN standardsIEEE WLAN standards
IEEE WLAN standards
 
Nat
NatNat
Nat
 
Инновационные проекты АО "КМГ"
Инновационные проекты АО "КМГ"Инновационные проекты АО "КМГ"
Инновационные проекты АО "КМГ"
 
без манчестера
без манчестерабез манчестера
без манчестера
 
DataLift.DA
DataLift.DADataLift.DA
DataLift.DA
 

Similar to Hadoop -> Cascading -> Cascalog

DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.mikhaelsmirnov
 
Anton Shloma. Custom tables
Anton Shloma. Custom tablesAnton Shloma. Custom tables
Anton Shloma. Custom tablesi20 Group
 
Anton Shloma. Custom tables
Anton Shloma. Custom tablesAnton Shloma. Custom tables
Anton Shloma. Custom tablesDrupalSib
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Ontico
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XCPostgreSQL-Consulting
 
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСИнфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСYury Petrov
 
Машины баз данных: концентрированное обозрение
Машины баз данных: концентрированное обозрениеМашины баз данных: концентрированное обозрение
Машины баз данных: концентрированное обозрениеAndrei Nikolaenko
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...Nikolay Samokhvalov
 
Организация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятияОрганизация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятияVasily Kazakov
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Fwdays
 
Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данныхAlex Polorotov
 
паттерны проектирования источников данных
паттерны проектирования источников данныхпаттерны проектирования источников данных
паттерны проектирования источников данныхVitaliy Trenkenshu
 
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Yandex
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
Технологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших ДанныхТехнологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших ДанныхAndrey Akulov
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеAlexandre Kalendarev
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
 

Similar to Hadoop -> Cascading -> Cascalog (20)

DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
 
Tarantool_qs
 Tarantool_qs Tarantool_qs
Tarantool_qs
 
Anton Shloma. Custom tables
Anton Shloma. Custom tablesAnton Shloma. Custom tables
Anton Shloma. Custom tables
 
Anton Shloma. Custom tables
Anton Shloma. Custom tablesAnton Shloma. Custom tables
Anton Shloma. Custom tables
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XC
 
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиСИнфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
 
Машины баз данных: концентрированное обозрение
Машины баз данных: концентрированное обозрениеМашины баз данных: концентрированное обозрение
Машины баз данных: концентрированное обозрение
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 
Организация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятияОрганизация базы знаний проектной деятельности предприятия
Организация базы знаний проектной деятельности предприятия
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
 
Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данных
 
паттерны проектирования источников данных
паттерны проектирования источников данныхпаттерны проектирования источников данных
паттерны проектирования источников данных
 
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
 
Druid - Interactive Analytics At Scale
Druid - Interactive Analytics At ScaleDruid - Interactive Analytics At Scale
Druid - Interactive Analytics At Scale
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Технологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших ДанныхТехнологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших Данных
 
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилищеВелосипедостраительство в NoSQL, строим собственное NoSQL хранилище
Велосипедостраительство в NoSQL, строим собственное NoSQL хранилище
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 

Recently uploaded (9)

Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 

Hadoop -> Cascading -> Cascalog

  • 1. Hadoop -> Cascading -> Cascalog
  • 2. обо мне ● Андрей Панфилов ● Java-разработчик ● Интересуюсь: BigData, ФП
  • 3. проблематика $600 стоимость диска на который поместится вся музыка в мире http://bit.ly/big-data-mk-2011
  • 5. проблематика 30 миллиардов расшариваний всякой фигни в Facebook каждый месяц в 2011-м году http://bit.ly/big-data-mk-2011
  • 6. проблематика 40% прогнозируемого роста данных во всём мире в год VS 5% (2011 год) роста ИТ-расходов во всём мире http://bit.ly/big-data-mk-2011
  • 7. проблематика 235 терабайт данных собрано Библиотекой Конгресса США в апреле 2011-го http://bit.ly/big-data-mk-2011
  • 8. проблематика 15 из 17 секторов экономики в США имеют больше данных, хранящихся на компанию, чем Библиотека Конгресса США http://bit.ly/big-data-mk-2011
  • 9. MapReduce история вопроса Опубликована работа “MapReduce: Simplified Data Processing on Large Clusters” Джеффри Дин и Санжай Гемават, 2004
  • 10. MapReduce история вопроса Описывает как Google разделяет, обрабатывает и агрегирует их набор данных огромных размеров.
  • 11. MapReduce история вопроса Начат проект Hadoop* Дуг Каттинг и Майк Кафарелла 2005 * назван в честь игрушечного слонёнка ребёнка Дуга
  • 12. MapReduce история вопроса В течение 2005 — 2006 годов Hadoop развивался усилиями двух разработчиков — Каттинга и Майка Кафареллы в режиме частичной занятости, сначала в рамках проекта Nutch, затем — проекта Lucene. http://ru.wikipedia.org/wiki/Hadoop
  • 13. MapReduce история вопроса В январе 2006 г. Yahoo пригласила Каттинга возглавить команду разработки инфраструктуры распределённых вычислений (выделение Hadoop в отдельный проект). В феврале 2008 г. Yahoo запустила кластерную поисковую машину на 10 тыс. процессорных ядер, управляемую средствами Hadoop.
  • 14. Map & Reduce Map x2 to (1 2 3 4 5) --> (2 4 6 8 10) http://www.byzantinereality.com/2009/2/Thoughts-on-MapReduce
  • 15. Map & Reduce Reduce "min" to (2 4 6 8 10) --> (2) http://www.byzantinereality.com/2009/2/Thoughts-on-MapReduce
  • 16. Apache Hadoop ● Оупенсорсный фреймворк ● Java
  • 17. Apache Hadoop 1. Hadoop Common 2. HDFS 3. Hadoop MapReduce
  • 18. Apache Hadoop Hadoop Common ● абстракция над файловыми системами (HDFS, S3, maprfs, CloudStore, FTP, read only HTTP...) ● FS shell (cat, chmod, chown, chgrp, cp, du, ls, mkdir, mv, rm, tail) ● утилиты
  • 19. Apache Hadoop HDFS ● распределённая файловая система ● файлы можно дописывать в конец ● distributed, scalable, reliable portable… http://en.wikipedia.org/wiki/Hadoop#Hadoop_distributed_file_system
  • 20. Apache Hadoop Hadoop MapReduce ● framework на котором пишутся Maps и Reduces ● движок в котором выполняется ваш код
  • 21. Cascading Cascading is a data processing API and processing query planner used for defining, sharing, and executing data-processing workflows on a single computing node or distributed computing cluster. http://docs.cascading.org/cascading/2.0/userguide/htmlsingle/
  • 23. Cascading с разных точек зрения С точки зрения бизнеса: ● управление бизнес процессами для оркестрации потоков выполнения (аля BPM / BPEL) http://www.slideshare.net/pacoid/cascading-for-the-impatient
  • 24. Cascading с разных точек зрения С точки зрения системного интегратора: ● система интеграции гетерогенных источников данных и платформ вычисления http://www.slideshare.net/pacoid/cascading-for-the-impatient
  • 25. Cascading с разных точек зрения С точки зрения data scientist: ● направленный ациклический граф для которого можно применить закон Амдала* http://www.slideshare.net/pacoid/cascading-for-the-impatient
  • 26. *для любознательных Закон Амдала: В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента.
  • 27. Cascading с разных точек зрения С точки зрения data архитектора: ● физический план управления большими потоками данных http://www.slideshare.net/pacoid/cascading-for-the-impatient
  • 28. Cascading с разных точек зрения С точки зрения архитектора ПО: ● язык паттернов, похожий на план водопровода или проектирование принципиальных схем устройств http://www.slideshare.net/pacoid/cascading-for-the-impatient
  • 29. Cascading с разных точек зрения С точки зрения разработчика: ● связывающий API для скалы, кложура, пайтона, руби, джава http://www.slideshare.net/pacoid/cascading-for-the-impatient
  • 30. Cascading с разных точек зрения С точки зрения админа/Ops’а: ● JAR файл ● которому можно передать параметры через командную строку ● валяется в Maven Repo http://www.slideshare.net/pacoid/cascading-for-the-impatient
  • 31. история ● Крис Венсель (Chris Wensel) ● Начал разработку Cascading’а в начале 2008 (запись в блоге) ● Основал компанию Concurrent в середине 2008 ● В 2011 Concurrent получила инвестиции для дальнейшего развития Cascading’а ● 2008 20 KLOC ● 2013 106 KLOC ● 3 контрибьютера
  • 32. Yep, it is open source! https://github.com/cwensel/cascading
  • 36. основные понятия ● Pipes / трубы (потоки данных) ● Filters / фильтры (операции над данными)
  • 37. основные понятия Набор разных труб (pipes) позволяет*: ● ● ● ● разделять данные мёрджить данные группировать джойнить * Для каждого кортежа или для группы кортежей.
  • 38. основные понятия: tuples Cascading оперирует кортежами (“the man sat”, 25) (“hello dolly”, 42) (“say hello”, 1) (“the woman sat”, 10)
  • 39. основные понятия: tuples [“sentence”, “value”] (“the man sat”, 25) (“hello dolly”, 42) (“say hello”, 1) (“the woman sat”, 10)
  • 40. основные понятия: tuples ● Аналог тапла -- это строка в таблице базы данных. ● В каскадинге для кортежей есть специальный тип: cascading.tuple. Tuple ● Внутри это List<Object> elements;
  • 41. основные понятия: fields [“sentence”, “value”] (“the man sat”, 25) (“hello dolly”, 42) (“say hello”, 1) (“the woman sat”, 10)
  • 42. основные понятия: fields ● Определяет имя элемента кортежа. ● В каскадинге для полей есть специальный тип: cascading.tuple.Fields ● Поле может быть строкой, целым числом или специальным значением из предопределённого множества. ● Специальные значения нужны для выполнения шаблонных операций.
  • 43. основные понятия: fields Специальные значения: ALL, RESULTS, REPLACE, SWAP, ARGS, GROUP, VALUES, UNKNOWN, NONE
  • 44. основные понятия: pipes ● Это узел в котором может что-то происходить с кортежами (в документации нет чёткого определения пайпа). ● В каскадинге для пайпов есть специальный тип: cascading.pipe. Pipe
  • 45. основные понятия: pipes Типы пайпов: ● Класс Pipe -- нужно для создания и именования пайпа (планировщик использует имена для соединения с тапами). ● Подкласс SubAssembly -- повторное использование сборок пайпов. ● Шесть основных подклассов: Each, Merge, GroupBy, Every, CoGroup, HashJoin.
  • 46. основные понятия: pipes Each: ● операции основанные на содержимом кортежа: анализ, трансформация или фильтрация ● оперирует конкретным кортежем из потока ● применяет функции или фильтры такие как условная замена определённых значений полей, удаление кортежей значение полей которых выходит за заданные пределы… ● откалывание отдельной ветки потока данных ● удаление ненужных полей из потока данных
  • 47. основные понятия: pipes Merge: ● слияние нескольких потоков данных в один ● принимает несколько потоков с идентичными полями ● отдаёт один поток с кортежами из входных потоков в произвольном порядке
  • 48. основные понятия: pipes GroupBy: ● группирует кортежи потока данных по общим значениям указанных полей ● если на вход подать несколько потоков, то перед группировкой происходит слияние (поля потоков должны быть одинаковые) ● обычно группировку делают перед операциями “aggregator” или “buffer” ● по сути сортирует все кортежи в группы (в группах кортежи в произвольном порядке)
  • 49. основные понятия: pipes Every: ● оперирует сгруппированными кортежами ● используется для применения операций “aggregator” или “buffer” ● используется только после GroupBy или CoGroup ● можно несколько операций “aggregator” ставить подряд (для “buffer” не работает)
  • 50. основные понятия: pipes CoGroup: ● выполняет операцию “join” на нескольких входных потоках данных или на самом себе ● похож на SQL join (тоже может быть inner, outer, left, или right) ● отдаёт поток данных сгруппированный по указанным полям ● выходной поток данных содержит все поля входных потоков ● входные потоки не могут содержать одинаковые имена полей
  • 51. основные понятия: pipes HashJoin: ● выполняет операцию “join” на нескольких входных потоках данных или на самом себе ● похож на SQL join (тоже может быть inner, outer, left, или right) ● отдаёт поток данных в произвольном прядке ● если не нужна группировка, быстрее чем CoGroup (при условии нескольких маленьких входных потоков и не более одного большого)
  • 53. основные понятия: pipe assembly Простая последовательность пайпов без разветвлений и слияний.
  • 54. основные понятия: tuple stream Последовательность кортежей проходящая через ветвь пайпов или сборку (assembly).
  • 55. паттерны работы с потоками ● Split ● Merge ● Join
  • 56. паттерны работы с потоками Split: ● Разделение данных из одного потока на несколько потоков. ● К одному Pipe’у присоединяется несколько последующих Pipe’ов.
  • 57. паттерны работы с потоками Merge: ● Слияние нескольких потоков данных в один. ● Несколько Pipe’ов присоединяются к Pipe’у типа Merge или GroupBy.
  • 58. паттерны работы с потоками Join: ● Комбинирование данных из нескольких потоков с разными полями по общим полям (аналог SQL join). ● Несколько Pipe’ов присоединяются к Pipe’у типа HashJoin или CoGroup.
  • 59. основные понятия: tap “кран” -- источник данных
  • 60. основные понятия: sink сток -- пункт назначения данных
  • 61. основные понятия: флоу flow = pipe assemblies + source taps + sink taps (краны + трубы + стоки)
  • 62. основные понятия: флоу ● Важный момент: флоу -- это информация о том где брать данные, как обрабатывать и куда складывать результат. ● Где и куда должны существовать в момент выполнения. ● После создания, флоу нужно выполнить в одной из платформ.
  • 64. основные понятия: флоу Флоу можно соединять в цепочки.
  • 66. основные понятия: фунции ● Ожидает на вход один кортеж. ● Хороший тон: указать набор входных и выходных полей. ● Возвращает ноль или больше кортежей. ● Используется с пайпом Each, который может следовать после пайпа любого типа.
  • 67. основные понятия: фунции Примеры: ● парсеры ● маршалеры ● преобразователи (одних полей в другие)
  • 68. основные понятия: фильтры ● Ожидает на вход один кортеж. ● Возвращает true или false (выбрасываем кортеж из потока или нет). ● Используется с пайпом Each, который может следовать после пайпа любого типа.
  • 69. основные понятия: агрегаторы ● Ожидает на вход группу кортежей (вывод пайпа GroupBy или CoGroup). ● Возвращает ноль или несколько кортежей для каждой входной группы кортежей. ● Примеры: Average, Count, First, Last, Max, Min, Sum
  • 70. основные понятия: буфферы ● Ожидает на вход группу кортежей (вывод пайпа GroupBy или CoGroup). ● Возвращает ноль или несколько кортежей для каждой входной группы кортежей. ● Получает всю группу кортежей сразу (доступ через итератор). ● Удобно для вставки кортежа в группу.
  • 71. как происходит разделение на map и reduce Hadoop MapReduce Job Planner
  • 72. тестирование ● Юнит-тесты для функций, фильтров, агрегаторов и буфферов (cascading. CascadingTestCase). ● cascading.operation.Debug -фильтр, печатает кортеж в stdout или stderr. ● запуск в локальном режиме. ● пишите логи (в коде своих операций)
  • 73. дебаг ● в локальном режиме: https://github.com/ScaleUnlimited/cascading.utils final FlowRunner runner = new FlowRunner(); runner.addFlow(flow); runner.complete(); ● Hadoop кластер из одной ноды: export HADOOP_OPTS = "-agentlib: jdwp=transport=dt_socket,server=y,suspend=y, address=8788" hadoop jar your-casc.jar <параметры>
  • 75. деплоймент Всё точно так же как если бы вы писали Hadoop MapReduce Job.
  • 76. особенности ● файлы: лучше мало больших, чем много маленьких. ● S3 + много маленьких -> s3distcp.
  • 77. ещё один шаг вперёд ● Cascading -- это высокоуровневый API ● Меньше кода и проще проектировать сложную обработку данных (по сравнению с обычным MapReduce) ● Следующий логичный шаг -- DSL ● Выразительный ● Гибкий ● Правильная идеология
  • 81. datalog ● Декларативный логический язык программирования. ● Синтаксически является подмножеством Пролога. ● Часто используется как язык запросов к дедуктивным базам данных (более выразительный чем SQL).
  • 82. datalog 1 2 3 4 5 6 родил(Авраам,Исаак). родил(Исаак,Иаков). предок(X,Y) :- родил(X,Y). предок(X,Y) :родил(X,Z),предок(Z,Y). ?- предок(Авраам,X). 1 - Авраам родитель Исаака; 2 - Исаак родитель Иакова; 3, 4, 5 - правила определения предков; структура правила: <голова> :- <тело>; 3 - X предок Y’а если известно что X родитель Y’а; 4, 5 - X предок Y’а если известно что X родитель Z’а и Z предок Y’а; 6 - запрос “найти всех людей у кого в предках Авраам”, результат: Исаак и Иаков.
  • 83. история ● Натан Марц (Nathan Marz) ● Первый коммит в гитхабе весной 2010 (пруф) ● ● ● ● Прародитель 2010 1 KLOC 2013 9 KLOC 29 контрибьютеров
  • 84. Yep, it is open source! https://github.com/nathanmarz/cascalog
  • 87. пример (def age [ ;; [person age] ["alice" 28] ["bob" 33] ["gary" 28] ["john" 27] ["luanne" 36] ])
  • 88. пример (?<- ;; определение и выполнение запроса (stdout) ;; куда попадает вывод [?person ?a2] ;; результат (переменные) (age ?person ?age) ;; предикат - генератор (< ?age 30) ;; предикат - фильтр (* 2 ?age :> ?a2)) ;; предикат - операция
  • 94. проблемы каскалога ● Высокий порог вхождения (clojure). ● Мало документации. ● В Украине практически нет людей с опытом использования сабжа. ● Нет формальной грамматики описывающей язык запросов.
  • 95. сообщество ● Гугл группа каскалога. ● Гугл-группа каскадинга. ● Как ни странно на stackoverflow.com практически ничего нет о сабжах. ● Митапы в Сан-Франциско и Лондоне.
  • 96. кто использует cascalog ● ● ● ● ● ● ● ● Twitter Amazon продукты MultiTool и LogAnalyzer Etsy рынок для хенмейда FlightCaster предсказание задержек рейсов Ion Flux биоинформатика RapLeaf рекомендательные системы Razorfish рекламное агенство The Climate Corporation страхование от неурожая
  • 97. развитие ● Каскалог 2.0 не будет привязан к каскадингу. ● Storm -- одна из возможных платформ.
  • 98. когда использовать ● Данных должно быть ОЧЕНЬ много (не помещаются в память). ● Исторические данные (логи). ● Данные всё время добавляются.
  • 99. документация ● Отличный User Guide по каскадингу. ● Замечательный туториал по каскадингу. ● Вики по каскалогу в гитхабе.