Введение в аналитику больших массивов данных

Определение термина «большие данные»

Показывать лекцию целиком

 

Теперь перейдем к определению термина «Большие данные». Мы сейчас уже составили некоторое представление о том, что это за область, какие вызовы она представляет. Посмотрим, как термин «Большие данные» определяется в открытых источниках. Во-первых, посмотрим русскую Википедию. Здесь мы видим, что большие данные - это серия подходов, инструментов и методов обработки структурированных и неструктурированных данных огромных объемов и значительного многообразия для получения воспринимаемых человеком результатов, эффективных в условиях непрерывного прироста, распределения по многочисленным узлам вычислительной сети, сформировавшихся в конце 2000-х годов, альтернативных традиционным системам управления базами данных. Вот такое длинное определение, оно содержит конечно же все характеристики, они все правильны, но слишком большое определение. В английской Википедии оно короче и, кстати, сейчас общепризнанно такое определение, что большие данные - это термин, обозначающий такие совокупности данных, настолько большие и сложные, что они представляют собой проблему для обработки стандартными средствами системы управления базами данных. То есть большие данные - это проблема, вот такое определение. Третье определение от Майкла Франклина - это данные, которыми дорого управлять и из которых сложно извлечь ценность, тоже определение. Определение, связанное с проблемой больших данных, его тоже нужно знать, его многие используют, но оно страдает. Оно хорошо с маркетинговой точки зрения, потому что, обозначая большие данные как проблему, которую сложно решить, и вот если вы эту проблему решили, то это уже не большие данные.

Но у вас возникла новая проблема, с большим объемом, теперь то, что вы обозначали раньше большими данными, можете постепенно переносить на все более сложную область, таким образом маркетинговый тренд поддерживать и все нормально. Но нам кажется более операциональным использовать определение, данное в российской Википедии, немножко его сократить. Во-первых, здесь мы просто говорим, что это серия подходов, инструментов и методов, направленных на обработку огромных объемов данных для того, чтобы получать результаты в условиях непрерывного роста и распределения. Вот все основные характеристики, это большие объемы данных - это непрерывный рост, распределение их по сети, это что нужно использовать инструменты, подходы и методы для получения результатов. Это определение мы возьмем за базу, и также мы, собственно, не только подходы и методы будем обозначать, но и сами большие данные тоже будем в этот термин записывать.

Следующий момент, который я считаю важным подчеркнуть, и он позволит нам глубже понять, что такое ценность, содержащаяся или извлекаемая из данных - это необходимость разделить понятия «данные», «информация» и «знания». Когда говорят о ценности, содержащейся в данных, на самом деле говорят о некоторой информации. Когда говорят о знании, о том, что мы знаем, тут тоже нужно прояснить несколько моментов. Давайте начнем по-порядку. Первое - что такое данные, как мы их будем понимать? Мы будем понимать данные как совокупность зафиксированных фактов или протоколов событий. Мы что-то пронаблюдали, записали - это у нас в цифровом виде находится. Эти факты, это еще не информация. Возвращаясь тому примеру про файл, который один терабайт, вот он у нас один терабайт лежит на диске или где-то в облаке, это информация или нет, один терабайт информации? Если вы не знаете вообще, что это за файл, что в нем содержится, для вас это не информация. Она не уменьшает вашу неопределенность относительного объекта, относительно вообще никаких объектов, ну максимум вы знаете, что объем этого файла терабайт, то есть примерно 10 байт информации у вас есть, 10 бит, размер файла. Может быть вы знаете имя этого файла, тогда у вас еще несколько байтов информации. До тех пор, пока вы не заглянули, вы не можете даже представить, что за информация там внутри. Таким образом, у вас есть данные размером 1 терабайт.

Второй пример относительности понятия информации - то, что, например, у вас есть один бит, один бит данных: нолик или единичка. Жена вернулась из магазина или не вернулась - это всего два состояния у этой информации, но в более общем контексте вы можете гораздо больше понять из этого события, из этого нолика и единички, вот она вернулась из магазина, значит это такая информация, не вернулась — другая. Ее можно развернуть в гораздо больший объем информации. То есть, когда мы говорим об информации, мы говорим обязательно о том субъекте, который эту информацию воспринимает. Именно для него она возникает в объеме. Поэтому мы здесь проводим параллели между структурированной и неструктурированной информацией. Файл размером в 1 терабайт - это еще не терабайт информации.

Еще более сложный вопрос, когда мы говорим о знаниях. Под знанием мы будем понимать те сведения, которые позволяют действовать с прогнозируемым результатом. Возникает проблема с тем, что у нас есть некоторый объем данных, мы имеем некоторую метаинформацию об этом объеме, что, например, в этом объеме записана информация об олимпиаде в Сочи, какие-то видеозаписи каких-то игр. Вот у нас уже представление, что есть объект - олимпиада в Сочи, и у нас о нем несколько файлов - одни видео, другие аудиозаписи и так далее. Но основной целью анализа больших данных является извлечение знаний из этих данных - это самая ценность, которая позволяет нам прогнозировать результат, которая позволяет на основе извлеченной информации понимать, а что делать дальше, что нам предпринимать следующим шагом. Именно этой цели служат методы извлечения закономерностей из данных, о которых мы поговорим попозже.

Собственно, мы должны в методах анализа больших данных переходить от данных к той автоматической реакции на поступающие новые данные, то есть знания нам позволяют прогнозировать результаты наших будущих действий, и мы хотели бы в идеале научиться автоматически действовать. У нас, допустим, есть объем какой-то информации, мы извлекли из них знания, как эта информация устроена, и при поступлении новых объектов информации мы уже знаем, как действовать.

Например, есть так такое средство - GROK Solutions, программа, которая позволяет по потоковым данным принимать решение автоматически - это тоже одно из решений в больших данных. Типичные задачи в этой области - это сообщать о выявленных отклонениях новых данных, то есть у нас есть какой-то поток, мы уже на начале его обучились, и теперь в каждый новый момент времени можем определить - эти данные отличаются от предыдущей закономерности, входят они или не входят в нее. Можем прогнозировать финансовое состояние, предлагать и принимать новые решения. Примерно такие задачи решаются в этой области, но более подробно о задачах мы поговорим в следующих лекциях.

Следующим моментом хотелось бы обозначить источники данных — это, как мы выяснили, то, что позволяет большим данным быть, и эти источники данных проявляются в коммуникациях двух типов - коммуникации компьютер-компьютер и компьютер-человек. Когда у нас идет коммуникация компьютер-компьютер или то, что сейчас компания Cisco объявляет как один из больших трендов - Интернет вещей, когда у нас все вещи будут друг с другом общаться, по некоторым протоколам передавать информацию. Здесь возникнет тоже определенный объем данных, которые нужно каким-то образом обрабатывать, извлекать из них закономерности. На картинке я привел кадр из выпуска новостей - китайские утюги прослушивают, шпионят за нами. Тоже интересный момент - вся бытовая техника все более интеллектуализируется, имеет какие-то свои датчики, сенсоры, получает эту информацию, и тоже нужно понимать, как эту информацию использовать для пользы человеку.

Следующий момент, тоже интересный - то, что объем создаваемой информации и объем сохраняемой информации - здесь обозначился разрыв, произошел где-то в 2007 году, и мы видим, что возможности генерировать информацию уже превышают возможности ее сохранять. Это тоже вызов для больших данных. Нам нужно из того потока, который генерируется, успевать отбирать те данные, которые сохранить. Но, поскольку мы большие данные в частности обозначаем как проблему, вот еще одна проблема, связанная с ними - это проблема перемещения данных, это тоже очень важная характеристика больших данных. В том случае, когда мы уже собрали определенный большой объем, у нас возникает проблема перемещения, то есть мы, допустим, в такой модели - у нас есть установка, которая записывает 80 терабайт в день - это такой приличный веб-сервис с пропускной способностью сети один гигабайт в секунду. Примерно за день там 84000 секунд - это примерно 80 терабайт в день, то есть полностью забив пропускную способность канала мы используем ее для того, чтобы просто записывать данные. Но однажды, записав данные, мы захотим еще их потом использовать, обрабатывать. Для этого нам потребуется какой-то другой канал, потому что этот канал занят у нас записью, нам нужен канал на чтение. А если мы хотим не только за один день информацию извлечь, взять, то нам потребуется гораздо более широкий канал. Если мы хотим за год эту информацию проанализировать, то нам нужно в 365 раз увеличить пропускную способность. Понятно, что это какие-то очень огромные затраты на сетевые технологии. Поэтому возникла проблема обработки данных, и как она может решаться? Она может решаться теме мощностями, которые используются для записи, та установка, которая у нас стоит, она хранит данные, у нее есть какие-то вычислительные мощности, чтобы хранить, и вот если эту установку разбалансировать, скажем, на 70 процентов использовать ее для записи, 30 процентов использовать для анализа, или в другом соотношении, то можно предварительный анализ этих данных производить на том месте, где информация сохранена.

Таким образом, мы переходим к принципу MapReduce, который был объявлен в компании Google в 2004 году, где-то в 2003 году они у себя в компании все это тестировали и в 2004 они выпустили статью, Джеффри Дин и Сенджей Гемават выпустили статью о MapReduce - это такая вычислительная модель, которая позволяет использовать вычислительные мощности там, где информация сохранена. Почему называется MapReduce? Потому что здесь два шага вычислений: есть шаг Map - это близко к функциональному программированию. На этом шаге у нас производится: у нас данные, допустим, лежат где-то в распределенной системе, где-то на кластере. И вот на шаге Map эти данные распределяются и начинают обрабатываться процедуры, которые привязаны к шагу Map. Например, в этой задаче нам нужно посчитать количество фигурок в общем потоке данных. Вот у нас общий поток, здесь мы видим сколько-то треугольничков разных цветов, квадратиков, шестиугольников - эти данные у нас распределились на два вычислительных узла, и шаг Map - он вычисляет количество этих фигурок, попавших на определенный вычислительный узел. У нас каким-то образом вполне случайно распределились эти данные на вычислительные узлы, и здесь на каждом из них выполняется этот шаг Map. Здесь мы почитываем, что треугольничков у нас два попало оранжевых, мы записываем цифру 2, это делается на шаге Map. На шаге Reduce производится сборка этих данных, то есть шаг Map выполняется у нас на отдельных вычислительных узлах, потом эти вычисленные данные поступают у нас на совокупность узлов, на которых выполняется шаг Reduce. Таким образом, мы используем те вычислительные мощности, где были эти данные сохранены. Этот принцип - использование тех мощностей, где данные сохранены, называется принципом локальности. Вот то, что необходимо знать про MapReduce на данный момент.

Следующая технология Hadoop - наиболее популярная из технологий, которая реализует принцип MapReduce, но здесь нужно составить более целостное представление. Hadoop - это не только система хранения файлов, распределенных по сети, это еще и набор утилит и библиотек, которые реализуют MapReduce, различные другие сервисные функции, системы хранения файлов, доступа к ним, распределение задач между кластерами - все это реализуется в рамках технологии Hadoop. Она сейчас наиболее популярна для решения задач больших данных. Крупнейший поставщик Cloudera, который поставляет как коммерческую версию Hadoop, так и услуги хостинга, то есть можно у них заказывать хранение данных, там их собирать, их мощностями их обрабатывать. Но Hadoop не единственная технология, которая реализует MapReduce, есть, например, новая SQL база данных Cassandra, есть аналитическая система Greenplum - все они реализуют MapReduce, есть множество, можно в Википедию зайти почитать, сколько существует технологий реализации MapReduce.

Вернуться к учебному плану