
Разлики между MapReduce и Apache Spark
Apache Hadoop е софтуерна рамка с отворен код, създадена да мащабира от единични сървъри до хиляди машини и да изпълнява приложения на клъстери от хардуер на стоки. Рамката Apache Hadoop е разделена на два слоя.
- Hadoop разпределена файлова система (HDFS)
 - Обработващ слой (MapReduce)
 
Слоят за съхранение на Hadoop т.е. HDFS е отговорен за съхранението на данни, докато MapReduce е отговорен за обработката на данни в Hadoop Cluster. MapReduce е тази парадигма за програмиране, която позволява масирана мащабируемост на стотици или хиляди сървъри в клъстер Hadoop. MapReduce е техника на обработка и програмен модел за разпределени изчисления, базиран на езика за програмиране Java. MapReduce е мощна рамка за обработка на големи, разпределени набори от структурирани или неструктурирани данни в клъстер Hadoop, съхраняван в разпределената файлова система (HDFS) на Hadoop. Мощните характеристики на MapReduce са неговата мащабируемост.
- Apache Spark е светкавична и клъстерна изчислителна технологична рамка, предназначена за бързи изчисления при мащабна обработка на данни. Apache Spark е двигател с разпределена обработка, но не се предлага с вграден клъстер за управление на ресурси и разпределена система за съхранение. Трябва да включите мениджър на клъстери и система за съхранение по ваш избор. Apache Spark се състои от ядро Spark и набор от библиотеки, подобни на наличните за Hadoop. Ядрото е двигателят на разпределеното изпълнение и набор от езици. Apache Spark поддържа езици като Java, Scala, Python и R за разработка на разпределени приложения. Допълнителните библиотеки са изградени върху ядрото Spark, за да позволят натоварванията, които използват поточно, SQL, графично и машинно обучение. Apache Spark е двигател за обработка на данни за пакетни и поточни режими, включващ SQL заявки, обработка на графики и машинно обучение. Apache Spark може да работи независимо, а също и на Hadoop YARN Cluster Manager и по този начин може да чете съществуващи данни на Hadoop.
 
- Можете да изберете Apache YARN или Mesos за мениджър на клъстери за Apache Spark.
 - Можете да изберете Hadoop разпределена файлова система (HDFS), облачно хранилище в Google, Amazon S3, Microsoft Azure за мениджър на ресурси за Apache Spark.
 
Сравнение между главата на MapReduce и Apache Spark (Инфографика)
По-долу е топ 20 за сравнение между MapReduce срещу Apache Spark

Ключова разлика между MapReduce срещу Apache Spark
- MapReduce е строго базиран на диска, докато Apache Spark използва памет и може да използва диск за обработка.
 - MapReduce и Apache Spark имат подобна съвместимост по отношение на типове данни и източници на данни.
 - Основната разлика между MapReduce и Spark е, че MapReduce използва устойчиво съхранение, а Spark използва устойчиви разпределени набори от данни.
 - Hadoop MapReduce е предназначен за данни, които не се вписват в паметта, докато Apache Spark има по-добра производителност за данните, които се вписват в паметта, особено на специализирани клъстери.
 - Hadoop MapReduce може да бъде икономичен вариант, тъй като Hadoop като услуга, а Apache Spark е по-икономичен поради високата памет на разположение
 - Apache Spark и Hadoop MapReduce са непоносими, но сравнително Hadoop MapReduce е по-толерантен от отказа.
 - Hadoop MapReduce изисква основни умения за java програмиране, докато програмирането в Apache Spark е по-лесно, тъй като има интерактивен режим.
 - Spark е в състояние да изпълнява партидни задачи за обработка между 10 до 100 пъти по-бързо от MapReduce Въпреки че и двата инструмента се използват за обработка на големи данни.
 
Кога да използвате MapReduce:
- Линейна обработка на голям набор от данни
 - Не се изисква междинно решение
 
Кога да използвате Apache Spark:
- Бърза и интерактивна обработка на данни
 - Присъединяване към набори от данни
 - Графична обработка
 - Итеративни работни места
 - Обработка в реално време
 - Машинно обучение
 
MapReduce срещу Apache Spark Таблица за сравнение
| MapReduce | Apache Spark | |
| Обработка на данни | Само за пакетна обработка | Партидна обработка, както и обработка на данни в реално време | 
| Скорост на обработка | По-бавна от Apache Spark, защото ако закъсненията на дисковете с I / O диск | 100 пъти по-бързо в паметта и 10 пъти по-бързо, докато работи на диск | 
| категория | Двигател за обработка на данни | Data Analytics Engine | 
| Разходи | По-малко по-скъпо сравнявайки Apache Spark | По-скъпи, поради голямо количество RAM | 
| скалируемост | И двете са мащабируеми, ограничени до 1000 възли в единичен клъстер | И двете са мащабируеми, ограничени до 1000 възли в единичен клъстер | 
| Машинно обучение | MapReduce е по-съвместим с Apache Mahout, докато се интегрира с машинно обучение | Apache Spark имат вградени API за машинно обучение | 
| Съвместимост | До голяма степен съвместими с всички източници на данни и формати на файлове | Apache Spark може да се интегрира с всички източници на данни и формати на файлове, поддържани от клъстер Hadoop | 
| Сигурност | Рамката на MapReduce е по-сигурна в сравнение с Apache Spark | Функцията за сигурност в Apache Spark се развива по-бързо и зрее | 
| Scheduler | Зависим от външния планировчик | Apache Spark има собствен планировчик | 
| Толерантност на грешки | Използва репликация за грешка Толерантност | Apache Spark използва RDD и други модели за съхранение на данни за Fale Tolerance | 
| Лесно използване | MapReduce е малко сложен, сравнявайки Apache Spark заради JAVA API | Apache Spark е по-лесен за използване поради богати API | 
| Дублиращо премахване | MapReduce не поддържа тази функция | Apache Spark обработва всеки запис точно веднъж, следователно елиминира дублирането. | 
| Езикова поддръжка | Основният език е Java, но езици като C, C ++, Ruby, Python, Perl, Groovy също се поддържат | Apache Spark поддържа Java, Scala, Python и R | 
| латентност | Много висока латентност | Много по-бързо сравняване на MapReduce Framework | 
| Сложност | Трудно пишете и отстранявате грешки в кодовете | Лесен за писане и отстраняване на грешки | 
| Общност Apache | Рамка с отворен код за обработка на данни | Open Source Framework за обработка на данни с по-висока скорост | 
| кодиране на стоките | Още линии от код | По-малки редове от код | 
| Интерактивен режим | Не е интерактивен | Интерактивен | 
| инфраструктура | Товарен хардуер | Хардуер от средно до високо ниво | 
| SQL | Поддържа чрез Hive Query Language | Поддържа се чрез Spark SQL | 
Заключение - MapReduce срещу Apache Spark
MapReduce и Apache Spark са най-важният инструмент за обработка на Big Data. Основното предимство на MapReduce е, че е лесна за мащабиране на обработката на данни в множество изчислителни възли, докато Apache Spark предлага високоскоростни изчисления, гъвкавост и относителна лекота на използване са перфектни допълнения към MapReduce. MapReduce и Apache Spark имат симбиотична връзка помежду си. Hadoop предоставя функции, които Spark не притежава, като например разпределена файлова система, а Spark осигурява обработка в памет в реално време за онези набори от данни, които изискват това. MapReduce е дисково изчисление, докато Apache Spark е изчисление на базата на RAM. MapReduce и Apache Spark заедно са мощен инструмент за обработка на големи данни и прави Hadoop Cluster по-здрав.
Препоръчителни статии
Това е ръководство за MapReduce срещу Apache Spark, тяхното значение, сравнение между главата, ключови разлики, таблица за сравнение и заключение. Можете също да разгледате следните статии, за да научите повече -
- Azure Paas vs Iaas Полезни сравнения за научаване
 - Най-добрите 5 разлики между Hadoop срещу MapReduce
 - Трябва да знаете за MapReduce срещу Spark
 - Apache Storm срещу Apache Spark - Научете 15 полезни разлики
 - Apache Hive срещу Apache Spark SQL - 13 невероятни разлики
 - Groovy Интервю въпроси: Невероятни въпроси