Spark vs Hadoop: quin és el millor marc de dades grans?

Aquesta entrada al bloc parla sobre l'apache spark vs hadoop. Us donarà una idea de quin és el marc Big Data adequat per triar en diferents escenaris.

Començaré aquest blog Apache Spark vs Hadoop introduint primer Hadoop i Spark per establir el context adequat per als dos marcs. Després, per avançar, compararem els marcs de Big Data amb diferents paràmetres per analitzar els seus punts forts i els seus punts febles.Però, sigui quin sigui el resultat de la nostra comparació, heu de saber que tant Spark com Hadoop són components crucials del .



Apache Spark vs Hadoop: Introducció a Hadoop

Hadoop és un marc que us permet emmagatzemar primerament Big Data en un entorn distribuït perquè pugueu processar-lo paral·lelament. Bàsicament hi ha dos components a Hadoop:



HDFS

HDFS crea una abstracció de recursos, permeteu-me que us la simplifiqui. De manera similar a la virtualització, podeu veure lògicament HDFS com una sola unitat per emmagatzemar Big Data, però en realitat esteu emmagatzemant les vostres dades en diversos nodes de manera distribuïda. Aquí teniu una arquitectura mestre-esclau. A HDFS, Namenode és un node mestre i els datanodes són esclaus.

NomNode

És el dimoni mestre que manté i gestiona els DataNodes (nodes esclaus). Enregistra les metadades de tots els fitxers emmagatzemats al clúster, p. ubicació dels blocs emmagatzemats, mida dels fitxers, permisos, jerarquia, etc. Enregistra tots els canvis que es produeixen a les metadades del sistema de fitxers.



Per exemple, si se suprimeix un fitxer a HDFS, el NameNode ho registrarà immediatament a EditLog. Periòdicament rep un informe Heartbeat i un bloc de tots els DataNodes del clúster per assegurar-se que els DataNodes estiguin actius. Manté un registre de tots els blocs de HDFS i en quins nodes s’emmagatzemen aquests blocs.

DataNode

Es tracta de dimonis esclaus que s'executen a cada màquina esclava. Les dades reals s’emmagatzemen a DataNodes. Són els responsables de servir les sol·licituds de lectura i escriptura dels clients. També són responsables de crear blocs, suprimir blocs i replicar-los en funció de les decisions preses pel NameNode.

HDFS - Apache Spark vs Hadoop - EdurekaFILAT

YARN realitza totes les vostres activitats de processament assignant recursos i programant tasques. Té dos dimonis principals, és a dir, ResourceManager i NodeManager .



ResourceManager

És un component de nivell de clúster (un per a cada clúster) i s'executa a la màquina mestra. Gestiona recursos i programa aplicacions que s’executen a sobre de YARN.

NodeManager

És un component de nivell de node (un a cada node) i s'executa a cada màquina esclava. És l’encarregat de gestionar els contenidors i controlar la utilització dels recursos a cada contenidor. També fa un seguiment de la salut del node i la gestió de registres. Es comunica contínuament amb ResourceManager per mantenir-se actualitzat. Per tant, podeu realitzar processos paral·lels a HDFS mitjançant MapReduce.

Per obtenir més informació sobre Hadoop, podeu fer-ho bloc. Ara, que ja estem preparats amb la introducció d’Hadoop, passem a la introducció d’Spark.

Apache Spark vs Hadoop: Introducció a Apache Spark

Apache Spark és un marc per a l'anàlisi de dades en temps real en un entorn informàtic distribuït. Executa càlculs en memòria per augmentar la velocitat de processament de dades. És més ràpid per processar dades a gran escala ja que explota càlculs en memòria i altres optimitzacions. Per tant, requereix una gran potència de processament.

Resilient Distributed Dataset (RDD) és una estructura de dades fonamental de Spark. És una col·lecció d'objectes distribuïda immutable. Cada conjunt de dades a RDD es divideix en particions lògiques, que es poden calcular en diferents nodes del clúster. Els RDD poden contenir qualsevol tipus d'objectes Python, Java o Scala, incloses les classes definides per l'usuari. Els components Spark el fan ràpid i fiable. Apache Spark té els components següents:

  1. Spark Core - Spark Core és el motor base per al processament de dades distribuït i en paral·lel a gran escala. A més, les biblioteques addicionals que es construeixen sobre el nucli permeten diverses càrregues de treball per a transmissions, SQL i aprenentatge automàtic. És responsable de la gestió de la memòria i la recuperació d’errors, la planificació, la distribució i la supervisió de treballs en un clúster i la interacció amb els sistemes d’emmagatzematge
  2. Spark Streaming - Spark Streaming és el component de Spark que s’utilitza per processar dades de transmissió en temps real. Per tant, és una addició útil a l'API principal Spark. Permet processar fluxos de dades en directe d’alt rendiment i tolerància a fallades
  3. Spark SQL : Spark SQL és un nou mòdul de Spark que integra el processament relacional amb l’API de programació funcional de Spark. Admet la consulta de dades mitjançant SQL o mitjançant el llenguatge de consulta Hive. Per a aquells que estigueu familiaritzats amb RDBMS, Spark SQL serà una transició fàcil des de les vostres eines anteriors, on podreu ampliar els límits del processament de dades relacionals tradicionals.
  4. GraphX : GraphX ​​és l'API Spark per a gràfics i càlculs en paral·lel. Així, estén Spark RDD amb un gràfic de propietats distribuïdes resistents. A un nivell alt, GraphX ​​amplia l’abstracció de Spark RDD introduint el gràfic de propietats distribuïdes resistents: un multígraf dirigit amb propietats connectades a cada vèrtex i vora.
  5. MLlib (Machine Learning): MLlib significa Machine Learning Library. Spark MLlib s'utilitza per realitzar l'aprenentatge automàtic a Apache Spark.

Com podeu veure, Spark inclou biblioteques d'alt nivell, incloent compatibilitat amb R, SQL, Python, Scala, Java, etc. Aquestes biblioteques estàndard augmenten les integracions perfectes en un flux de treball complex. A més, també permet integrar diversos conjunts de serveis com MLlib, GraphX, SQL + Data Frames, serveis de transmissió, etc. per augmentar les seves capacitats.

Per obtenir més informació sobre Apache Spark, podeu fer-ho bloc. Ara el terreny està preparat per a Apache Spark vs Hadoop. Seguim endavant i comparem Apache Spark amb Hadoop en diferents paràmetres per entendre els seus punts forts.

Apache Spark vs Hadoop: paràmetres a comparar

Rendiment

Spark és ràpid perquè té processament a la memòria. També pot utilitzar disc per a dades que no encaixen totes a la memòria. El processament a la memòria de Spark proporciona anàlisis gairebé en temps real. Això fa que Spark sigui adequat per al sistema de processament de targetes de crèdit, l’aprenentatge automàtic, l’anàlisi de seguretat i els sensors d’Internet de les coses.

Hadoop es va configurar originalment per recopilar dades contínuament de diverses fonts sense preocupar-se del tipus de dades i emmagatzemar-les en entorns distribuïts. MapReduce utilitza processament per lots. MapReduce no es va crear mai per al processament en temps real, la idea principal darrere de YARN és el processament paral·lel sobre el conjunt de dades distribuïts.

El problema amb la comparació de tots dos és que realitzen un processament diferent.

Facilitat d'ús

Spark inclou API fàcils d'utilitzar per a Scala, Java, Python i Spark SQL. Spark SQL és molt similar a SQL, per la qual cosa és més fàcil per als desenvolupadors de SQL aprendre-ho. Spark també proporciona un intèrpret d’ordres interactiu perquè els desenvolupadors puguin fer consultes i realitzar altres accions i rebre comentaris immediats.

Podeu ingerir dades fàcilment a Hadoop mitjançant l'ús de l'intèrpret d'ordres o integrant-les amb diverses eines com Sqoop, Flume, etc. YARN és només un marc de processament i es pot integrar amb diverses eines com Hive i Pig. HIVE és un component d’emmagatzematge de dades que permet llegir, escriure i gestionar grans conjunts de dades en un entorn distribuït mitjançant una interfície similar a SQL. Podeu passar per això Ecosistema Hadoop blog per conèixer les diverses eines que es poden integrar amb Hadoop.

Costos

Hadoop i Spark són projectes de codi obert Apache, de manera que el programari no té cap cost. El cost només s’associa a la infraestructura. Tots dos productes estan dissenyats de manera que es poden executar en maquinari bàsic amb un TCO baix.

Ara us podeu preguntar de quina manera són diferents. L’emmagatzematge i processament a Hadoop es basa en discs i Hadoop utilitza quantitats estàndard de memòria. Per tant, amb Hadoop necessitem molt espai al disc i discos més ràpids. Hadoop també requereix diversos sistemes per distribuir les E / S del disc.

A causa del processament de memòria d’Apache Spark, requereix molta memòria, però pot ocupar una velocitat i una quantitat de disc estàndard. Com que l’espai en disc és un producte relativament barat i, ja que Spark no utilitza E / S de disc per al processament, requereix una gran quantitat de memòria RAM per executar tot el que hi ha a la memòria. Per tant, el sistema Spark comporta més costos.

Però sí, una cosa important a tenir en compte és que la tecnologia de Spark redueix el nombre de sistemes necessaris. Necessita significativament menys sistemes que costin més. Per tant, hi haurà un moment en què Spark redueix els costos per unitat de càlcul fins i tot amb el requisit de RAM addicional.

Processament de dades

Hi ha dos tipus de processament de dades: processament per lots i processament de fluxos.

Processament per lots versus processament de fluxos

Processament per lots : El processament per lots ha estat crucial per al món de les grans dades. En termes més senzills, el processament per lots funciona amb grans volums de dades recopilats durant un període. En el processament per lots, primer es recopilen dades i després es produeixen els resultats processats en una etapa posterior.

El processament per lots és una forma eficient de processar grans conjunts de dades estàtiques. En general, realitzem processament per lots per a conjunts de dades arxivats. Per exemple, calcular els ingressos mitjans d’un país o avaluar el canvi en el comerç electrònic de la darrera dècada.

Processament de flux : El processament de flux és la tendència actual al món de les grans dades. La necessitat de l’hora és la velocitat i la informació en temps real, que és el que fa el processament de vapor. El processament per lots no permet a les empreses reaccionar ràpidament a les necessitats empresarials canviants en temps real, ja que el processament de transmissions ha experimentat un ràpid creixement de la demanda.

Ara tornant a Apache Spark vs Hadoop, YARN és bàsicament un marc de processament per lots. Quan enviem un treball a YARN, llegeix dades del clúster, realitza operacions i torna a escriure els resultats al clúster. Després torna a llegir les dades actualitzades, realitza la següent operació i torna a escriure els resultats al clúster, etc.

Spark realitza operacions similars, però utilitza processament en memòria i optimitza els passos. GraphX ​​permet als usuaris veure les mateixes dades que els gràfics i com a col·leccions. Els usuaris també poden transformar i unir gràfics amb conjunts de dades distribuïts resilients (RDD).

Falta de tolerància

Hadoop i Spark ofereixen tolerància a fallades, però tots dos tenen un enfocament diferent. Per a HDFS i YARN, els dimonis mestres (és a dir, NameNode i ResourceManager respectivament) comproven el batec del cor dels dimonis esclaus (és a dir, DataNode i NodeManager respectivament). Si falla un dimoni esclau, els dimonis mestres reprogramen totes les operacions pendents i en curs a un altre esclau. Aquest mètode és eficaç, però també pot augmentar significativament els temps de finalització de les operacions amb un error únic. Com Hadoop utilitza maquinari bàsic, una altra forma en què HDFS garanteix la tolerància a fallades és replicant dades.

Com hem comentat anteriorment, els RDD són blocs bàsics d’Apache Spark. Els RDD proporcionen tolerància a fallades a Spark. Es poden referir a qualsevol conjunt de dades present al sistema d’emmagatzematge extern com HDFS, HBase, sistema de fitxers compartit. Es poden operar paral·lelament.

com inicialitzar una classe en python

Els RDD poden persistir un conjunt de dades a la memòria entre les operacions, cosa que fa que les accions futures siguin deu vegades més ràpides. Si es perd un RDD, es tornarà a computar automàticament mitjançant les transformacions originals. Així és com Spark proporciona tolerància a fallades.

Seguretat

Hadoop admet Kerberos per a l'autenticació, però és difícil de manejar. Tot i això, també admet proveïdors externs com LDAP (Lightweight Directory Access Protocol) per a l'autenticació. També ofereixen xifratge. HDFS admet permisos de fitxers tradicionals, així com llistes de control d'accés (ACL). Hadoop proporciona l'autorització de nivell de servei, que garanteix que els clients tenen els permisos adequats per a la presentació de feines.

Spark actualment admet l'autenticació mitjançant un secret compartit. Spark es pot integrar amb HDFS i pot utilitzar ACL HDFS i permisos de nivell de fitxer. Spark també pot funcionar amb YARN aprofitant la capacitat de Kerberos.

Casos d’ús en què Hadoop s’adapta millor:

  • Anàlisi de dades d’arxiu. YARN permet el processament paral·lel de grans quantitats de dades. Parts de dades es processen de forma paral·lela i separada en diferents DataNodes i obté els resultats de cada NodeManager.
  • Si no calen resultats instantanis. Hadoop MapReduce és una bona solució econòmica per al processament per lots.

Casos d'ús en què Spark s'adapta millor:

Anàlisi de dades grans en temps real:

L’anàlisi de dades en temps real significa processar dades generades pels fluxos d’esdeveniments en temps real que arriben a un ritme de milions d’esdeveniments per segon, per exemple, dades de Twitter. La força de Spark rau en les seves habilitats per donar suport a la transmissió de dades juntament amb el processament distribuït. Aquesta és una combinació útil que proporciona processament de dades gairebé en temps real. MapReduce no té cap avantatge, ja que va ser dissenyat per realitzar processos distribuïts per lots en grans quantitats de dades. Les dades en temps real encara es poden processar a MapReduce, però la seva velocitat no s’acosta gens a la de Spark.

Spark afirma que processa dades 100 vegades més ràpid que MapReduce, mentre que 10 vegades més ràpid amb els discos.

Processament de gràfics:

La majoria d’algoritmes de processament de gràfics, com ara el rang de pàgina, realitzen diverses iteracions sobre les mateixes dades i això requereix un mecanisme de transmissió de missatges. Hem de programar MapReduce de manera explícita per gestionar aquestes iteracions múltiples sobre les mateixes dades. Aproximadament, funciona així: llegiu les dades del disc i després d'una iteració particular, escriviu els resultats a l'HDFS i després llegiu les dades de l'HDFS per a la següent iteració. Això és molt ineficient, ja que implica llegir i escriure dades al disc, la qual cosa implica operacions d'E / S pesades i replicació de dades a través del clúster per a una tolerància a fallades. A més, cada iteració MapReduce té una latència molt elevada i la següent iteració només pot començar un cop finalitzada la feina anterior.

A més, el pas de missatges requereix una vintena de nodes veïns per avaluar la puntuació d’un node concret. Aquests càlculs necessiten missatges dels seus veïns (o dades en diverses etapes del treball), un mecanisme que no té MapReduce. Es van dissenyar diferents eines de processament de gràfics, com Pregel i GraphLab, per tal d’abordar la necessitat d’una plataforma eficient per a algorismes de processament de gràfics. Aquestes eines són ràpides i escalables, però no són eficients per a la creació i el post-processament d’aquests complexos algorismes de diverses etapes.

La introducció d’Apache Spark va resoldre aquests problemes en gran mesura. Spark conté una biblioteca de càlcul de gràfics anomenada GraphX ​​que simplifica la nostra vida. El càlcul a la memòria juntament amb el suport de gràfics integrats millora el rendiment de l'algorisme en una magnitud d'un o dos graus respecte als programes tradicionals de MapReduce. Spark utilitza una combinació de Netty i Akka per distribuir missatges entre els executors. Vegem algunes estadístiques que mostren el rendiment de l'algorisme PageRank mitjançant Hadoop i Spark.

Algoritmes iteratius d’aprenentatge automàtic:

Gairebé tots els algorismes d'aprenentatge automàtic funcionen de manera iterativa. Com hem vist anteriorment, els algoritmes iteratius impliquen colls d'ampolla d'E / S a les implementacions MapReduce. MapReduce utilitza tasques de gra gruixut (paral·lelisme a nivell de tasca) massa pesades per a algorismes iteratius. Spark amb l’ajuda de Mesos, un nucli de sistema distribuït, emmagatzema a la memòria cau el conjunt de dades intermedis després de cada iteració i executa diverses iteracions en aquest conjunt de dades emmagatzemat a la memòria cau, cosa que redueix les E / S i ajuda a executar l’algoritme més ràpidament de manera tolerant als errors.

Spark té una biblioteca d’aprenentatge automàtic escalable integrada anomenada MLlib que conté algoritmes d’alta qualitat que aprofiten les iteracions i produeixen millors resultats que aproximacions d’una passada utilitzades a vegades a MapReduce.

  • Processament ràpid de dades. Com sabem, Spark permet el processament en memòria. Com a resultat, Spark és fins a 100 vegades més ràpid per a les dades de RAM i fins a 10 vegades per a les dades emmagatzemades.
  • Processament iteratiu. Els RDD de Spark permeten realitzar diverses operacions de mapa a la memòria, sense necessitat d’escriure conjunts de dades provisionals en un disc.
  • Processament gairebé en temps real. Spark és una eina excel·lent per proporcionar informació empresarial immediata. Aquesta és la raó per la qual s’utilitza Spark al sistema de transmissió de targetes de crèdit.

'Apache Spark: un assassí o un salvador d'Apache Hadoop?'

La resposta a això: Hadoop MapReduce i Apache Spark no competeixen entre ells. De fet, es complementen força bé. Hadoop controla enormes conjunts de dades mitjançant sistemes de productes bàsics. Spark proporciona processament en memòria en temps real per a aquells conjunts de dades que ho requereixen. Quan combinem, la capacitat d’Apache Spark, és a dir, l’alta velocitat de processament, l’anàlisi avançada i el suport d’integració múltiple amb l’operació de baix cost de Hadoop en maquinari bàsic, dóna els millors resultats. Hadoop complementa les capacitats d’Apache Spark. Spark no pot substituir completament Hadoop, però la bona notícia és que actualment la demanda d’Spark és el màxim històric. Aquest és el moment adequat per dominar Spark i aprofitar al màxim les oportunitats professionals que us apareixen. Comença ara!

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris i ens posarem en contacte amb vosaltres al més aviat possible.

Si voleu aprendre Spark i desenvolupar una carrera professional al domini de Spark per realitzar processos de dades a gran escala mitjançant RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​i Scala amb casos d’ús de la vida real, consulteu els nostres casos interactius en línia aquí, que inclou suport 24 * 7 per orientar-vos durant tot el vostre període d'aprenentatge.