Spark срещу Hadoop: Коя е най-добрата рамка за големи данни?



Тази публикация в блога говори за apache spark срещу hadoop. Това ще ви даде представа коя е правилната рамка за големи данни, която да изберете в различни сценарии.

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

Apache Spark срещу Hadoop: Въведение в Hadoop

Hadoop е рамка, която ви позволява първо да съхранявате големи данни в разпределена среда, така че да можете да ги обработвате паралелно. По принцип има два компонента в Hadoop:





HDFS

HDFS създава абстракция на ресурси, позволете ми да ви го опростя. Подобно на виртуализацията, можете да видите HDFS логически като единица за съхранение на големи данни, но всъщност съхранявате данните си в множество възли по разпределен начин. Тук имате архитектура master-slave. В HDFS Namenode е главен възел, а Datanodes са роби.

NameNode

Това е главният демон, който поддържа и управлява DataNodes (подчинени възли). Той записва метаданните на всички файлове, съхранявани в клъстера, напр. местоположение на съхранените блокове, размерът на файловете, разрешенията, йерархията и т.н. Той записва всяка промяна, която се извършва в метаданните на файловата система.



Например, ако файл е изтрит в HDFS, NameNode веднага ще запише това в EditLog. Той редовно получава Heartbeat и доклад за блока от всички DataNodes в клъстера, за да гарантира, че DataNodes са активни. Той поддържа запис на всички блокове в HDFS и в кои възли се съхраняват тези блокове.

DataNode

Това са подчинени демони, които работят на всяка подчинена машина. Действителните данни се съхраняват в DataNodes. Те отговарят за обслужването на искания за четене и писане от клиентите. Те също така отговарят за създаването на блокове, изтриването на блокове и репликирането им въз основа на решенията, взети от NameNode.

HDFS - Apache Spark срещу Hadoop - EdurekaПРЕЖДА

YARN изпълнява всички ваши дейности по обработка, като разпределя ресурси и задава графици. Той има два основни демона, т.е. ResourceManager и NodeManager .



ResourceManager

Това е компонент на ниво клъстер (по един за всеки клъстер) и работи на главната машина. Той управлява ресурси и планира приложения, работещи върху YARN.

NodeManager

Това е компонент на ниво възел (по един на всеки възел) и работи на всяка подчинена машина. Той отговаря за управлението на контейнери и наблюдението на използването на ресурсите във всеки контейнер. Той също така следи здравето на възела и управлението на регистрационните файлове. Той непрекъснато комуникира с ResourceManager, за да остане актуален. Така че, можете да извършите паралелна обработка на HDFS с помощта на MapReduce.

За да научите повече за Hadoop, можете да преминете през това блог. Сега, след като всички сме готови с представянето на Hadoop, нека преминем към въвеждането на Spark.

Apache Spark срещу Hadoop: Въведение в Apache Spark

Apache Spark е рамка за анализ на данни в реално време в разпределена изчислителна среда. Той изпълнява изчисления в паметта, за да увеличи скоростта на обработка на данните. Той е по-бърз за обработка на мащабни данни, тъй като използва изчисления в паметта и други оптимизации. Следователно изисква висока обработваща мощност.

Устойчивият разпределен набор от данни (RDD) е основна структура от данни на Spark. Това е неизменна разпределена колекция от обекти. Всеки набор от данни в RDD е разделен на логически дялове, които могат да бъдат изчислени на различни възли на клъстера. RDD могат да съдържат всякакъв тип обекти на Python, Java или Scala, включително дефинирани от потребителя класове. Искрените компоненти го правят бърз и надежден. Apache Spark има следните компоненти:

използвайте python във визуално студио
  1. Искрено ядро - Spark Core е основният двигател за мащабна паралелна и разпределена обработка на данни. Освен това допълнителните библиотеки, които са изградени на върха на ядрото, позволяват разнообразни натоварвания за стрийминг, SQL и машинно обучение. Той е отговорен за управление на паметта и възстановяване на грешки, планиране, разпределение и наблюдение на задачи в клъстер и взаимодействие със системи за съхранение
  2. Искрено поточно предаване - Spark Streaming е компонентът на Spark, който се използва за обработка на поточни данни в реално време. По този начин това е полезно допълнение към основния API на Spark. Той дава възможност за високопроизводителна и устойчива на грешки обработка на потоци от потоци данни на живо
  3. Spark SQL : Spark SQL е нов модул в Spark, който интегрира релационна обработка с API за функционално програмиране на Spark. Той поддържа заявки за данни или чрез SQL, или чрез Hive Query Language. За тези от вас, запознати с RDBMS, Spark SQL ще бъде лесен преход от предишните ви инструменти, където можете да разширите границите на традиционната релационна обработка на данни.
  4. GraphX : GraphX ​​е Spark API за графики и графично-паралелни изчисления. По този начин той разширява RDD на Spark с еластична графика на разпределеното свойство. На високо ниво GraphX ​​разширява абстракцията на Spark RDD, като въвежда Resilient Distributed Property Graph: насочен мултиграф със свойства, прикрепени към всеки връх и ръб.
  5. MLlib (Машинно обучение): MLlib означава библиотека за машинно обучение. Spark MLlib се използва за машинно обучение в Apache Spark.

Както можете да видите, Spark се предлага с библиотеки на високо ниво, включително поддръжка за R, SQL, Python, Scala, Java и т.н. Тези стандартни библиотеки увеличават безпроблемните интеграции в сложен работен процес. Освен това, той също така позволява различни набори от услуги да се интегрират с него като MLlib, GraphX, SQL + Data Frames, Streaming услуги и др., За да увеличат своите възможности.

За да научите повече за Apache Spark, можете да преминете през това блог. Сега теренът е готов за Apache Spark срещу Hadoop. Нека да продължим напред и да сравним Apache Spark с Hadoop по различни параметри, за да разберем техните силни страни.

Apache Spark срещу Hadoop: Параметри за сравнение

производителност

Spark е бърз, защото има обработка в паметта. Той може също да използва диск за данни, които не всички се вписват в паметта. Обработката в паметта на Spark осигурява анализи в почти реално време. Това прави Spark подходящ за система за обработка на кредитни карти, машинно обучение, анализ на сигурността и сензори за Интернет на нещата.

Hadoop първоначално е настроен да събира непрекъснато данни от множество източници, без да се притеснява за вида на данните и да ги съхранява в разпределена среда. MapReduce използва групова обработка. MapReduce никога не е създаден за обработка в реално време, основната идея на YARN е паралелната обработка на разпределен набор от данни.

Проблемът при сравняването на двете е, че те извършват обработката по различен начин.

Лесно използване

Spark се предлага с удобни за потребителя API за Scala, Java, Python и Spark SQL. Spark SQL е много подобен на SQL, така че за разработчиците на SQL става по-лесно да го научат. Spark също така предоставя интерактивна обвивка за разработчиците да правят заявки и да извършват други действия и да имат незабавна обратна връзка.

Можете да поглъщате данни в Hadoop лесно, като използвате черупка или ги интегрирате с множество инструменти като Sqoop, Flume и т.н. ЯРНАТА е просто рамка за обработка и може да бъде интегрирана с множество инструменти като Hive и Pig. HIVE е компонент за съхранение на данни, който извършва четене, запис и управление на големи масиви от данни в разпределена среда, използвайки SQL-подобен интерфейс. Можете да преминете през това Екосистема Hadoop блог, за да знаете за различните инструменти, които могат да бъдат интегрирани с Hadoop.

Разходи

Hadoop и Spark са проекти на Apache с отворен код, така че няма разходи за софтуера. Разходите са свързани само с инфраструктурата. И двата продукта са проектирани по такъв начин, че да могат да работят на стоков хардуер с ниски TCO.

Сега може би се чудите начините, по които те са различни. Съхранението и обработката в Hadoop се базира на диск и Hadoop използва стандартни количества памет. Така че, с Hadoop се нуждаем от много дисково пространство, както и от по-бързи дискове. Hadoop също така изисква множество системи за разпространение на дисковите I / O.

Поради Apache Spark при обработката на паметта той изисква много памет, но може да се справи със стандартна скорост и количество диск. Тъй като дисковото пространство е сравнително евтина стока и тъй като Spark не използва дискови I / O за обработка, вместо това изисква големи количества RAM за изпълнение на всичко в паметта. По този начин системата Spark носи повече разходи.

Но да, едно важно нещо, което трябва да имате предвид, е, че технологията на Spark намалява броя на необходимите системи. Необходими са значително по-малко системи, които струват повече. Така че ще има момент, в който Spark намалява разходите за единица изчисление дори с допълнителните изисквания за RAM.

как да създам регистрационен файл в java -

Обработка на данни

Има два вида обработка на данни: групова обработка и поточна обработка.

Партидна обработка срещу поточна обработка

Партидна обработка : Партидната обработка е от решаващо значение за света на големите данни. Най-просто казано, пакетната обработка работи с големи обеми данни, събрани за определен период. При груповата обработка първо се събират данни и след това се получават обработени резултати на по-късен етап.

Партидната обработка е ефективен начин за обработка на големи статични набори от данни. Като цяло извършваме групова обработка за архивирани набори от данни. Например изчисляване на средния доход на дадена държава или оценка на промяната в електронната търговия през последното десетилетие.

Обработка на потоци : Обработката на потоци е текущата тенденция в света на големите данни. Нуждата от час е скоростта и информацията в реално време, което прави обработката с пара. Партидната обработка не позволява на бизнеса бързо да реагира на променящите се бизнес нужди в реално време, обработката на потоци отчита бърз растеж на търсенето.

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

Spark извършва подобни операции, но използва обработка в паметта и оптимизира стъпките. GraphX ​​позволява на потребителите да преглеждат същите данни като графики и като колекции. Потребителите могат също да трансформират и да се присъединят към графики с еластични разпределени набори от данни (RDD).

Толерантност към повреди

И двете Hadoop и Spark осигуряват толерантност към грешки, но и двете имат различен подход. И за HDFS, и за YARN, главните демони (т.е. съответно NameNode и ResourceManager) проверяват сърдечния ритъм на подчинените демони (т.е. DataNode и NodeManager съответно). Ако някой демон на подчинени устройства се провали, главните демони преназначават всички чакащи и текущи операции на друг подчинен. Този метод е ефективен, но може значително да увеличи времето за завършване и на операции с единична повреда. Тъй като Hadoop използва стоков хардуер, друг начин, по който HDFS осигурява толерантност към грешки, е чрез репликиране на данни.

Както обсъдихме по-горе, RDD са градивни елементи на Apache Spark. RDD осигуряват толерантност към повреда на Spark. Те могат да се отнасят до всеки набор от данни, присъстващ във външна система за съхранение като HDFS, HBase, споделена файлова система. Те могат да работят паралелно.

RDD могат да запазят набор от данни в паметта при различни операции, което прави бъдещите действия 10 пъти много по-бързи. Ако RDD е загубен, той автоматично ще бъде преизчислен с помощта на оригиналните трансформации. Ето как Spark осигурява толерантност към повреди.

Сигурност

Hadoop поддържа Kerberos за удостоверяване, но е трудно да се работи. Независимо от това, той също така поддържа доставчици на трети страни като LDAP (Лек протокол за достъп до директории) за удостоверяване. Те също така предлагат криптиране. HDFS поддържа традиционни разрешения за файлове, както и списъци за контрол на достъпа (ACL). Hadoop предоставя разрешение на ниво услуга, което гарантира, че клиентите имат правилните разрешения за изпращане на работа.

Понастоящем Spark поддържа удостоверяване чрез споделена тайна. Spark може да се интегрира с HDFS и може да използва ACL на HDFS и разрешения на ниво файл. Spark може да работи и на YARN, използвайки възможностите на Kerberos.

Случаи на използване, където Hadoop се вписва най-добре:

  • Анализиране на архивни данни. YARN позволява паралелна обработка на огромни количества данни. Части от данни се обработват паралелно и поотделно на различни DataNodes и събира резултат от всеки NodeManager.
  • Ако не се изискват незабавни резултати. Hadoop MapReduce е добро и икономично решение за партидна обработка.

Случаи на използване, където Spark се вписва най-добре:

Анализ на големи данни в реално време:

Анализът на данните в реално време означава обработка на данни, генерирани от потоци от събития в реално време, идващи със скорост от милиони събития в секунда, например данни в Twitter. Силата на Spark се крие в способностите му да поддържа поточно предаване на данни заедно с разпределена обработка. Това е полезна комбинация, която осигурява обработка на данни почти в реално време. MapReduce е с увреждания от такова предимство, тъй като е проектиран да извършва обработка на пакетно разпределение на големи количества данни. Данните в реално време все още могат да бъдат обработвани на MapReduce, но скоростта му не е близка до тази на Spark.

sas програмиране въведение основни понятия

Spark твърди, че обработва данни 100 пъти по-бързо от MapReduce, докато 10 пъти по-бързо с дисковете.

Графична обработка:

Повечето алгоритми за обработка на графики като ранг на страницата изпълняват множество итерации върху едни и същи данни и това изисква механизъм за предаване на съобщения. Трябва да програмираме MapReduce изрично да обработва такива множество итерации върху едни и същи данни. Приблизително работи по следния начин: Прочетете данни от диска и след определена итерация запишете резултатите в HDFS и след това прочетете данни от HDFS за следващата итерация. Това е много неефективно, тъй като включва четене и запис на данни на диска, което включва тежки I / O операции и репликация на данни в клъстера за устойчивост на грешки. Също така, всяка итерация на MapReduce има много висока латентност и следващата итерация може да започне само след като предишната работа е напълно завършена.

Също така, предаването на съобщения изисква десетки съседни възли, за да се оцени резултатът на определен възел. Тези изчисления се нуждаят от съобщения от неговите съседи (или данни за няколко етапа на заданието), механизъм, който липсва на MapReduce. Различни инструменти за обработка на графики като Pregel и GraphLab са проектирани, за да отговорят на необходимостта от ефективна платформа за алгоритми за обработка на графики. Тези инструменти са бързи и мащабируеми, но не са ефективни за създаване и последваща обработка на тези сложни многостепенни алгоритми.

Въвеждането на Apache Spark реши тези проблеми до голяма степен. Spark съдържа библиотека за изчисления на графики, наречена GraphX, която опростява живота ни. Изчисляването в паметта заедно с вградената поддръжка на графики подобрява производителността на алгоритъма с величина от една или две градуси спрямо традиционните програми MapReduce. Spark използва комбинация от Netty и Akka за разпространение на съобщения сред изпълнителите. Нека да разгледаме някои статистически данни, които изобразяват ефективността на алгоритъма PageRank, използвайки Hadoop и Spark.

Итеративни алгоритми за машинно обучение:

Почти всички алгоритми за машинно обучение работят итеративно. Както видяхме по-рано, итеративните алгоритми включват тесни места за I / O в реализациите на MapReduce. MapReduce използва грубозърнести задачи (паралелизъм на ниво задача), които са твърде тежки за итеративни алгоритми. Spark с помощта на Mesos - разпределено системно ядро, кешира междинния набор от данни след всяка итерация и изпълнява множество итерации на този кеширан набор от данни, което намалява I / O и помага за по-бързото стартиране на алгоритъма по устойчив на грешки начин.

Spark има вградена скалируема библиотека за машинно обучение, наречена MLlib, която съдържа висококачествени алгоритми, които използват итерации и дават по-добри резултати от приближенията на един проход, понякога използвани в MapReduce.

  • Бърза обработка на данни. Както знаем, Spark позволява обработка в паметта. В резултат на това Spark е до 100 пъти по-бърз за данни в RAM и до 10 пъти за данни в съхранение.
  • Итеративна обработка. RDD на Spark позволяват извършването на няколко картографски операции в паметта, без да е необходимо да записвате междинни набори от данни на диск.
  • Почти обработка в реално време. Spark е отличен инструмент за осигуряване на незабавни бизнес прозрения. Това е причината Spark да се използва в системата за поточно предаване на кредитни карти.

„Apache Spark: Убиец или спасител на Apache Hadoop?“

Отговорът на това - Hadoop MapReduce и Apache Spark не се конкурират помежду си. Всъщност те се допълват доста добре. Hadoop поставя огромни масиви от данни под контрол от стоковите системи. Spark осигурява обработка в паметта в реално време за тези набори от данни, които го изискват. Когато комбинираме способността на Apache Spark, т.е. висока скорост на обработка, предварително анализиране и поддръжка на множество интеграции с евтината операция на Hadoop върху стоков хардуер, това дава най-добри резултати. Hadoop допълва възможностите на Apache Spark. Spark не може напълно да замени Hadoop, но добрата новина е, че търсенето на Spark в момента е на върха на всички времена! Това е подходящият момент да овладеете Spark и да се възползвате максимално от възможностите за кариера, които се появяват на пътя ви. Започвай сега!

Имате въпрос към нас? Моля, споменете го в раздела за коментари и ние ще се свържем с вас най-рано.

Ако искате да научите Spark и да изградите кариера в домейн на Spark, за да извършите мащабна обработка на данни с помощта на RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​и Scala с реални случаи на използване, разгледайте нашия интерактивен онлайн на живо тук, който идва с поддръжка 24 * 7, за да ви води през целия период на обучение.