Introducció
Hadoop és un marc de programari de codi obert que permet el processament de grans volums de dades en un entorn distribuït. Va ser desenvolupat per la Fundació Apache i està dissenyat per escalar des de servidors individuals fins a milers de màquines, cadascuna oferint emmagatzematge i computació locals.
Objectius d'aprenentatge
En aquesta secció, aprendràs:
- Què és Hadoop i per què és important.
- Els components principals de Hadoop.
- Les característiques clau que fan Hadoop únic.
Conceptes clau
- Definició de Hadoop
Hadoop és un marc que permet el processament distribuït de grans conjunts de dades a través de clústers d'ordinadors utilitzant models de programació senzills. Està dissenyat per escalar des d'un sol servidor fins a milers de màquines, cadascuna oferint emmagatzematge i computació locals.
- Història de Hadoop
Hadoop va ser creat per Doug Cutting i Mike Cafarella el 2005. El nom "Hadoop" prové del nom del peluix de l'elefant groc del fill de Doug Cutting. La seva creació va ser inspirada pel document de Google sobre el Sistema de Fitxers de Google (GFS) i MapReduce.
- Components principals de Hadoop
Hadoop consta de quatre components principals:
- HDFS (Hadoop Distributed File System): Un sistema de fitxers distribuït que emmagatzema dades en múltiples màquines.
- MapReduce: Un model de programació per al processament de dades.
- YARN (Yet Another Resource Negotiator): Un sistema de gestió de recursos per a la gestió de recursos de clúster.
- Hadoop Common: Les utilitats comunes que donen suport als altres mòduls de Hadoop.
- Característiques clau de Hadoop
- Escalabilitat: Hadoop pot escalar des d'un sol servidor fins a milers de màquines.
- Tolerància a fallades: HDFS replica dades en múltiples nodes per garantir la disponibilitat i la fiabilitat.
- Processament paral·lel: MapReduce permet el processament paral·lel de grans conjunts de dades.
- Cost-efectivitat: Utilitza maquinari de mercat per reduir costos.
Exemples pràctics
Exemple 1: Emmagatzematge de dades amb HDFS
# Crear un directori a HDFS hdfs dfs -mkdir /user/hadoop/input # Carregar un fitxer local a HDFS hdfs dfs -put localfile.txt /user/hadoop/input
Exemple 2: Processament de dades amb MapReduce
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import java.io.IOException; 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 { String[] tokens = value.toString().split("\\s+"); for (String token : tokens) { word.set(token); 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); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } }
Exercicis pràctics
Exercici 1: Crear un directori a HDFS
- Obre la línia de comandes.
- Crea un directori anomenat
/user/estudiant/input
a HDFS.
Exercici 2: Carregar un fitxer a HDFS
- Crea un fitxer de text anomenat
dades.txt
al teu sistema local. - Carrega aquest fitxer al directori
/user/estudiant/input
a HDFS.
Resum
En aquesta secció, hem après què és Hadoop, la seva història, els components principals i les seves característiques clau. També hem vist exemples pràctics d'emmagatzematge de dades amb HDFS i processament de dades amb MapReduce. Finalment, hem realitzat alguns exercicis pràctics per reforçar els conceptes apresos.
En la següent secció, explorarem una visió general de l'ecosistema Hadoop.
Curs de Hadoop
Mòdul 1: Introducció a Hadoop
- Què és Hadoop?
- Visió general de l'ecosistema Hadoop
- Hadoop vs Bases de dades tradicionals
- Configuració de l'entorn Hadoop
Mòdul 2: Arquitectura de Hadoop
- Components bàsics de Hadoop
- HDFS (Sistema de fitxers distribuït de Hadoop)
- Marc MapReduce
- YARN (Yet Another Resource Negotiator)
Mòdul 3: HDFS (Sistema de fitxers distribuït de Hadoop)
Mòdul 4: Programació MapReduce
- Introducció a MapReduce
- Flux de treball d'una feina MapReduce
- Escriure un programa MapReduce
- Tècniques d'optimització de MapReduce
Mòdul 5: Eines de l'ecosistema Hadoop
Mòdul 6: Conceptes avançats de Hadoop
- Seguretat de Hadoop
- Gestió de clústers de Hadoop
- Ajust de rendiment de Hadoop
- Serialització de dades de Hadoop
Mòdul 7: Aplicacions reals i estudis de cas
- Hadoop en emmagatzematge de dades
- Hadoop en aprenentatge automàtic
- Hadoop en processament de dades en temps real
- Estudis de cas d'implementacions de Hadoop