Всем известна мальтузианская ловушка – глобальная критическая ситуация, в которой рост населения превышает темп развития производства. При условии, что большого прорыва в развитии производства не произойдет, увеличение количества сырья возможно только за счет расширения пространства. При отсутствии планирования семьи рост численности населения Земли останется прежним. В результате мировое население быстро достигнет потолка. Продовольственные кризисы, войны, голод, болезни и другие катастрофы сократили численность населения. А промышленная революция, прогресс сельского хозяйства, науки и техники смягчили проблему. Но сегодня нечто подобное появилось в виртуальном мире.
«Ловушку Мальтуса» в мире массивов данных можно описать следующим образом:
Население растет в арифметической прогрессии, данные – в геометрической.
Количество данных увеличивается линейно, а количество вычислений – нелинейно.
Население развитых стран растет медленно. Индекс некоторых из них уходит в минус. Но данные всегда растут с высокой скоростью. Любое человеческое действие порождает данные. Пока вы размышляете над тем, что стоит записать, бесчисленные данные создаются «из ничего».
Многие веб-сайты электронной коммерции поначалу не заботились о расположении данных. Они ограничивались проведением операций. Например, если пользователь закрывал заказ, система удаляла его и не сохраняла данные о пользователе. Позже выяснилось, что запись транзакций тоже имеет коммерческую ценность. Она может использоваться для анализа пользовательских предпочтений, возможностей, сценариев поведения и т. д. Теперь каждое действие записывается, и количество данных постоянно умножается.
Хранение данных всегда было проблемой. По данным исследовательской фирмы Forrester, каждый смартфон генерирует в среднем 1Г данных в день. Количество пользователей смартфонов в мире превышает 2 миллиарда, т. е. каждый день создается более 2 миллиардов гигабайт данных. Для хранения этой информации в день потребуется 2 миллиона обычных жестких дисков объемом 1 ТБ (1024 ГБ). А за год уйдет около 800 миллионов. Это значительно превышает возможности мировых производителей жестких дисков.
Еще более пугающим является то, что основным источником данных является не человек. В 2014 году компания по обеспечению безопасности и распространению контента Incapsula опубликовала статистику: 56 % страниц были просмотрены роботами. Другими словами, основные пользователи Интернета – не люди. Большая часть кликов генерируется машинами.
Данные Incapsula основаны на показателях с 20 000 веб-сайтов, на которые приходится как минимум 10 посещений. Если на каждое посещение тратится около 15 минут, то общее время соответствует 90 дням.
Больше половины страниц открывают поисковые роботы, которые индексируют сайты, чтобы люди могли быстро найти необходимый контент. Baidu и Google используют этот метод для структурирования информации по всему миру. Кроме того, больше половины роботов не преследуют полезных целей. Это пираты, спам, инструменты взлома и т. д. Это темная сторона Интернета и ее доля постоянно растет. Эта статистика касается только интернет-браузера. Но с развитием Интернета вещей и распространением информации все аппаратные средства, имеющие доступ к сети, порождают данные и общаются друг с другом. Микросхема определения местоположения отправляет данные на сервер. Камеры, расположенные на улицах города, отправляют информацию в центр управления. Домашняя техника, такая как телевизор, холодильник и др., собирает данные, даже пока вы спите… Мир находится в океане данных.
Количество данных увеличивается линейно, а количество вычислений – нелинейно. Данные должны обрабатываться, чтобы быть полезными. Но по мере увеличения объема данных количество вычислений будет требовать все больших мощностей. Например, число клеток в Го в пять раз больше, чем в обычных шахматах. А расчет ходов в сотни миллионов раз сложнее. Даже если сортировать списки покупок и результаты поиска в приложениях электронной коммерции и поисковиках, количество вычислений, необходимых для эффективной работы, будет увеличиваться по крутой кривой.
Чтобы освободить данные из «Ловушки Мальтуса», нужно сделать три вещи. Первое – обрабатывать большое количество параллельных данных. Второе – хранить нужные данные и удалять ненужные. Третье – использовать накопленные данные. Сосредоточимся на первом.
Инновационной технологией обработки данных являются параллельные вычисления, или распределенные вычисления. Огромные задачи разбиваются на мелкие и равномерно распределяются по компьютерам. Результаты по отдельным задачам суммируются в итоговый результат. Hadoop и Spark – яркие представители технологии. MapReduce от Hadoop (модель программирования параллельных операций для массивов данных) разбивает одну задачу и отправляет мелкие карты задач по нескольким вычислительным узлам. Hadoop перемещает данные между вычислительными узлами и настраивает баланс задач для каждого узла. Это значительно сокращает время решения задачи и освобождает от необходимости использования дорогостоящих суперкомпьютеров благодаря объединению мощностей серверов. Эта технология впервые проявила себя в веб-поиске и быстро стала платформой распределенных вычислений. Технологию Spark можно рассматривать как оптимизированную версию Hadoop. Она сохраняет подзадачи в памяти таким образом, чтобы компьютеру не требовалось часто прибегать к памяти хранилища, и тем самым увеличивает скорость операции. Оптимизация основана на повышении аппаратной производительности, базовой или пакетной обработке данных.
Пакетная обработка – модернизация инструментов старой эпохи. До информационного взрыва люди обрабатывали данные и хранили их для анализа. Эффективный анализ статических данных основывался на пакетной обработке. Поток данных новой эры заставляет нас ускорять процесс. Необходимо провести анализ и вынести суждение сразу же после события, чтобы добиться эффективного результата – получить данные о потоке информации, состоянии работы сетки и т. д. Пакетная технология не предназначена для решения проблем с потоком данных и может использоваться только для управления.
Появление и распространение торрентов неизбежно потребовало оптимизации технологий под «поток», который стал последним вызовом и инновацией в области данных. «Расчет потока» – это не конкретная технология, а общий термин для отношений и методов.
Не все сценарии приложений требуют вычислений в реальном времени. Но все больше предприятий начинают зависеть от этого. В идеале полученные данные должны обрабатываться немедленно. Например, при покупке услуги с помощью мобильного приложения оплата должна быть произведена без ожидания. Портреты пользователей новостных порталов, статистика веб-сайтов электронной коммерции тоже должны анализироваться вовремя. Машина должна дать рекомендации и прогнозы сразу же вместо того, чтобы сначала сохранять данные о пользователях, а анализировать их позднее. Но с вычислениями в реальном времени связано много трудностей – агрегация данных, связь, расчеты и т. д.
Как Hadoop, так и Spark являются предшественниками «потоковых вычислений». Но и они далеки от идеала, который способен удовлетворить спрос. В 2014 году Син Бо, профессор Университета Карнеги-Меллона и председатель программы ICML2014, отметил, что ресурсы платформы обработки данных тратятся на кластерную связь. Даже для лучшей платформы время вычислений составляет всего 20 %, а время связи – 80 %. Например, время связи Hadoop составляет 90 %.
«Потоковый компьютер» стимулирует развитие интеллекта. В конце концов, способности интеллекта измеряются временем. Капающая вода тоже может отшлифовать камень. Но если время задачи не ограничено, то не имеет значения, разумен ли субъект. Люди воспользуются интеллектом и найдут способ отшлифовать камень быстро с помощью инструментов. «Потоковый компьютер» пришел на смену традициям прошлой эпохи. Но по-прежнему долго работает. На сегодняшний день множество ученых проводят исследования по усовершенствованию архитектуры аппаратного обеспечения и оптимизации алгоритмов. В этой книге мы не будем рассматривать подробности.
Для того чтобы выбраться из «Ловушки Мальтуса» мы должны сделать еще две вещи – решить вопрос с хранением и использованием данных. Если они будут обрабатываться и анализироваться немедленно, то большинство из них хранить не придется. Результат уже получен. Например, система работает исправно. А для тех данных, которые нужно сохранить, разработаны многочисленные инструменты. Типичный метод оптимизации объема – сжатие. Его использует большинство пользователей ПК. Это алгоритмический инструмент, который перекодирует данные, получает закодированные данные в сжатом виде и декодирует «ключи» для восстановления. Продолжают совершенствоваться форматы файлов, таких как видео. Они становятся меньше по объему, но сохраняют четкость изображения. Если люди загружают одни и те же файлы на облачный диск, система хранит только две резервные копии. Остальные файлы становятся виртуальными и указывают на копии. Это экономит деньги и пространство.