SlideShare una empresa de Scribd logo
1 de 59
Descargar para leer sin conexión
Hadoop -> Cascading -> Cascalog
Обо мне

● Андрей Панфилов
● Java-разработчик
● Интересуюсь: BigData, ФП
Проблематика
● $600 стоимость диска на который поместится вся музыка
в мире
● 5B мобильников использовалось в 2010
● 30B расшариваний всякой фигни в Facebook каждый
месяц в 2011-м году
● 40% прогнозируемого роста данных во всём мире в год
VS 5% роста ИТ-расходов во всём мире (2011 год)
● 235 терабайт данных собрано Библиотекой Конгресса
США в апреле 2011-го
● 15 из 17 секторов экономики в США имеют больше
данных, хранящихся на компанию, чем Библиотека
Конгресса США
http://bit.ly/big-data-mk-2011
MapReduce история вопроса
● 2004: Опубликована работа “MapReduce: Simplified Data
Processing on Large Clusters” (Джеффри Дин и Санжай
Гемават).
● 2005: Начат проект Hadoop (Дуг Каттинг и Майк
Кафарелла).
● 2005 - 2006: Hadoop развивался усилиями двух
разработчиков — Каттинга и Майка Кафареллы в режиме
частичной занятости, сначала в рамках проекта Nutch,
затем — проекта Lucene.
● 2006: Yahoo пригласила Каттинга возглавить команду
разработки (выделение Hadoop в отдельный проект).
● 2008: Yahoo запустила кластер на 10K ядер,
управляемую средствами Hadoop.
http://ru.wikipedia.org/wiki/Hadoop
Map & Reduce

● Map x2 to (1 2 3 4 5) --> (2 4 6 8 10)
● Reduce "min" to (2 4 6 8 10) --> (2)

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

● Java based open source framework.
● Common (утилиты), HDFS, MapReduce.
● http://en.wikipedia.org/wiki/Hadoop
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).
● Системного интегратора: система интеграции гетерогенных
источников данных и платформ вычисления.
● Data scientist: направленный ациклический граф
подчиняющийся закону Амдала*.
● Data architect: физический план управления большими
потоками данных.
● Архитектора: язык паттернов, похожий на план водопровода
или проектирование принципиальных схем устройств.
● Разработчика: связывающий API для скалы, кложура,
пайтона, руби, джава.
● Админа: 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 контрибьютера.
Общие сведения

● Open source https://github.
com/cwensel/cascading
● Лицензия Apache License 2.0.
● Коммерческая поддержка http://www.
concurrentinc.com/support/
Аналоги

●
●
●
●

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

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

●
●
●
●

Split
Merge
Group by
Join
* Для каждого кортежа или для группы кортежей.
Основные понятия: 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
● Поле может быть строкой, целым
числом или специальным значением из
предопределённого множества.
● Специальные значения нужны для
выполнения шаблонных операций.
Основные понятия: pipes

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

● Split разделение данных из одного потока
на несколько.
● Merge слияние нескольких потоков в
один.
● Join Комбинирование данных из
нескольких потоков с разными полями по
общим полям (аналог SQL join).
Основные понятия: tap

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

“сток” -- пункт назначения данных
Основные понятия: flow

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

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

sed, grep, sort, uniq и awk
Основные понятия: операции
● Function: ожидает на вход один кортеж,
возвращает ноль или больше кортежей, примеры:
parsers, marshallers.
● Filter: ожидает на вход один кортеж, возвращает
true или false (выбрасываем кортеж из потока или
нет).
● Aggregator: ожидает на вход группу кортежей,
возвращает ноль или несколько кортежей,
примеры: Average, Count, First, Last, Max,
Min, Sum.
● Buffer: ожидает на вход группу кортежей,
возвращает ноль или несколько кортежей,
получает всю группу кортежей сразу.
Как происходит
разделение на Map и Reduce
Hadoop MapReduce Job Planner
Тестирование
● Юнит-тесты для функций, фильтров,
агрегаторов и буфферов (cascading.
CascadingTestCase).
● cascading.operation.Debug -фильтр, печатает кортеж в stdout или
stderr.
● Запуск в локальном режиме.
● Пишите логи (в коде своих операций).
Debug
● В локальном режиме:
https://github.com/ScaleUnlimited/cascading.utils
final FlowRunner runner = new FlowRunner();
runner.addFlow(flow);
runner.complete();

● One node Hadoop cluster:
export HADOOP_OPTS = "-agentlib:
jdwp=transport=dt_socket,server=y,suspend=y,
address=8788"
hadoop jar your-casc.jar <параметры>
Генерация диаграмм
Deployment

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

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

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

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

cascalog
Datalog

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

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

●
●
●
●

Прародитель
2010 1 KLOC.
2013 9 KLOC.
29 контрибьютеров.
Общие сведения

● 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)) ;; предикат - операция
Пример: Word Count
Пример: Word Count
Пример: Word Count
Пример: Word Count
Проблемы cascalog’а

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

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

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

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

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

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

Más contenido relacionado

La actualidad más candente

Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. SparkTechnopark
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовMax Lapshin
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?Alexey Tokar
 
SphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricksSphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricksRoman Pavlushko
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхVasil Remeniuk
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...it-people
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)Ontico
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in RussianOleg Kachan
 
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс. "YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс. Yandex
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...Ontico
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
Technopolis.NoSQL 03 Haystack
Technopolis.NoSQL 03 HaystackTechnopolis.NoSQL 03 Haystack
Technopolis.NoSQL 03 HaystackVadim Tsesko
 
Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Ontico
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache HadoopDotNetConf
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 

La actualidad más candente (20)

Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядов
 
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?
 
SphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricksSphinxSearch Meetup - Tips&tricks
SphinxSearch Meetup - Tips&tricks
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
 
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс. "YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
"YT — новая платформа распределённых вычислений". Максим Бабенко, Яндекс.
 
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...NoSQL внутри SQL: приземленные вопросы практического применения /  Дмитрий До...
NoSQL внутри SQL: приземленные вопросы практического применения / Дмитрий До...
 
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Technopolis.NoSQL 03 Haystack
Technopolis.NoSQL 03 HaystackTechnopolis.NoSQL 03 Haystack
Technopolis.NoSQL 03 Haystack
 
Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...Машинное обучение в электронной коммерции — практика использования и подводны...
Машинное обучение в электронной коммерции — практика использования и подводны...
 
Платформа Apache Hadoop
Платформа Apache HadoopПлатформа Apache Hadoop
Платформа Apache Hadoop
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 

Destacado

Auth and association
Auth and associationAuth and association
Auth and associationlyndyv
 
connectionpool 事業概要書
connectionpool 事業概要書connectionpool 事業概要書
connectionpool 事業概要書Yu Ito
 
ηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηgiaki3
 
Signals1
Signals1Signals1
Signals1lyndyv
 
φυλλομετριτες
φυλλομετριτεςφυλλομετριτες
φυλλομετριτεςgiaki3
 
ηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηgiaki3
 
Памятники от простых до элитных г.Оренбург. ..
Памятники от простых до элитных г.Оренбург. ..Памятники от простых до элитных г.Оренбург. ..
Памятники от простых до элитных г.Оренбург. ..tominpavel
 
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
 
Alkaloids(2)
Alkaloids(2)Alkaloids(2)
Alkaloids(2)sharmin14
 

Destacado (20)

Dropwizard
DropwizardDropwizard
Dropwizard
 
Auth and association
Auth and associationAuth and association
Auth and association
 
connectionpool 事業概要書
connectionpool 事業概要書connectionpool 事業概要書
connectionpool 事業概要書
 
Tv print digital differences april 2013
Tv print digital  differences april 2013Tv print digital  differences april 2013
Tv print digital differences april 2013
 
Wvdial
WvdialWvdial
Wvdial
 
ηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχληση
 
Signals1
Signals1Signals1
Signals1
 
φυλλομετριτες
φυλλομετριτεςφυλλομετριτες
φυλλομετριτες
 
Cloud services From Calsoftlabs
Cloud services From CalsoftlabsCloud services From Calsoftlabs
Cloud services From Calsoftlabs
 
ηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχλησηηλεκτρονική παρενόχληση
ηλεκτρονική παρενόχληση
 
The Digital Blind Spot
The Digital Blind SpotThe Digital Blind Spot
The Digital Blind Spot
 
Памятники от простых до элитных г.Оренбург. ..
Памятники от простых до элитных г.Оренбург. ..Памятники от простых до элитных г.Оренбург. ..
Памятники от простых до элитных г.Оренбург. ..
 
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
 
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
 
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
 
EDGE DETECTION
EDGE DETECTIONEDGE DETECTION
EDGE DETECTION
 
Interactive voice-response-system
Interactive voice-response-systemInteractive voice-response-system
Interactive voice-response-system
 
Alkaloids(2)
Alkaloids(2)Alkaloids(2)
Alkaloids(2)
 

Similar a Hadoop > cascading -> cascalog (very short)

Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...solit
 
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
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...HappyDev-lite
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...HappyDev
 
Машины баз данных: концентрированное обозрение
Машины баз данных: концентрированное обозрениеМашины баз данных: концентрированное обозрение
Машины баз данных: концентрированное обозрениеAndrei Nikolaenko
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop Vladimir Klimontovich
 
Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Alexey Rusnak
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Alexey Zinoviev
 
2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vw2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vwИлья Трофимов
 
Илья Трофимов - машинное обучение с помощью vw
Илья Трофимов - машинное обучение с помощью vwИлья Трофимов - машинное обучение с помощью vw
Илья Трофимов - машинное обучение с помощью vwPavel Mezentsev
 
Знакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridЗнакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridMikhail Shcherbakov
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4HighLoad2009
 
Rapid Deployment of Hadoop Development Environments
Rapid Deployment of Hadoop Development EnvironmentsRapid Deployment of Hadoop Development Environments
Rapid Deployment of Hadoop Development EnvironmentsAndrei Nikolaenko
 
Технологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших ДанныхТехнологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших ДанныхAndrey Akulov
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данныхОмские ИТ-субботники
 
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest
 
Серверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBСерверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBStepan Stolyarov
 

Similar a Hadoop > cascading -> cascalog (very short) (20)

Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
 
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.
 
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
12 HappyDev-lite-2014. Иван Погудин, Анатолий Никулин. Решение задач, связан...
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
 
Машины баз данных: концентрированное обозрение
Машины баз данных: концентрированное обозрениеМашины баз данных: концентрированное обозрение
Машины баз данных: концентрированное обозрение
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
 
Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.Couchbase, что за зверь и на что способен.
Couchbase, что за зверь и на что способен.
 
Druid - Interactive Analytics At Scale
Druid - Interactive Analytics At ScaleDruid - Interactive Analytics At Scale
Druid - Interactive Analytics At Scale
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vw2012.11.06 машинное обучение с помощью vw
2012.11.06 машинное обучение с помощью vw
 
Илья Трофимов - машинное обучение с помощью vw
Илья Трофимов - машинное обучение с помощью vwИлья Трофимов - машинное обучение с помощью vw
Илья Трофимов - машинное обучение с помощью vw
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
 
Знакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridЗнакомство с In-Memory Data Grid
Знакомство с In-Memory Data Grid
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4
 
Rapid Deployment of Hadoop Development Environments
Rapid Deployment of Hadoop Development EnvironmentsRapid Deployment of Hadoop Development Environments
Rapid Deployment of Hadoop Development Environments
 
Технологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших ДанныхТехнологии и продукты Oracle для обработки и анализа Больших Данных
Технологии и продукты Oracle для обработки и анализа Больших Данных
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
 
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
 
Серверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBСерверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDB
 

Hadoop > cascading -> cascalog (very short)

  • 1. Hadoop -> Cascading -> Cascalog
  • 2. Обо мне ● Андрей Панфилов ● Java-разработчик ● Интересуюсь: BigData, ФП
  • 3. Проблематика ● $600 стоимость диска на который поместится вся музыка в мире ● 5B мобильников использовалось в 2010 ● 30B расшариваний всякой фигни в Facebook каждый месяц в 2011-м году ● 40% прогнозируемого роста данных во всём мире в год VS 5% роста ИТ-расходов во всём мире (2011 год) ● 235 терабайт данных собрано Библиотекой Конгресса США в апреле 2011-го ● 15 из 17 секторов экономики в США имеют больше данных, хранящихся на компанию, чем Библиотека Конгресса США http://bit.ly/big-data-mk-2011
  • 4. MapReduce история вопроса ● 2004: Опубликована работа “MapReduce: Simplified Data Processing on Large Clusters” (Джеффри Дин и Санжай Гемават). ● 2005: Начат проект Hadoop (Дуг Каттинг и Майк Кафарелла). ● 2005 - 2006: Hadoop развивался усилиями двух разработчиков — Каттинга и Майка Кафареллы в режиме частичной занятости, сначала в рамках проекта Nutch, затем — проекта Lucene. ● 2006: Yahoo пригласила Каттинга возглавить команду разработки (выделение Hadoop в отдельный проект). ● 2008: Yahoo запустила кластер на 10K ядер, управляемую средствами Hadoop. http://ru.wikipedia.org/wiki/Hadoop
  • 5. Map & Reduce ● Map x2 to (1 2 3 4 5) --> (2 4 6 8 10) ● Reduce "min" to (2 4 6 8 10) --> (2) http://www.byzantinereality.com/2009/2/Thoughts-on-MapReduce
  • 6. Apache Hadoop ● Java based open source framework. ● Common (утилиты), HDFS, MapReduce. ● http://en.wikipedia.org/wiki/Hadoop
  • 7. 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/
  • 9. Cascading с разных точек зрения ● Бизнеса: управление бизнес процессами для оркестрации потоков выполнения (аля BPM / BPEL). ● Системного интегратора: система интеграции гетерогенных источников данных и платформ вычисления. ● Data scientist: направленный ациклический граф подчиняющийся закону Амдала*. ● Data architect: физический план управления большими потоками данных. ● Архитектора: язык паттернов, похожий на план водопровода или проектирование принципиальных схем устройств. ● Разработчика: связывающий API для скалы, кложура, пайтона, руби, джава. ● Админа: JAR файл (лежит в Maven Repo). http://www.slideshare.net/pacoid/cascading-for-the-impatient
  • 10. *для любознательных Закон Амдала: В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента.
  • 11. История ● Крис Венсель (Chris Wensel). ● Начал разработку Cascading’а в начале 2008 (запись в блоге). ● Основал компанию Concurrent в середине 2008. ● В 2011 Concurrent получила инвестиции для дальнейшего развития Cascading’а ● 2008 20 KLOC. ● 2013 106 KLOC. ● 3 контрибьютера.
  • 12. Общие сведения ● Open source https://github. com/cwensel/cascading ● Лицензия Apache License 2.0. ● Коммерческая поддержка http://www. concurrentinc.com/support/
  • 14. Основные понятия ● Pipes / трубы (потоки данных) ● Filters / фильтры (операции над данными)
  • 15. Основные понятия Набор разных pipe’ов позволяет производить над данными следующие операции*: ● ● ● ● Split Merge Group by Join * Для каждого кортежа или для группы кортежей.
  • 16. Основные понятия: tuples Cascading оперирует кортежами (“the man sat”, 25) (“hello dolly”, 42) (“say hello”, 1) (“the woman sat”, 10)
  • 17. Основные понятия: tuples [“sentence”, “value”] (“the man sat”, 25) (“hello dolly”, 42) (“say hello”, 1) (“the woman sat”, 10)
  • 18. Основные понятия: tuples ● Аналог: строка в таблице базы данных. ● В каскадинге для кортежей есть специальный тип: cascading.tuple. Tuple ● Внутри это List<Object> elements;
  • 19. Основные понятия: fields [“sentence”, “value”] (“the man sat”, 25) (“hello dolly”, 42) (“say hello”, 1) (“the woman sat”, 10)
  • 20. Основные понятия: fields ● Определяет имя элемента кортежа. ● В каскадинге для полей есть специальный тип: cascading.tuple.Fields ● Поле может быть строкой, целым числом или специальным значением из предопределённого множества. ● Специальные значения нужны для выполнения шаблонных операций.
  • 21. Основные понятия: pipes ● Это узел в котором может что-то происходить с кортежами (в документации нет чёткого определения pipe’а). ● В каскадинге для pipe’ов есть специальный тип: cascading.pipe. Pipe
  • 22. Основные понятия: pipes Типы pipe’ов: ● Класс Pipe: нужен для создания и именования пайпа (планировщик использует имена для соединения с tap’ами). ● Подкласс SubAssembly: повторное использование сборок pipe’ов. ● Шесть основных подклассов: Each, Merge, GroupBy, Every, CoGroup, HashJoin.
  • 23. Основные понятия: pipes ● Each: операции основанные на содержимом кортежа: анализ, трансформация или фильтрация. ● Merge: слияние нескольких потоков данных в один. ● GroupBy: группирует кортежи потока данных по общим значениям указанных полей. ● Every: оперирует сгруппированными кортежами. ● CoGroup: выполняет операцию join на нескольких входных потоках данных или на самом себе (группирует). ● HashJoin: выполняет операцию “join” на нескольких входных потоках данных или на самом себе (не группирует).
  • 25. Основные понятия: pipe assembly Простая последовательность pipe’ов без разветвлений и слияний.
  • 26. Основные понятия: tuple stream Последовательность кортежей проходящая через ветвь pipe’ов или сборку (assembly).
  • 27. Паттерны работы с потоками ● Split разделение данных из одного потока на несколько. ● Merge слияние нескольких потоков в один. ● Join Комбинирование данных из нескольких потоков с разными полями по общим полям (аналог SQL join).
  • 28. Основные понятия: tap “кран” -- источник данных
  • 29. Основные понятия: sink “сток” -- пункт назначения данных
  • 30. Основные понятия: flow flow = pipe assemblies + source taps + sink taps (краны + трубы + стоки)
  • 31. Основные понятия: flow ● Важный момент: flow -- это информация о том где брать данные, как обрабатывать и куда складывать результат. ● Где и куда должны существовать в момент выполнения. ● После создания, flow нужно выполнить в одной из платформ. ● Flow можно соединять в цепочки. ● Можно запускать локально или в Hadoop.
  • 33. Основные понятия: операции ● Function: ожидает на вход один кортеж, возвращает ноль или больше кортежей, примеры: parsers, marshallers. ● Filter: ожидает на вход один кортеж, возвращает true или false (выбрасываем кортеж из потока или нет). ● Aggregator: ожидает на вход группу кортежей, возвращает ноль или несколько кортежей, примеры: Average, Count, First, Last, Max, Min, Sum. ● Buffer: ожидает на вход группу кортежей, возвращает ноль или несколько кортежей, получает всю группу кортежей сразу.
  • 34. Как происходит разделение на Map и Reduce Hadoop MapReduce Job Planner
  • 35. Тестирование ● Юнит-тесты для функций, фильтров, агрегаторов и буфферов (cascading. CascadingTestCase). ● cascading.operation.Debug -фильтр, печатает кортеж в stdout или stderr. ● Запуск в локальном режиме. ● Пишите логи (в коде своих операций).
  • 36. Debug ● В локальном режиме: https://github.com/ScaleUnlimited/cascading.utils final FlowRunner runner = new FlowRunner(); runner.addFlow(flow); runner.complete(); ● One node Hadoop cluster: export HADOOP_OPTS = "-agentlib: jdwp=transport=dt_socket,server=y,suspend=y, address=8788" hadoop jar your-casc.jar <параметры>
  • 38. Deployment Всё точно так же как если бы вы писали Hadoop MapReduce Job.
  • 39. Особенности работы с данными ● Файлы: лучше мало больших, чем много маленьких. ● S3 + много маленьких -> s3distcp.
  • 40. Ещё один шаг вперёд ● Cascading -- это высокоуровневый API. ● Меньше кода и проще проектировать сложную обработку данных (по сравнению с обычным MapReduce). ● Следующий логичный шаг -- DSL. ● Выразительный. ● Гибкий. ● Правильная идеология.
  • 44. Datalog ● Декларативный логический язык программирования. ● Синтаксически является подмножеством Пролога. ● Часто используется как язык запросов к дедуктивным базам данных (более выразительный чем SQL).
  • 45. История ● Натан Марц (Nathan Marz). ● Первый коммит в гитхабе весной 2010 (пруф). ● ● ● ● Прародитель 2010 1 KLOC. 2013 9 KLOC. 29 контрибьютеров.
  • 46. Общие сведения ● Open source https://github. com/nathanmarz/cascalog ● Лицензия Apache License 2.0. ● Коммерческая поддержка не нашёл.
  • 47. Пример (def age [ ;; [person age] ["alice" 28] ["bob" 33] ["gary" 28] ["john" 27] ["luanne" 36] ])
  • 48. Пример (?<- ;; определение и выполнение запроса (stdout) ;; куда попадает вывод [?person ?a2] ;; результат (переменные) (age ?person ?age) ;; предикат - генератор (< ?age 30) ;; предикат - фильтр (* 2 ?age :> ?a2)) ;; предикат - операция
  • 53. Проблемы cascalog’а ● Высокий порог вхождения (clojure). ● Мало документации. ● В Украине практически нет людей с опытом использования сабжа. ● Нет формальной грамматики описывающей язык запросов.
  • 54. Сообщество ● Гугл группа cascalog’а. ● Гугл-группа cascading’а. ● Как ни странно на stackoverflow.com практически ничего нет о сабжах. ● Митапы в Сан-Франциско и Лондоне.
  • 56. Развитие ● Каскалог 2.0 не будет привязан к каскадингу. ● Storm -- одна из возможных платформ.
  • 57. Когда использовать ● Данных должно быть ОЧЕНЬ много (не помещаются в память). ● Исторические данные (логи). ● Данные всё время добавляются.
  • 58. Документация ● Отличный User Guide по каскадингу. ● Замечательный туториал по каскадингу. ● Вики по каскалогу в гитхабе.