«Когда в руках молоток, всё вокруг кажется гвоздями». Эта пословица то и дело просится на язык, когда читаешь новости, в которых фигурируют Hadoop, NoSQL и другие термины, так или иначе связанные с «большими данными». Складывается впечатление, что в половине случаев применение этих технологий можно объяснить лишь модой.
Подобные сомнения — логичное следствие неоднозначности выражения «большие данные». Что значит «большие данные»? Какие данные следует считать «большими»? «Большие» — это сколько? Никто не даёт на эти вопросы однозначного ответа.
Если вдуматься, ничего удивительного тут нет. Пятьдесят лет назад и 16 килобайтов были если не большой, то по крайней мере значимой величиной, а сегодня такой объём мелковат даже для микроконтроллера. Да что там пятьдесят лет — ещё в начале двухтысячных, когда в Google работали над первыми реализациями концепций Map/Reduce и NoSQL, масштабы были совсем иными. И можно не сомневаться, что ещё через несколько лет порог, за которым данные становятся действительно «большими», отодвинется ещё дальше.
Где именно находится этот порог — совсем не праздный вопрос. И концепция Map/Reduce, на которой основан Hadoop, и NoSQL были придуманы для того, чтобы работать с данными таких размеров, перед которыми сдают более традиционные средства. С их помощью можно обойти ограничения, но это даётся не просто так. Как всякое сильнодействующее средство, они обладают массой неприятных побочных эффектов.
Map/Reduce представляет собой компромисс между трудоёмкостью разработки и лёгкостью масштабирования. Адаптировать программы для параллельной работы под управлением Map/Reduce совсем не просто. Хуже того, многие алгоритмы просто не поддаются параллелизации. Что касается жертвы, на которую идут адепты NoSQL, то она обозначена прямо в названии: им приходится отказываться от языка запросов SQL и реляционной модели данных. В теории это делает распределение информации по множеству серверов элементарной задачей. На практике всё рано или поздно кончается необходимостью вручную бороться с проблемами, которые давно (и, скорее всего, более эффективно) решены в любой реляционной СУБД.
У Map/Reduce и NoSQL достаточно минусов для того, чтобы держаться от них подальше и использовать только в тех случаях, когда все другие варианты исчерпаны. Однако дело обстоит иначе: к модным технологиям то и дело прибегают без очевидной надобности.
Недавнее исследование Microsoft Research показывает, что даже крупнейшие интернет-компании зачастую пропускают через свои кластеры столь незначительные объёмы данных, что с ними можно было бы справиться при помощи обычного настольного компьютера, а то и ноутбука. Такие масштабы явно не заслуживают мучений с Hadoop.
По сведениям Microsoft Research, кластеры Facebook редко сталкиваются с наборами данных, которые были бы крупнее 100 гигабайтов. Кроме того, в исследовании упоминаются два кластера Hadoop в Microsoft и Yahoo, перерабатывающих наборы данных, медианная величина которых не превышает 14 гигабайтов.
Это, по мнению авторов исследования, не исключение, а типичная картина. «Вопреки распространённому мнению, решать аналитические задачи (в частности те, на которых используют Hadoop) зачастую уместнее с помощью сервера, чем с помощью кластера,» — заключают они.
Действительно, что такое 14 гигабайтов? Это объём, который без всяких проблем умещается в оперативной памяти мощного компьютера. Сотня гигабайтов — это более серьёзная цифра, но всё тот же компьютер плюс быстрый твердотельный накопитель во многих случаях дадут фору Hadoop.
К тому же надо понимать, что возможности обычного компьютера, рассчитанного на обычных потребителей, — никак не предел. Ёмкость оперативной памяти современного сервера может составлять сотни гигабайтов. При этом его стоимость, скорее всего, будет ниже суммарной стоимости узлов, составляющих кластер.
Иными словами, в подавляющем большинстве случаев для анализа даже крупных наборов данных, с которыми, как правило, приходится иметь дело компаниям, вполне достаточно единственной машины — пусть и с раздутой до предела оперативной памятью и увеличенным объёмом накопителей.
Порог, который невозможно преодолеть без Hadoop, находится не так близко, как кажется.
Количество данных будет расти (аналитики ожидают, что этому поспособствует развитие систем M2M, которое вот-вот начнётся). Однако и компьютерная техника будет становиться всё мощнее и дешевле. Вряд ли информационный взрыв сумеет обогнать закон Мура.
Это совсем не плохая новость, ведь ценность «больших данных» — вовсе не в Hadoop и даже не в количестве байтов, а в аналитике всего и вся и новых подходах к бизнесу, которые она предлагает. Технологии — лишь средство, и чем они проще и доступнее, тем лучше.