Download - Hadoop > cascading -> cascalog (very short)
![Page 1: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/1.jpg)
Hadoop -> Cascading -> Cascalog
![Page 2: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/2.jpg)
Обо мне
● Андрей Панфилов● Java-разработчик● Интересуюсь: BigData, ФП
![Page 3: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/3.jpg)
Проблематика
● $600 стоимость диска на который поместится вся музыка в мире
● 5B мобильников использовалось в 2010● 30B расшариваний всякой фигни в Facebook каждый
месяц в 2011-м году● 40% прогнозируемого роста данных во всём мире в год
VS 5% роста ИТ-расходов во всём мире (2011 год)● 235 терабайт данных собрано Библиотекой Конгресса
США в апреле 2011-го● 15 из 17 секторов экономики в США имеют больше
данных, хранящихся на компанию, чем Библиотека Конгресса США
http://bit.ly/big-data-mk-2011
![Page 4: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/4.jpg)
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
![Page 5: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/5.jpg)
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
![Page 6: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/6.jpg)
Apache Hadoop
● Java based open source framework.● Common (утилиты), HDFS, MapReduce.● http://en.wikipedia.org/wiki/Hadoop
![Page 7: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/7.jpg)
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/
![Page 8: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/8.jpg)
Cascading
![Page 9: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/9.jpg)
Cascading с разных точек зрения● Бизнеса: управление бизнес процессами для оркестрации
потоков выполнения (аля BPM / BPEL).● Системного интегратора: система интеграции гетерогенных
источников данных и платформ вычисления.● Data scientist: направленный ациклический граф
подчиняющийся закону Амдала*.● Data architect: физический план управления большими
потоками данных.● Архитектора: язык паттернов, похожий на план водопровода
или проектирование принципиальных схем устройств.● Разработчика: связывающий API для скалы, кложура,
пайтона, руби, джава.● Админа: JAR файл (лежит в Maven Repo).
http://www.slideshare.net/pacoid/cascading-for-the-impatient
![Page 10: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/10.jpg)
*для любознательных
Закон Амдала:В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента.
![Page 11: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/11.jpg)
История
● Крис Венсель (Chris Wensel).● Начал разработку Cascading’а в начале
2008 (запись в блоге).● Основал компанию Concurrent в
середине 2008.● В 2011 Concurrent получила инвестиции
для дальнейшего развития Cascading’а● 2008 20 KLOC.● 2013 106 KLOC.● 3 контрибьютера.
![Page 12: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/12.jpg)
Общие сведения
● Open source https://github.com/cwensel/cascading
● Лицензия Apache License 2.0.● Коммерческая поддержка http://www.
concurrentinc.com/support/
![Page 13: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/13.jpg)
Аналоги
● Oozie● Crunch● Apache Falcon● Cloudera Morphlines
![Page 14: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/14.jpg)
Основные понятия
● Pipes / трубы (потоки данных)● Filters / фильтры (операции над данными)
![Page 15: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/15.jpg)
Основные понятия
Набор разных pipe’ов позволяет производить над данными следующие операции*:● Split● Merge● Group by● Join
* Для каждого кортежа или для группы кортежей.
![Page 16: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/16.jpg)
Основные понятия: tuples
Cascading оперирует кортежами
(“the man sat”, 25)(“hello dolly”, 42)(“say hello”, 1)(“the woman sat”, 10)
![Page 17: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/17.jpg)
Основные понятия: tuples
[“sentence”, “value”](“the man sat”, 25)(“hello dolly”, 42)(“say hello”, 1)(“the woman sat”, 10)
![Page 18: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/18.jpg)
Основные понятия: tuples
● Аналог: строка в таблице базы данных.● В каскадинге для кортежей есть
специальный тип: cascading.tuple.Tuple
● Внутри это List<Object> elements;
![Page 19: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/19.jpg)
Основные понятия: fields
[“sentence”, “value”](“the man sat”, 25)(“hello dolly”, 42)(“say hello”, 1)(“the woman sat”, 10)
![Page 20: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/20.jpg)
Основные понятия: fields
● Определяет имя элемента кортежа.● В каскадинге для полей есть специальный
тип: cascading.tuple.Fields● Поле может быть строкой, целым
числом или специальным значением из предопределённого множества.
● Специальные значения нужны для выполнения шаблонных операций.
![Page 21: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/21.jpg)
Основные понятия: pipes
● Это узел в котором может что-то происходить с кортежами (в документации нет чёткого определения pipe’а).
● В каскадинге для pipe’ов есть специальный тип: cascading.pipe.Pipe
![Page 22: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/22.jpg)
Основные понятия: pipes
Типы pipe’ов:● Класс Pipe: нужен для создания и
именования пайпа (планировщик использует имена для соединения с tap’ами).
● Подкласс SubAssembly: повторное использование сборок pipe’ов.
● Шесть основных подклассов: Each, Merge, GroupBy, Every, CoGroup, HashJoin.
![Page 23: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/23.jpg)
Основные понятия: pipes
● Each: операции основанные на содержимом кортежа: анализ, трансформация или фильтрация.
● Merge: слияние нескольких потоков данных в один.● GroupBy: группирует кортежи потока данных по
общим значениям указанных полей.● Every: оперирует сгруппированными кортежами.● CoGroup: выполняет операцию join на нескольких
входных потоках данных или на самом себе (группирует).
● HashJoin: выполняет операцию “join” на нескольких входных потоках данных или на самом себе (не группирует).
![Page 24: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/24.jpg)
Основные понятия: pipes
![Page 25: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/25.jpg)
Основные понятия: pipe assembly
Простая последовательность pipe’ов без разветвлений и слияний.
![Page 26: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/26.jpg)
Основные понятия: tuple stream
Последовательность кортежей проходящая через ветвь pipe’ов или сборку (assembly).
![Page 27: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/27.jpg)
Паттерны работы с потоками
● Split разделение данных из одного потока на несколько.
● Merge слияние нескольких потоков в один.
● Join Комбинирование данных из нескольких потоков с разными полями по общим полям (аналог SQL join).
![Page 28: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/28.jpg)
Основные понятия: tap
“кран” -- источник данных
![Page 29: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/29.jpg)
Основные понятия: sink
“сток” -- пункт назначения данных
![Page 30: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/30.jpg)
Основные понятия: flow
flow = pipe assemblies + source taps + sink taps
(краны + трубы + стоки)
![Page 31: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/31.jpg)
Основные понятия: flow
● Важный момент: flow -- это информация о том где брать данные, как обрабатывать и куда складывать результат.
● Где и куда должны существовать в момент выполнения.
● После создания, flow нужно выполнить в одной из платформ.
● Flow можно соединять в цепочки.● Можно запускать локально или в Hadoop.
![Page 32: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/32.jpg)
Операции
аля юникс команды: sed, grep, sort, uniq и awk
![Page 33: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/33.jpg)
Основные понятия: операции● Function: ожидает на вход один кортеж,
возвращает ноль или больше кортежей, примеры: parsers, marshallers.
● Filter: ожидает на вход один кортеж, возвращает true или false (выбрасываем кортеж из потока или нет).
● Aggregator: ожидает на вход группу кортежей, возвращает ноль или несколько кортежей, примеры: Average, Count, First, Last, Max, Min, Sum.
● Buffer: ожидает на вход группу кортежей, возвращает ноль или несколько кортежей, получает всю группу кортежей сразу.
![Page 34: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/34.jpg)
Как происходит разделение на Map и Reduce
Hadoop MapReduce Job Planner
![Page 35: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/35.jpg)
Тестирование
● Юнит-тесты для функций, фильтров, агрегаторов и буфферов (cascading.CascadingTestCase).
● cascading.operation.Debug -- фильтр, печатает кортеж в stdout или stderr.
● Запуск в локальном режиме.● Пишите логи (в коде своих операций).
![Page 36: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/36.jpg)
Debug
● В локальном режиме:https://github.com/ScaleUnlimited/cascading.utilsfinal 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 <параметры>
![Page 37: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/37.jpg)
Генерация диаграмм
![Page 38: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/38.jpg)
Deployment
Всё точно так же как если бы вы писали Hadoop
MapReduce Job.
![Page 39: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/39.jpg)
Особенности работы с данными
● Файлы: лучше мало больших, чем много маленьких.
● S3 + много маленьких -> s3distcp.
![Page 40: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/40.jpg)
Ещё один шаг вперёд
● Cascading -- это высокоуровневый API.● Меньше кода и проще проектировать
сложную обработку данных (по сравнению с обычным MapReduce).
● Следующий логичный шаг -- DSL.● Выразительный.● Гибкий.● Правильная идеология.
![Page 41: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/41.jpg)
Тааадааам!
cascalog
![Page 42: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/42.jpg)
Раскрываем тайну названия
cascalog
![Page 43: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/43.jpg)
Раскрываем тайну названия
cascalog
![Page 44: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/44.jpg)
Datalog
● Декларативный логический язык программирования.
● Синтаксически является подмножеством Пролога.
● Часто используется как язык запросов к дедуктивным базам данных (более выразительный чем SQL).
![Page 45: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/45.jpg)
История
● Натан Марц (Nathan Marz).● Первый коммит в гитхабе весной 2010
(пруф).● Прародитель● 2010 1 KLOC.● 2013 9 KLOC.● 29 контрибьютеров.
![Page 46: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/46.jpg)
Общие сведения
● Open source https://github.com/nathanmarz/cascalog
● Лицензия Apache License 2.0.● Коммерческая поддержка не нашёл.
![Page 47: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/47.jpg)
Пример
(def age[;; [person age] ["alice" 28] ["bob" 33] ["gary" 28] ["john" 27] ["luanne" 36]])
![Page 48: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/48.jpg)
Пример
(?<- ;; определение и выполнение запроса(stdout) ;; куда попадает вывод[?person ?a2] ;; результат (переменные)
(age ?person ?age) ;; предикат - генератор(< ?age 30) ;; предикат - фильтр(* 2 ?age :> ?a2)) ;; предикат - операция
![Page 49: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/49.jpg)
Пример: Word Count
![Page 50: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/50.jpg)
Пример: Word Count
![Page 51: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/51.jpg)
Пример: Word Count
![Page 52: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/52.jpg)
Пример: Word Count
![Page 53: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/53.jpg)
Проблемы cascalog’а
● Высокий порог вхождения (clojure).● Мало документации.● В Украине практически нет людей с
опытом использования сабжа.● Нет формальной грамматики
описывающей язык запросов.
![Page 54: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/54.jpg)
Сообщество
● Гугл группа cascalog’а.● Гугл-группа cascading’а.● Как ни странно на stackoverflow.com
практически ничего нет о сабжах.● Митапы в Сан-Франциско и Лондоне.
![Page 55: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/55.jpg)
Кто использует cascalog
![Page 56: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/56.jpg)
Развитие
● Каскалог 2.0 не будет привязан к каскадингу.
● Storm -- одна из возможных платформ.
![Page 57: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/57.jpg)
Когда использовать
● Данных должно быть ОЧЕНЬ много (не помещаются в память).
● Исторические данные (логи).● Данные всё время добавляются.
![Page 58: Hadoop > cascading -> cascalog (very short)](https://reader033.vdocuments.net/reader033/viewer/2022060116/557ed4e9d8b42ae27f8b50f5/html5/thumbnails/58.jpg)
Документация
● Отличный User Guide по каскадингу.● Замечательный туториал по каскадингу.● Вики по каскалогу в гитхабе.