Per a què serveix Hadoop? (Millors usos, alternatives i eines)

Vegem el projecte Hadoop: què és i quan es pot adequar el seu ús per al vostre projecte. Hadoop l’utilitza una impressionant llista d’empreses, com Facebook, LinkedIn, Alibaba, eBay i Amazon.


En resum, Hadoop és ideal per a l’anàlisi de dades de MapReduce sobre grans quantitats de dades. Els seus casos d’ús específics inclouen: recerca de dades, anàlisi de dades, informes de dades, indexació a gran escala de fitxers (per exemple, fitxers de registre o dades de rastrejadors web) i altres tasques de processament de dades mitjançant el que col·loquialment es coneix al món del desenvolupament com a “Big Data”. “

En aquest article, tractarem: quan heu d’utilitzar Hadoop, quan NO utilitzeu Hadoop, els conceptes bàsics de Hadoop (HDFS, MapReduce i YARN), eines relacionades amb Hadoop i alternatives Hadoop.

Un cop examinem tots els temes anteriors, hauríeu de poder respondre amb seguretat a la pregunta: Hadoop té alguna cosa per oferir el meu negoci?

Quan s’utilitza Hadoop

HadoopAbans de parlar de com funciona Hadoop, analitzem alguns escenaris durant els quals Hadoop pot ser la resposta a les vostres necessitats de processament de dades. Després d’això, abordarem les situacions en què NO utilitzeu Hadoop.

Tingueu en compte que la infraestructura Hadoop i la programació de treball MapReduce basada en Java requereixen experiència tècnica per a la configuració i manteniment adequats. Si aquestes habilitats són massa costoses per contractar o prestar servei a un mateix, potser voldreu considerar altres opcions de processament de dades per al vostre Big Data. (Saltar a les alternatives de Hadoop!)

1. Per processar realment grans dades:

Si les vostres dades són seriosament grans, parlem com a mínim de terabytes o de petabytes de dades, Hadoop és per vosaltres. Per a altres conjunts de dades no tan grans (penseu en gigabytes), hi ha moltes altres eines disponibles amb un cost d’implantació i manteniment molt inferior (per exemple, diversos sistemes de base de dades RDBM i NoSQL). Potser el vostre conjunt de dades no és molt gran actualment, però això pot canviar a mesura que la mida de les dades s’expandeix a causa de diversos factors. En aquest cas, pot ser necessària una planificació acurada, sobretot si voleu que totes les dades en brut estiguin sempre disponibles per al tractament de dades flexibles.

2. Per emmagatzemar diversos conjunts de dades:

Hadoop pot emmagatzemar i processar qualsevol dada de fitxers: gran o petita, ja sigui en fitxers de text normal o en fitxers binaris com imatges, fins i tot en diverses versions diferents d’algun format de dades en diferents períodes. En qualsevol moment, podeu canviar la manera de processar i analitzar les dades de Hadoop. Aquest enfocament flexible permet desenvolupar novetats, tot i processar quantitats massives de dades, en lloc de migracions de dades tradicionals lentes i / o complexes. El terme utilitzat per a aquest tipus de magatzems de dades flexibles són llacs de dades.

3. Per al tractament de dades paral·leles:

L’algoritme MapReduce requereix que pugueu paral·lelitzar el processament de dades. MapReduce funciona molt bé en situacions en què les variables es processen una per una (per exemple, recompte o agregació); tanmateix, quan heu de processar les variables de manera conjunta (per exemple, amb moltes correlacions entre les variables), aquest model no funciona.

Qualsevol tractament de dades basat en gràfics (és a dir, una xarxa complexa de dades segons altres dades) no és un bon ajust per a la metodologia estàndard d’Hadoop. Dit això, el framework Apache Tez relacionat permet utilitzar un enfocament basat en gràfics per processar dades mitjançant YARN en lloc del flux de treball MapReduce més lineal..

Quan NO s’utilitza Hadoop

Passem ara alguns casos en els que NO seria convenient utilitzar Hadoop.

1. Per a l’anàlisi de dades en temps real:

Hadoop funciona per lot (no tot alhora), processant treballs de llarga durada en grans conjunts de dades. Aquests treballs necessitaran molt més temps per processar-se que una consulta de bases de dades relacional en algunes taules. No és infreqüent que un treball de Hadoop trigui hores o dies encara a acabar el processament, especialment en els casos de conjunts de dades realment grans.

El problema: una possible solució per a aquest problema és emmagatzemar les vostres dades en HDFS i utilitzar el framework Spark. Amb Spark, el processament es pot fer en temps real mitjançant l’ús de dades a la memòria. Això permet una velocitat de 100 x; Tanmateix, una velocitat de 10 x també és possible quan s’utilitza memòria de disc, a causa del seu enfocament MapReduce “multi-stage”.

2. Per a un sistema de base de dades relacional:

A causa dels temps de resposta lents, Hadoop no s’ha d’utilitzar per a una base de dades relacional.

El problema: una possible solució per a aquest problema és utilitzar el motor SQL Hive, que proporciona resums de dades i admet consultes ad-hoc. Hive proporciona un mecanisme per projectar alguna estructura a les dades de l’Hadoop i després consultar les dades mitjançant un llenguatge similar al SQL anomenat HiveQL.

3. Per a un sistema de fitxers de xarxa general:

Els lents temps de resposta també descarten Hadoop com un potencial sistema general de fitxers en xarxa. També hi ha altres problemes del sistema de fitxers, ja que HDFS manca de moltes de les característiques del sistema de fitxers POSIX estàndard que les aplicacions esperen d’un sistema de fitxers de xarxa general. Segons la documentació de Hadoop, “les aplicacions HDFS necessiten un model d’accés per escriure una vegada llegit per a molts fitxers. No s’ha de canviar un fitxer un cop creat, escrit i tancat, tret de les notes i les troncals. ” Podeu afegir contingut al final dels fitxers, però no es pot actualitzar en un punt “arbitrari”.

4. Per al tractament de dades no paral·lel:

MapReduce no sempre és el millor algorisme per a les vostres necessitats de processament de dades. Cada operació MapReduce hauria de ser independent de la resta. Si l’operació requereix conèixer molta informació dels treballs processats prèviament (estat compartit), és possible que el model de programació MapReduce no sigui la millor opció.

Diagrama de flux de treball Hadoop MadReduce

Hadoop i el seu model de programació MapReduce s’utilitzen millor per processar dades en paral·lel.

El problema: a vegades, aquests problemes de dependència de l’estat poden ser parcialment ajudats mitjançant l’execució de diversos treballs MapReduce, amb la sortida d’un per a la següent. Això és una cosa que el marc Apache Tez fa amb un enfocament basat en gràfics per al processament de dades de Hadoop. Una altra opció a considerar és utilitzar HBase per emmagatzemar qualsevol estat compartit en aquest gran sistema de taules. Tot i això, aquestes solucions aporten complexitat al flux de treball de Hadoop.

Què és Hadoop? – 3 components bàsics

Hadoop consta de tres components bàsics: un sistema de fitxers distribuït, un marc de programació paral·lel i un sistema de gestió de recursos / treballs. Linux i Windows són els sistemes operatius compatibles amb Hadoop, però es coneix que BSD, Mac OS / X i OpenSolaris funcionen també..

1. Sistema d’arxius distribuïts Hadoop (HDFS)

Hadoop és una implementació de codi obert basada en Java d’un sistema de fitxers agrupat anomenat HDFS, que permet fer informàtica distribuïda rendible, fiable i escalable. L’arquitectura HDFS és altament tolerant a les errades i està dissenyada per ser implementada en maquinari de baix cost.

A diferència de les bases de dades relacionals, el clúster Hadoop permet emmagatzemar qualsevol dada de fitxers i, posteriorment, determinar com voleu utilitzar-la sense haver de reformatejar les dades anteriorment. Diverses còpies de les dades es repliquen automàticament a tot el clúster. La quantitat de replicació es pot configurar per fitxer i es pot canviar en qualsevol punt.

2. Hadoop MapReduce

Hadoop se centra en l’emmagatzematge i el processament distribuït de grans conjunts de dades en grups de computadores mitjançant un model de programació MapReduce: Hadoop MapReduce.

Amb MapReduce, el conjunt de fitxers d’entrada es desglossa en peces més petites, que es processen independentment les unes de les altres (la part “mapa”). Els resultats d’aquests processos independents es recullen i es processen en grups (la part “reduir”) fins que es fa la tasca. Si un fitxer individual és tan gran que afectarà el rendiment del temps de cerca, es pot dividir en diverses “divisions Hadoop”.

Diagrama MapReduce Hadoop

L’ecosistema Hadoop utilitza un model de programació MapReduce per emmagatzemar i processar grans conjunts de dades.

A continuació es mostra un programa de programa MapReduce de WordCount escrit per a Hadoop.

3. Hadoop FIL

El marc de Hadoop YARN permet fer planificació de treballs i gestió de recursos de clúster, és a dir, els usuaris poden enviar i matricar aplicacions a través de l’API Hadoop REST. També hi ha interfícies d’interès web per supervisar el vostre clúster Hadoop. A Hadoop, la combinació de tots els fitxers i classes Java JAR necessaris per executar un programa MapReduce s’anomena treball. Podeu enviar treballs a un JobTracker des de la línia d’ordres o mitjançant HTTP que els publiqui a l’API REST. Aquests treballs contenen les “tasques” que executen el mapa individual i redueixen els passos. També hi ha maneres d’incorporar codi que no sigui Java en escriure aquestes tasques. Si per algun motiu un node de clúster Hadoop baixa, els treballs de processament afectats es traslladaran automàticament a altres nodes de clúster.

Eines Hadoop

A continuació, trobareu una llista dels projectes relacionats amb l’Hadoop que hi ha a la fundació Apache:

Ambari: Una eina basada en la web per subministrar, gestionar i supervisar els clústers Apache Hadoop, Ambari inclou suport per a Hadoop HDFS, Hadoop MapReduce, Hive, HCatalog, HBase, ZooKeeper, Oozie, Pig i Sqoop. Ambari també proporciona un tauler de control per visualitzar factors de salut del clúster, que inclouen fulls de calor i la possibilitat de visualitzar visualment les aplicacions MapReduce, Pig i Hive, així com funcions per diagnosticar les característiques de rendiment d’una manera fàcil d’utilitzar..

Avro: Avro és un sistema de serialització de dades.

Cassandra: Cassandra és una base de dades multi-master escalable sense punts puntuals de fallida.

Chukwa: Un sistema de recollida de dades, Chukwa s’utilitza per gestionar sistemes distribuïts de grans dimensions.

HBase: Una base de dades escalada i distribuïda, HBase és compatible amb l’emmagatzematge de dades estructurat per a taules grans.

Rusc: Hive és una infraestructura de magatzem de dades que proporciona resums de dades i consultes ad hoc.

Mahout: Mahout és una biblioteca d’aprenentatge de màquines escalada i de mineria de dades.

Porc: Es tracta d’un llenguatge i un marc d’execució de flux de dades d’alt nivell per a computació paral·lela.

Espurna: Un motor de càlcul ràpid i general per a les dades d’Hadoop, Spark proporciona un model de programació senzill i expressiu que admet una àmplia gamma d’aplicacions, incloent ETL, aprenentatge automàtic, processament de flux i càlcul gràfic..

Tez: Tez és un marc de programació de flux de dades generalitzat basat en Hadoop YARN que proporciona un motor potent i flexible per executar un DAG arbitrari de tasques per processar dades tant per a casos d’ús interactiu com per lots. Tez està sent adoptat per Hive, Pig i altres marcs de l’ecosistema Hadoop, i també per altres programes comercials (per exemple, eines ETL), per substituir Hadoop MapReduce com a motor d’execució subjacent..

ZooKeeper: Es tracta d’un servei de coordinació d’alt rendiment per a aplicacions distribuïdes.

Alternatives Hadoop

Per obtenir les millors alternatives a Hadoop, pots provar una de les opcions següents:

Tempesta d’Apache: Aquest és l’Hadoop de processament en temps real escrit en el llenguatge Clojure.

BigQuery: BigQuery, la plataforma de baix cost gestionada per a analítica a gran escala, permet treballar amb SQL i no preocupar-se de gestionar la infraestructura o la base de dades..

Apache Mesos: Mesos abstracta CPU, memòria, emmagatzematge i altres recursos de càlcul fora de màquines (físiques o virtuals), permetent que els sistemes distribuïts toleren a les errades i elàstiques es puguin construir fàcilment i funcionar eficaçment.

Apache Flink: Flink és una plataforma per al processament de dades de flux distribuït i per lots que es pot utilitzar amb Hadoop.

Pachyderm: Pachyderm afirma proporcionar la potència de MapReduce sense la complexitat de Hadoop mitjançant l’ús de contenidors Docker per implementar el clúster.

Tutorial d’Hadoop en revisió

L’Heleop Elefant ofereix un tutorialHadoop és una peça robusta i potent de la tecnologia Big Data (incloent les eines desconcertants i en evolució ràpida relacionades amb ella); No obstant això, considereu els seus punts forts i febles abans de decidir si l’utilitzeu o no al centre de dades. Hi pot haver solucions millors, més simples o més econòmiques disponibles per satisfer les vostres necessitats específiques de processament de dades.

Si voleu obtenir més informació sobre Hadoop, consulteu la seva documentació i el wiki Hadoop.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me