Які випадки використання для Apache Spark vs Hadoop


30

З Hadoop 2.0 та Пряжею Hadoop нібито вже не пов'язаний лише рішеннями, що зменшують карту. З таким просуванням, які випадки використання для Apache Spark проти Hadoop враховують як сидіти на вершині HDFS? Я читав вступну документацію для Spark, але мені цікаво, якщо хтось зіткнувся з проблемою, яка була більш ефективною та легшою для вирішення з Spark порівняно з Hadoop.

Відповіді:


40

Hadoop означає HDFS, YARN, MapReduce та багато іншого. Ви маєте на увазі Spark vs MapReduce ? Тому що Іскра працює на / з Hadoop, в чому справа.

Основна причина використання Spark - це швидкість, і це пов'язано з тим, що її виконання може зберігати дані в пам'яті між етапами, а не завжди зберігатись до HDFS після Map або Reduce. Ця перевага дуже виражена для ітеративних обчислень, які мають десятки етапів, кожен з яких стосується одних і тих же даних. Тут дещо швидше "100 разів". Для простих, однопрохідних ETL-подібних завдань, для яких було створено MapReduce, це взагалі не швидше.

Ще одна причина використання Spark - це її приємніша мова високого рівня порівняно з MapReduce. Він забезпечує функціональний вигляд, схожий на програмування, що імітує Scala, що набагато приємніше, ніж писати код MapReduce. (Хоча вам доведеться або використовувати Scala, або прийняти трохи менш розвинені API Java або Python для Spark). Хруст і каскад вже дають подібну абстракцію на версії MapReduce, але це все-таки область, де Іскра приємна.

Нарешті, Spark має ще незадовільні, але перспективні підпроекти для ML, аналізу графіків та потокової передачі, які розкривають подібний, узгоджений API. З MapReduce вам доведеться звернутися до декількох інших проектів для цього (Mahout, Giraph, Storm). Приємно мати його в одній упаковці, хоч ще не «запечене».

Чому б ти не використовував Spark? перефразовуючи себе:

  • Іскра в першу чергу Scala, з портативними Java API; MapReduce може бути дружнішим та ріднішим для розробників на базі Java
  • Зараз є більше експертизи MapReduce, ніж Spark
  • Для паралельних даних, однопрохідних, ETL-подібних завдань, призначених для MapReduce, MapReduce має меншу вагу порівняно з еквівалентом Spark
  • Іскра досить зріла, як і зараз ПЕРЕМОГА, але Spark-on-YARN все ще досить нова. Вони ще не можуть бути оптимально інтегровані. Наприклад, донедавна я не думаю, що Spark міг би попросити YARN про виділення на основі кількості ядер? Тобто: MapReduce може бути простішим для розуміння, управління та налаштування

дякую за роз’яснення Зберігання даних у пам'яті звучить так, ніби це має деякі цікаві наслідки - я детальніше прочитаю про концепцію Resarkent Distributed Dataset Spark трохи більше.
idclark

3
+1 за дійсно зрозумілу та корисну відповідь для багатьох людей, які мали це запитання, як я.
vefthym

3
Майте на увазі, що Шон Оуен є співавтором нової книги O'Reilly про Spark. :-)
sheldonkreger

1

Не впевнений у YARN, але я вважаю, що Spark має справжню різницю порівняно з Hadoop (рекламується як 100 разів швидше), якщо дані можуть чудово вміститися в пам'яті обчислювальних вузлів. Просто тому, що це уникає доступу до жорсткого диска. Якщо дані не відповідають пам’яті, все ще є певний приріст через буферизацію.


0

Гарна інформація @Sean Owen Хочеться додати ще один додатковий. Іскра може допомогти створити уніфіковані трубопроводи даних в архітектурі Lambda, що стосуються як пакетних, так і потокових шарів із можливістю запису на загальний обслуговуючий шар. Величезна перевага використовувати логіку між партією та потоковою передачею. Також поточний алгоритм K-Means в Spark1.3 є додатковим плюсом для ML, крім відмінного моніторингу роботи та візуалізації процесів у 1.4.


0

Справедливо було б порівняти Spark з MapReduce - структурою обробки Hadoop. У більшості випадків Spark може перевершити MapReduce. Перша дозволяє обробляти дані в пам'яті, що дозволяє обробляти дані в 100 разів швидше. З цієї причини Spark є кращим варіантом, якщо вам потрібно швидко зрозуміти, наприклад, якщо вам потрібно

  • виконувати аналітику клієнтів, наприклад, порівнювати поведінку замовника з моделями поведінки певного сегмента клієнта та запускати певні дії;
  • керувати ризиками та прогнозувати різні можливі сценарії;
  • виявити шахрайство в режимі реального часу;
  • запускати промислові аналітики великих даних та прогнозувати аномалії та збої на машині.

Однак MapReduce хороший в обробці дійсно величезних наборів даних (якщо ви добре з часом, необхідним для обробки). Крім того, це більш економічне рішення, оскільки MapReduce читає з / записує на диск. А диски взагалі дешевші, ніж пам'ять.


-1

Машинне навчання - хороший приклад проблемного типу, коли рішення, що базуються на іскрі, на світлі роки випереджають рішення, засновані на карту зменшення, незважаючи на молодий вік пряжі на пряжі.


2
Я не думаю, що це правда, але я думаю, що я знаю, що ви отримуєте: в пам’яті працює набагато швидше для ітеративних обчислень, і багато ML є ітераційним.
Шон Оуен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.