Платформа Hadoop Hadoop --- это программная платформа построения распределённых приложений для массовой параллельной обработки (Massive Parallel Processing --- MPP) 1) Hadoop Distributed FileSystem (HDFS) --- распределённая файловая система, которая обеспечивает высокоскоростной доступ к данным приложения 2) Map Reduce --- программная платформа для распределённой обработки больших объёмов данных на вычислительном кластере Бурное развитие технологий Iaas и PaaS-платформ открыло новый класс высокодоступных отказоустойчивых инфраструктур, почти не ограниченных по своей вычислительной возможности, и появившийся как симбиоз Hadoop и облачных технологий в 2013 г. В 2009 г. Amazon начал поддерживать Hadoop-технологии, Google (сервис Google App Engine) --- в 2011 г., Windows Azure --- в 2011 г. Приложения, спроектированные на основе принципов таких архитектур обладают следующими достоинствами: 1) бесконечный пул ресурсов (одна из характеристик облачных платформ) 2) линейная вертикальная масштабируемость, которая будет являться сдедствием применения Map Reduce из Hadoop 3) высокий уровень абстракции при разработке на платформе Hadoop приложений для массовой параллельной обработки В 2008 г. Hadoop становится проектом верхнего уровня Apache Software. В 2010 г. известная социальная сеть Facebook официально заявила, что имеет наибольший Hadoop-кластер в мире, заявленный размер --- 21 ПБ. В 2011 г. пользователями Hadoop стали Amazon, Apple, Twitter, Yahoo!, LinkedIn и многие другие сервисы. Также в 2011 г. Apache Software Foundation представила новую версию платформы 1.0.0. По состоянию на 2012 г. Apache Hadoop включает в себя три проекта: 1) Hadoop Common --- библиотеки и сценарии управления распределённой обработкой, а также файловой системой и развёртывания инфраструктуры 2) HDFS --- распределённая файловая система, которая обеспечивает доступ к данным приложения с высокой скоростью 3) Hadoop MapReduce (предложена Google) Основные технические характеристики платформы Hadoop: 1) масштабируемость 2) устойчивость к сбоям 3) проваленные проекты можно перезапускать 4) кроссплатформенность (библиотеки Hadoop написаны на Java и могут выполняться на любой операционной системе, которая поддерживает JVM 5) автоматическое распараллеливание выполнения задач (Hadoop --- создаёт чистые абстракции для разработчиков, соответственно, у разработчиков уже нет необходимости планировать, агрегировать и контролировать результаты распределённых вычислений) 6) гибкость (появляется возможность хранить и анализировать различные типы данных) 7) эффективность (Hadoop-технологии обладают низкой стоимостью хранению, а также низкой стоимостью обработки терабайта данных) 8) низкая стоимость создания кластера (для создания Hadoop-кластера не требуется дорогое серверное аппаратное обеспечение) 9) сравнительная лёгкость адаптации 10) минимальные риски, которые связаные с некорректной работой ядра платформы 11) OpenSource-лицензирование (низкая стоимость внедрения и владения платформой Hadoop), Developer Community Экосистема платформы Hadoop +-----+ BiTools ETLTools RDBMS +---------+ |Avro |+[Hive]---[Pig]---[Scoop]----+ | | | ||Query Dataflow Data Transfer| | | | ||language | |Zookeeper| --- занимается координацией | || Data Access | | | | |+----------------------------+ +---------+ | |+--------------------------+ |Chukwa//Monitoring | ||Map Reduce Framework | | | | || DataProcessing| | | | |+--------------------------+ | | | | Cassandra | | |Inte-|+---------------++-------------+ | | |grat-||-//RelationalDB||HBase//NonRDB| | | |ion |+---------------++-------------+ | | |Serv-|+--------------------------+ | | |ices || HDFS | |Management +-----+| Data Storage| +---------+ +--------------------------+ Центральное место в экосистеме Hadoop занимает хранилище данных (Data Storage), которое поддерживает хранение как неструктурированных данных в распределённой файловой системе HDFS, так и хранение структурированных данных в нереляционной базе HBase. Фреймворк Map Reduce отвечает за планирование задач (Job Scheduling) и отвечает за выполнение распределённых вычислений (Data Processing). Инструменты Hive и Pig позволяют создавать запросы, осуществлять запросы к хранящимся на Hadoop-кластере наборам данных. Hive имеет SQL-подобный язык запросов (HiveQL) Инструмент Scoop предназначен для передачи большого количества данных, которые хранятся на кластере Hadoop. В Apache Foundation отдельными проектами, часто верхнего уровня, являются следующие компоненты этой экосистемы: 1) Integration Services 2) Management 3) Data Access 4) нереляционная БД HBase Map Reduce --- программная модель выполнения распределённых вычислений для больших объёмов данных В общем случае выделяют две фазы функционирования: 1) map (f,c) +-------------------------+ cvi |[cvi] [] [] .... [cvn]MapInput +--+----+--+--------+-----+ | | | | f() +--+----+--+--------+MapOutput cvi'|[cvi'] .... [cvn'] | +-------------------------+ На этой фазе принимается функция f и входной список cvi. Эта функция возвращает выходной список, который является результатом применения функции f к каждому элементу входного списка. 2) reduce (f,c) +----------------+ |[cvi] [] [] RInput +----------------+ f()\------- --------/Reduce v []ROutput Эта функция возвращает объект, образованный через свёртку коллекции c' через функцию f При использовании программной модели MapReduce входные данные не изменяются; разработчик кодирует то, что нужно сделать, но не как это нужно сделать 1) Google MapReduce (закрытая реализация на C++) 2) CouchDB и MongoDB (реализация для нереляционных баз данных) 3) HadoopMapReduce (открытая реализация на Java для Apache Hadoop) Обзор HadoopMapReduce HadoopMapReduce --- это набор Java-классов и исполняемых утилит для создания и обработки заданий на параллельную обработку. Основные концепции HadoopMapReduce: 1) обработка, а также вычислениия, на больших объёмах данных 2) масштабируемость 3) автоматическое распараллеливание заданий 4) работа на ненадёжном оборудовании 5) автоматическая обработка отказов выполнения заданий Этапы работы HadoopMapReduce