Пет неща, които трябва да знаете за Hadoop срещу Apache Spark

Слушайте всеки разговор за големи данни и вероятно ще чуете споменаването на Hadoop или Apache Spark. Ето кратък поглед върху това, което правят и как се сравняват.

1: Те правят различни неща. Hadoop и Apache Spark са и двете рамки за големи данни, но всъщност не служат на същите цели. Hadoop по същество е разпределена инфраструктура за данни: Той разпределя масивни колекции от данни в множество възли в рамките на клъстер от стокови сървъри, което означава, че не е необходимо да купувате и поддържате скъп потребителски хардуер. Той също така индексира и проследява тези данни, като дава възможност за обработка на големи данни и анализ много по-ефективно, отколкото е било възможно преди. Spark, от друга страна, е инструмент за обработка на данни, който работи върху тези разпределени колекции от данни; не прави разпределено съхранение.

2: Можете да използвате едното без другото. Hadoop включва не просто компонент за съхранение, известен като Hadoop Distributed File System, но и компонент за обработка, наречен MapReduce, така че не се нуждаете от Spark, за да извършите обработката си. И обратно, можете също да използвате Spark без Hadoop. Spark обаче не идва със собствена система за управление на файлове, така че трябва да бъде интегрирана с една - ако не HDFS, а друга платформа за данни в облак. Spark обаче е създаден за Hadoop, така че мнозина се съгласяват, че са по-добре заедно.

3: Spark е по-бърз.Spark обикновено е много по-бърз от MapReduce поради начина, по който обработва данните. Докато MapReduce работи на стъпки, Spark работи с целия набор от данни с един замах. „Работният процес MapReduce изглежда така: четене на данни от клъстера, извършване на операция, записване на резултати в клъстера, четене на актуализирани данни от клъстера, извършване на следваща операция, записване на следващи резултати в клъстера и т.н.“, обясни Кърк Борн, главен учен по данни в Booz Алън Хамилтън. От друга страна, Spark завършва пълните операции за анализ на данни в паметта и почти в реално време: „Четете данни от клъстера, изпълнявате всички необходими аналитични операции, записвате резултати в клъстера, готово“, каза Борн. Spark може да бъде до 10 пъти по-бърз от MapReduce за пакетна обработка и до 100 пъти по-бърз за анализ в паметта, каза той.

4: Може да не ви е необходима скоростта на Spark. Стилът на обработка на MapReduce може да бъде чудесен, ако вашите операции с данни и изисквания за отчитане са предимно статични и можете да изчакате обработка в партиден режим. Но ако трябва да направите анализ на поточни данни, като например от сензори на фабричен етаж, или имате приложения, които изискват множество операции, вероятно ще искате да използвате Spark. Повечето алгоритми за машинно обучение например изискват множество операции. Общите приложения за Spark включват маркетингови кампании в реално време, онлайн препоръки за продукти, анализи на киберсигурността и мониторинг на машинния дневник.

5: Възстановяване при неуспех: различно, но все пак добро. Hadoop е естествено устойчив на системни грешки или откази, тъй като данните се записват на диск след всяка операция, но Spark има подобна вградена устойчивост поради факта, че неговите обекти от данни се съхраняват в нещо, наречено еластични разпределени набори от данни, разпределени в клъстера от данни. „Тези обекти от данни могат да се съхраняват в паметта или на дисковете, а RDD осигурява пълно възстановяване от грешки или откази“, посочи Борн.