Introducció
L'ecosistema Apache Hadoop és una col·lecció de projectes i eines que treballen conjuntament per proporcionar una solució robusta i escalable per al processament i emmagatzematge de grans volums de dades. Hadoop és conegut per la seva capacitat de gestionar dades massives de manera distribuïda i eficient.
Components Principals de l'Ecosistema Hadoop
- Hadoop Distributed File System (HDFS)
HDFS és el sistema de fitxers distribuït que permet emmagatzemar grans volums de dades de manera distribuïda a través de múltiples servidors.
Característiques Clau:
- Alta Disponibilitat: Les dades es repliquen a través de diversos nodes.
- Escalabilitat: Pot gestionar petabytes de dades.
- Tolerància a Fallades: Dissenyat per resistir fallades de nodes.
- MapReduce
MapReduce és el model de programació per al processament de dades distribuïdes a gran escala.
Funcionament:
- Map: Divideix la tasca en sub-tasques més petites.
- Reduce: Agrega els resultats de les sub-tasques per obtenir el resultat final.
Exemple de Codi MapReduce:
public class WordCount { public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } }
Explicació:
- TokenizerMapper: Divideix el text en paraules i emet un parell (clau, valor) per a cada paraula.
- IntSumReducer: Agrega els valors per a cada clau (paraula) per obtenir el recompte total.
- YARN (Yet Another Resource Negotiator)
YARN és el gestor de recursos de Hadoop que permet gestionar i programar les aplicacions en un clúster.
Funcions Principals:
- Gestió de Recursos: Assigna recursos a les aplicacions.
- Planificació de Tasques: Programa les tasques en funció dels recursos disponibles.
- Hadoop Common
Hadoop Common proporciona les biblioteques i utilitats necessàries per a altres mòduls de Hadoop.
Inclou:
- APIs: Per a la interacció amb HDFS i MapReduce.
- Utilitats: Eines per a la configuració i gestió del clúster.
Eines Complementàries de l'Ecosistema Hadoop
- Apache Hive
Hive és una eina de data warehousing que permet realitzar consultes SQL sobre dades emmagatzemades en HDFS.
Característiques:
- HQL (Hive Query Language): Llenguatge similar a SQL.
- Integració amb Hadoop: Executa les consultes utilitzant MapReduce.
- Apache Pig
Pig és una plataforma per a l'anàlisi de grans conjunts de dades que proporciona un llenguatge de script d'alt nivell anomenat Pig Latin.
Característiques:
- Facilitat d'Ús: Simplifica el desenvolupament de tasques de processament de dades.
- Flexibilitat: Pot processar dades estructurades i no estructurades.
- Apache HBase
HBase és una base de dades NoSQL distribuïda que proporciona emmagatzematge en temps real per a grans volums de dades.
Característiques:
- Model de Dades: Basat en taules, files i columnes.
- Escalabilitat: Pot gestionar milers de milions de files i milions de columnes.
- Apache ZooKeeper
ZooKeeper és un servei de coordinació per a aplicacions distribuïdes que proporciona mecanismes per a la sincronització, configuració i gestió de grups.
Característiques:
- Alta Disponibilitat: Dissenyat per ser altament disponible.
- Consistència: Garanteix la consistència de les dades a través dels nodes.
Exercicis Pràctics
Exercici 1: Configuració d'un Clúster Hadoop
Objectiu: Configurar un clúster Hadoop amb HDFS i YARN.
Passos:
- Instal·lació de Hadoop: Descarrega i instal·la Hadoop en tots els nodes del clúster.
- Configuració de HDFS: Configura el fitxer
hdfs-site.xml
per definir els directoris de dades i el nombre de rèpliques. - Configuració de YARN: Configura el fitxer
yarn-site.xml
per definir els recursos disponibles per a YARN. - Inici del Clúster: Inicia els serveis HDFS i YARN.
Exercici 2: Executar una Aplicació MapReduce
Objectiu: Escriure i executar una aplicació MapReduce per comptar paraules en un fitxer de text.
Passos:
- Escriure el Codi: Escriu el codi Java per a l'aplicació MapReduce (com l'exemple anterior).
- Compilar i Paquetar: Compila el codi i crea un fitxer JAR.
- Executar l'Aplicació: Executa l'aplicació MapReduce utilitzant el comandament
hadoop jar
.
Solució:
Conclusió
L'ecosistema Apache Hadoop proporciona una solució completa per al processament i emmagatzematge de grans volums de dades. Amb components com HDFS, MapReduce, YARN i eines complementàries com Hive, Pig, HBase i ZooKeeper, Hadoop és capaç de gestionar dades massives de manera eficient i escalable. Els exercicis pràctics proporcionen una oportunitat per aplicar els conceptes apresos i adquirir experiència pràctica amb Hadoop.