Spark или Hadoop - Какая платформа для Big Data лучше?
Один из наиболее часто встречающихся вопросов относительно Big Data заключается в следующем: что лучше использовать, Hadoop или Spark, в качестве платформы больших данных? Spark обогнал Hadoop как наиболее активный проект Big Data с открытым исходным кодом. Хотя они не являются непосредственно сопоставимыми продуктами, они оба имеют одно и то же применение.
Чтобы вы могли ответить на вопрос, что лучше, Spark или Hadoop, мы опишем существенные различия и сходства каждого из них, понятные даже тем, у кого нет большого опыта в ИТ.
Hadoop и Spark являются средами больших данных - они предоставляют некоторые из самых популярных инструментов, используемых для выполнения распространенных задач, связанных с большими данными.
В течение многих лет Hadoop был ведущей платформой Big Data с открытым исходным кодом, но в последнее время более новый и продвинутый Spark стал более популярным из двух инструментов Apache APA - 3,97% Software Foundation.
Однако они не выполняют одни и те же задачи, и они не являются взаимоисключающими, поскольку они могут работать вместе. Хотя Spark, как сообщается, работает в 100 раз быстрее, чем Hadoop, в определенных обстоятельствах он не предоставляет свою собственную систему распределенного хранения.
Распределенное хранилище является основополагающим для многих современных проектов больших данных, поскольку позволяет хранить огромные многопетабайтные наборы данных на почти бесконечном количестве жестких дисков повседневного компьютера, а не задействовать чрезвычайно дорогостоящее специальное оборудование, которое будет хранить все это на одном устройстве. Эти системы являются масштабируемыми. Это означает, что по мере увеличения размера набора данных в сеть можно добавлять больше дисков.
Как уже упоминалось, Spark не включает свою собственную систему для организации файлов распределенным способом (файловую систему), поэтому для нее требуется система, предоставленная третьей стороной. По этой причине многие проекты больших данных включают установку Spark поверх Hadoop, где современные аналитические приложения Spark могут использовать данные, хранящиеся с использованием распределенной файловой системы Hadoop (HDFS).
Что действительно дает Spark преимущество над Hadoop, так это скорость. Spark выполняет большинство своих операций «в памяти», копируя их из распределенного физического хранилища в гораздо более быструю логическую оперативную память. Это сокращает время записи и чтения на медленные и неуклюжие механические жесткие диски, которые необходимо выполнять в системе Hadoop MapReduce.
MapReduce записывает все данные обратно на физический носитель после каждой операции. Первоначально это было сделано для того, чтобы обеспечить полное восстановление в случае, если что-то пойдет не так - данные, хранящиеся в электронном виде в ОЗУ, более изменчивы, чем данные, хранящиеся на магнитных дисках. Однако Spark упорядочивает данные в так называемые устойчивые распределенные наборы данных, которые могут быть восстановлены после сбоя.
Функциональность Spark для обработки сложных задач обработки данных, таких как обработка потоков в реальном времени и машинное обучение, намного превосходит возможности, которые предоставляются только Hadoop. Это, наряду с приростом скорости, обеспечиваемым операциями в оперативной памяти, возможно является реальной причиной его роста популярности. Обработка в режиме реального времени означает, что данные могут быть переданы в аналитическое приложение в тот момент, когда они получены, и данные немедленно передаются пользователю через панель мониторинга, чтобы можно было предпринять какое-либо действие. Этот вид обработки все чаще используется во всех видах приложений для работы с большими данными, например, рекомендательные механизмы, используемые розничными торговцами, или для мониторинга производительности промышленного оборудования в обрабатывающей промышленности.
Алгоритмы создания машинного обучения, которые могут «мыслить» сами, позволяя им совершенствоваться и «учиться» в процессе статистического моделирования и имитации до тех пор, пока не будет найдено идеальное решение предложенной проблемы, являются областью аналитики, которая хорошо подходит платформе Spark, благодаря ее скорости и способности обрабатывать потоковые данные. Этот вид технологии лежит в основе новейших передовых производственных систем, используемых в промышленности, которые могут предсказать, когда детали выйдут из строя, а когда заказать замену, а также будут лежать в основе автомобилей и кораблей без водителя в ближайшем будущем. Spark включает в себя собственные библиотеки машинного обучения, называемые MLib, тогда как системы Hadoop должны быть связаны со сторонней библиотекой машинного обучения, например, Apache Mahout.
Реальность такова, что хотя существование двух платформ Big Data часто преподносится как борьба за доминирование, на самом деле это не так. Существует некоторое пересечение функций, но оба они являются некоммерческими продуктами, так что это на самом деле не «конкуренция» как таковая, и корпоративные организации, которые действительно зарабатывают деньги за поддержку и установку этих бесплатных систем, часто предлагают обе услуги, позволяющие покупателю выбирать, какую функциональность он требует от каждой платформы.
Многие крупные поставщики (например, Cloudera) теперь предлагают Spark, а также Hadoop, поэтому будут в состоянии посоветовать компаниям, для которых они сочтут наиболее подходящим, работу на индивидуальной основе. Например, если ваши большие данные просто состоят из огромного количества очень структурированных данных (то есть имен и адресов клиентов), вам может не потребоваться расширенная функциональность потоковой аналитики и машинного обучения, предоставляемая Spark. Это означает, что вы потратите время и, возможно, деньги, установив его как отдельный слой поверх хранилища Hadoop. Spark, хотя и развивается очень быстро, все еще находится в зачаточном состоянии, а инфраструктура безопасности и поддержки не так развита.
Растущий объем активности Spark (по сравнению с активностью Hadoop) в сообществе открытого кода является еще одним признаком того, что обычные бизнес-пользователи находят все более инновационные способы использования своих хранимых данных. Принцип открытого исходного кода во многих отношениях является отличной вещью, и один из них заключается в том, как он позволяет, казалось бы, схожим продуктам существовать рядом друг с другом - поставщики могут продавать оба (или, скорее, предоставлять услуги по установке и поддержке для обоих, в зависимости от того, что их клиенты действительно нуждаются в том, чтобы извлечь максимальную выгоду из их данных).