1 / 68

Развитие среды разработки Hadoop

Развитие среды разработки Hadoop. Hbase / BigTable SQL on Hadoop/Impala Некоторые типичные задачи больших данных Spark / Shark Проблемы больших данных. HBase: Обзор. HBase – распределенная система хранения данных ориентированная на доступ к данным как к столбцам таблицы (поверх HDFS )

morela
Download Presentation

Развитие среды разработки Hadoop

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Развитие среды разработкиHadoop • Hbase/BigTable • SQL on Hadoop/Impala • Некоторые типичные задачи больших данных • Spark/Shark • Проблемы больших данных

  2. HBase: Обзор • HBase – распределенная система хранения данных ориентированная на доступ к данным как к столбцам таблицы (поверх HDFS) • HBase - Apache проект с открытым кодом, цель которого – предоставление удобного доступа к данным для вычислений в среде Hadoop • Данные логически объединены в таблицы, строки и столбцы

  3. HBase: Часть «экосистемы» Hadoop HBase построена на основе HDFS HBase файлы хранятся в HDFS

  4. Сравнение HBase и HDFS • Обе являются распределенными системами, которые легко расширяются до тысяч узлов • HDFSis хороша для пакетнойобработки (полное чтение больших файлов) • Не удобна для поиска конкретной записи • Не удобна для добавления небольших объемов данных • Не поддерживает обновления

  5. Сравнение целей разработки HBase и HDFS • HBaseразработана для разрешения указанных неудобств • Быстрый поиск конкретной записи • Поддержка вставки записей • Поддержка обновлений (удаление/вставка, не замещение на том же месте) • Hbase обновления выполняются путем создания новой версии записи

  6. Модель данных HBase • HBase поcтроена на основе модели Bigtable (от Google) – пара <ключ>:<значение> • Таблицы отсортированы по строкам (ключам) • Схема таблицы определяет семейства столбцов. • Каждое семейство состоит из произвольного количества столбцов • Каждый столбец может иметь произвольное количество «версий» • Хранятся только реальные значения столбцов, NULL не хранятся. • Столбцы семейства отсортированы и хранятся вместе • Значение представляет из себя массив байтов, byte[] • (Строка,Семейство:Cтолбец, Версия) <Значение>

  7. Пример

  8. Еще о семействах столбцов • Различные множества столбцов могут иметь различные свойства и тип доступа • Для каждого семейства можно конфигурировать • Тип компресии (нет, gzip, LZO) • Стратегию сохранения версий • Кэш-приоритет • Семейства столбцов хранятся отдельно на диске: доступ к одному семейству не требует ввода-вывода других • Каждое семейство столбцовHTableразделяется (горизонтально) на регионы по значениям ключа. В определенном смысле регионы являются аналогом HDFS блоков

  9. Создание таблицы Таблица “people” создается с 3 семействами столбцов: “personal”, “contactinfo”, “creditcard” Configuration conf = HBaseConfiguration.create(); HBaseAdmin admin = new HBaseAdmin(conf); HTableDescriptortableDescriptor =newHTableDescriptor(TableName.valueOf("people")); tableDescriptor.addFamily(newHColumnDescriptor("personal")); tableDescriptor.addFamily(newHColumnDescriptor("contactinfo")); tableDescriptor.addFamily(newHColumnDescriptor("creditcard")); admin.createTable(tableDescriptor);

  10. Добавление данных Configuration conf = HBaseConfiguration.create(); HTabletable = newHTable(conf, "people"); Put put = new Put(Bytes.toBytes("doe-john-m-12345")); put.add(Bytes.toBytes("personal"), Bytes.toBytes("givenName"), Bytes.toBytes("John")); put.add(Bytes.toBytes("personal"), Bytes.toBytes("mi"), Bytes.toBytes("M")); put.add(Bytes.toBytes("personal"), Bytes.toBytes("surname"), Bytes.toBytes("Doe")); put.add(Bytes.toBytes("contactinfo"), Bytes.toBytes("email"), Bytes.toBytes("john.m.doe@gmail.com")); table.put(put); table.flushCommits(); table.close();

  11. Доступ к данным Get get = new Get(Bytes.toBytes("doe-john-m-12345")); get.addFamily(Bytes.toBytes("personal")); get.setMaxVersions(3); результатрезультат= table.get(get); Scan scan = new Scan(Bytes.toBytes("smith-")); scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("givenName")); scan.addColumn(Bytes.toBytes("contactinfo"), Bytes.toBytes("email")); scan.setFilter(newPageFilter(25)); ResultScannerscanner = table.getScanner(scan); for(результатрезультат: scanner) { // ... }

  12. Две основных части HBase • Мастер • Контролирует серверы регионов • Балансирует загрузку для регионов • Направляет клиента на нужный сервер региона • Может иметь резервную копию • Сервера регионов - роботы • Обслуживают запросы клиентов (чтение/запись/сканирование) • Посылают сигналы готовности(HeartBeat) Мастеру • Обеспечивают масштабируемость регионов

  13. Общий вид архитектуры HBase

  14. ZooKeeper • HBase зависит отZooKeeper – ПО для конфигурации и управления кластером • По умолчанию HBase управляетZooKeeper • т.е. стартует и останавливаетZooKeeper • HMasterиHRegionServersрегистрируются в сервисахZooKeeper

  15. ZooKeeper • Apache ZooKeeper это программный проект Apache Software Foundation , обеспечивая открытым исходным кодом распределенной службы настройки, службы синхронизации и именования реестра для крупных распределенных систем . ZooKeeper был суб проект Hadoop , но теперь проект верхнего уровня в своем собственном праве. • Архитектура зоопарка поддерживает высокую доступность через избыточных услуг. Таким образом, клиенты могут задать еще один мастер зоопарка, если первый не отвечает. Боец узлы хранят свои данные в иерархическом пространстве имен, так же, как в файловой системе или TRIE DataStructure. Клиенты могут читать и писать из / в узлах и таким образом, имеют общую службу конфигурации. Обновления вполне упорядочено . • Apache ZooKeeper is a software project of the Apache Software Foundation, providing an open source distributed configuration service, synchronization service, and naming registry for large distributed systems.ZooKeeper was a sub project of Hadoop but is now a top-level project in its own right. • ZooKeeper'sarchitecture supports high availability through redundant services. The clients can thus ask another ZooKeeper master if the first fails to answer. ZooKeeper nodes store their data in a hierarchical name space, much like a file system or a triedatastructure. Clients can чтениеand записьfrom/to the nodes and in this way have a shared configuration service. Updates are totally ordered.

  16. HBase: Соединения • HBase не поддерживает соединения(joins) • Необходимо программировать на уровне приложения

  17. HBase vs. HDFS

  18. Когда использовать HBase • Необходим произвольный доступ для чтения и/или записи • Требуется большое количество (простых) операций в секунду над записями больших файлов ( порядка TB) • Тип доступа простой и заранее определен (поиск по ключу, вставка/удаление/обновление отдельной записи, чтение записей с ключом в заданном интервале)

  19. Cloudera Impala • Cloudera - американская компания, разработчик ПО, выпускающая коммерческую версию программной среды Apache Hadoop • Компания была основана в октябре 2008 года в Бёрлингейме (штат Калифорния) со стартовым капиталом $5 млн, основной целью бизнеса выбрана коммерциализация проекта Hadoop • К середине 2013 года за пять раундов инвестиций компания получила в общей сумме $141 млн, а в очередном раунде в марте 2014 года компания привлекла ещё $900 млн., в том числе $740 млн от Intel, при оценке бизнеса Cloudera приблизительно в $4 млрд., при этом компания Intel отказалась от развития созданного годом ранее собственного дистрибутива Hadoop в пользу продвижения решений от Cloudera

  20. Impala • Современный инструмент обработки SQL запросов (с открытым кодом). • Заменяет MapReduce, который • Ориентирован на пакетную обработку • Требует много времени, потому что записывает промежуточные результаты на диск • Рассчитан больше на разработчиков, чем на рядовых пользователей • Как насчет Hive? • Также ориентирован на пакетную обработку • Не рассчитан на работу в реальном времени, на параллельное исполнение нескольких работ

  21. Impala • Impala интегрирована с HDFS и Hbase, не требуя перемещения данных или преобразования. • Используется аналитиками и исследователями данных (data scientist) для работы с данными хранимыми в форматах Hadoop с привлечением SQL и систем (автоматичести) генерирующих SQL запросы, когда система построена в терминологии бизнес объектов • С начала 2013 года объявлена поддержка столбцового формата Parquet • С декабря 2013 Amazon объявил о поддержке Impala для AWS (Amazon Web Service) • Использует SQL синтакс типа HiveQL

  22. Impala • Общецелевой инструмент обработки SQLзапросов. • Обрабатывает достаточно сложные аналитические запросы • Хорошо масштабируется • Обрабатывает работы в диапазоне от милли-секунд до нескольких часов • Тысячи параллельно выполняемых работ • Работает напрямую с Hadoop? • Может читать различные форматы файлов • Использует тот же кластер

  23. Impala • Высокая производительность. • Реальный параллелизм (MPP) обработки запросов • C++ вместо Java • Генерация машинного кода во время исполнения (LLVM) • Новая исполняющая система (не MapReduce) • Полностью открытый код • Apache License 2.0 http://github.com/cloudera/impala

  24. SQL • SQL-92 без коррелированных под-запросов • ПодобенHiveQL • ORDER требуетLIMIT (в разработке) • Нет сложных типов данных (в разработке) • Другие удобства • • INSERT INTO SELECT • • CREATE TABLE AS SELECT • • LOAD INTO • UDF, UDAF (C++ иJava) • JOINs должны умещаться в памяти исполняющих узлов • Постоянно добавляются новые (недостающие) возможности языка SQL

  25. Некоторые типичные задачи больших данных • Логистическая регрессия • Метод K-средних • Машинное обучение

  26. Логистическая регрессия ПустьX – вектор независимых переменных, Y – т.наз. классификатор, предположим P(Y|X) – вероятность события, классифицируемого Y • W = (W1, W2, … Wn) – вектор параметров, X=(X1, X2, …, Xn), WX – скалярное произведение • Логистическая функция (сигмоид):

  27. Логистическая регрессия, пример • Выборка – пациенты различного возраста (независимая переменная) • Событие - инфаркт (Y, 1 или0, зависимая переменная) • Линейная функция плохо оценивает вероятность инфаркта, сигмоид – гораздо лучше

  28. Логистическая регрессия • Логистическая регрессия исследует условное распределение P(y|x) • Пустьpy(x;w) – наша оценка P(y|x), гдеw– вектор настраиваемых параметров • Предположим, имеется 2 класса, y = 0 и y = 1 • Это эквивалентно • Т.е. логарифм «шансов» попадания в класс 1 является линейной функцией отx • Как подобратьW?

  29. Построение обучающего алгоритма • Функция правдоподобия определяется «обучающей выборкой» с соответствующими значениями классификатора. Параметры W определяются путем максимизации функции правдоподобия • гдеw = <w0,w1 ,…,wn> - вектор оцениваемых параметров (модели), yl– наблюдаемое значение в l-том примере обучения, и xl– значения независимых переменных в l-том примере обучения

  30. Построение обучающего алгоритма • Максимизация функции правдоподобия эквивалентна максимизации ее логарифма: • Обозначим это как l(W), что может быть переписано как • Заметим, здесь будет использоваться факт, что Y может принимать только значения 0 или 1, поэтому только одно слагаемое под суммойбудет ненулевым для любого конкретного yl

  31. Максимизацияфункции правдоподобия методом градиентного спуска • Не существует явного решения задачи максимизации (логарифма) функции правдоподобия l(w) поw. Возможный способ решения – использование градиентных методов • i-тая компонента вектора градиента имеет вид

  32. Максимизация функции правдоподобия методом градиентного спуска • Можно использовать простой метод градиентного спуска/подъема.для нахождение приближенного значения для вектора w. Начиная с произвольной начальной точки (например, нулевой) будем итерационно двигаться в направлении градиента с постоянным (или стремящимся к нулю шагом) • Или

  33. Метод градиентного спуска

  34. Метод Ньютона • Матрица вторых производных = () = *C*, где С – диагональная матрица • Метод Ньютона • Сходится с квадратичной скоростью в окрестности максимума

  35. Метод Ньютона

  36. Логистическая регрессия, итоги • Изучает распределение условной вероятности P(y|x) • Методы локального поиска. • Начинаем с начального вектора параметров • Максимизируем целевую фукцию итерационным методом • Целевая фукция - логарифм функции правдоподобия l(w). После оценки параметров по обучающей выборке, можно оценить условную вероятностьP(y|x) отнесения (нового) вектора х к классам 1/0 • Причем тут большие данные?

  37. Метод K-средних • k-means (метод k-средних) - наиболее популярный метод кластеризации • Задача - минимизировать суммарное квадратичное отклонение точек кластеров от центров этих кластеров • Алгоритм Штейнгауза/Ллойда • Инициализация. Выбираются K начальных точек – центроидов (случайно, или погружением точек в минимальный куб и размещением начальных точек по его диагонали) • Итерация. Точки разбиваются на кластеры приданием каждой ближайшему центроиду, центроиды пересчитываются как центры кластеров • Итерации повторяются до тех пор пока ни один центроид не изменится

  38. Метод K-средних, пример • Начальное множество точек

  39. Метод K-средних, пример • Выбрать начальные центроиды произвольным образом

  40. Метод K-средних, пример • Отнести точки к ближайшему центроиду

  41. Метод K-средних, пример • Пересчитать центроиды в полученных кластерах

  42. Метод K-средних, пример • Переназначить точки новым центроидам

  43. Метод K-средних, пример • Пересчитать центроиды в полученных кластерах

  44. Метод K-средних, пример • Переназначить точки новым центроидам

  45. Метод K-средних, пример • Пересчитать центроиды в полученных кластерах

  46. Метод K-средних, пример • Переназначить точки новым центроидам • Нет изменений – конец алгоритма

  47. Метод K-средних используя SQL • Вычисление расстояний INSERT INTO YD SELECT i, j,sum((YV.val-C.val)**2) FROM YV, C WHERE YV.l= C.l GROUP BY i, j; • Нахождение ближайшего центроида INSERT INTO YNN SELECT YD.i, YD.j FROM YD, (SELECT i, min(distance) AS mindist FROM YD GROUP BY i)YMIND WHERE D.i = YMIND.i and YD.distance= YMIND.mindist; • Обновление центроидов INSERT INTO W SELECT j,count(*) FROM YNN GROUP BY j; UPDATE W SET w = w/model.n; INSERT INTO C SELECT l, j, avg(Y V.val) FROM YV, YNN WHERE YV.i= YNN.iGROUP BY l, j; INSERT INTO R SELECT C.l, C.j,avg( (YV.val− C.val) ∗ ∗2) FROM C, YV, YNN WHERE YV.i= YNN.i and YV.l= C.l and YNN.j= C.j GROUP BY C.l, C.j; • Может быть очень медленным из-за большого количества создания и обновления больших таблиц

  48. Машинное обучение • Подраздел искусственного интеллекта, изучающий методы построения моделей, способных обучаться, и алгоритмов для их построения и обучения. Обучение по прецедентам, или индуктивное обучение, основано на выявлении закономерностей в эмпирических данных. • Имеется множество объектов (ситуаций) и множество возможных ответов (откликов, реакций). Существует некоторая зависимость между ответами и объектами, но она неизвестна. Известна только конечная совокупность прецедентов — пар «объект, ответ», называемая обучающей выборкой. На основе этих данных требуется восстановить зависимость, то есть построить алгоритм, способный для любого объекта выдать достаточно точный ответ. Для измерения точности ответов определённым образом вводится функционал качества/потерь • Некоторые классические задачи, решаемые с помощью машинного обучения • Классификация, как правило, выполняется с помощью обучения с учителем на этапе собственно обучения. • Кластеризация, как правило, выполняется с помощью обучения без учителя • Для эффективной работы с большими обучающими выборками требуется специальный инструмент, традиционные РБД и SQL не подходят

  49. Что такое Spark? • Быстрая вычислительная система на кластере совместимая с Apache Hadoop • Улучшает производтельость путем: • Конструкций для работы в опер.памяти • Общего графа вычислений • Удобство использования: • Богатый API для Scala, Java, Python • Интерактивная среда (shell) До 100×быстрее (2-10× с диском) Часто код короче 5×

  50. Почему новая модель программирования? • MapReduceзначительно упростил анализ больших данных (для определенных типов приложений) • Но, по мере того, как он приобрел популярность, пользователи захотели большего: • Более сложную (многошаговую) аналитику • Произвольные запросы в интерактивном режиме • Обработки больших потоков данных в режиме реального времени • Все 3 типа требуют быстрого доступа к общим данным между параллельными работами

More Related