jueves, 6 de marzo de 2014

Estudio: Capítulo 4 - Entrada/Salida Hadoop


Capítulo 4 del libro "Hadoop: The Definitive Guide, 3rd Edition". Hadoop proporciona una serie de primitivas relacionadas con la entrada y salida de datos. En este capítulo se estudian diferentes aspectos relacionados con estas primitivas.

1 – Integridad de los datos. 

Existe siempre una pequeña posibilidad de cuando se ejecuta una operacion de I/O (entrada/salida) en un disco o a través de una red, se introduzca algún error en los datos. Cuando los volúmenes de datos son muy elevados como pasa en Hadoop, existe la posibilidad de que los datos se presenten corruptos. La forma usual de detectar corrupción en los datos en calculando un cheksum de los datos cuando entran al sistema y se comprueba tras cada modificación o transmisión que puede corromper los datos.  En este apartado se nos explica como en HDFS se realiza/chequea un checksum de forma transparente. También se explica como Hadoop realiza un checksum cuando realiza operaciones con el sistema de ficheros local. 
 

1.1 – Integridad en HDFS.

1.2 – LocalFileSystem.

1.3 – ChecksumFileSystem.


2 - Compression.

 En este apartado se explica como utilizar compresión en Hadoop. Debido a que trabajamos con grandes cantidades de datos, el uso de comprimir la información puede conllevar grandes ventajas tanto en el espacio requerido de almacenaje, como una mejora temporal en el tratamiento, ya que se debe enviar menos información a través de la red.

2.1 – Codecs.

2.1.1 – Comprimiendo y descomprimiendo con CompresionCodec.

2.1.2 – Deduciendo CompressionCodecs usando CompresionCodecFactory.
2.1.3 – Librerías nativas.

2.2 – Compresión y Input Splits.

2.3 – Usando compresión en MapReduce.


3 – Serialización.

La serialización es el proceso de transformar objetos estructurados a streams de bytes para poder transmitirlos a través de la red o para almacenarlos. 
Los diferentes nodos de un cluster Hadoop se intercomunican entre sí utilizando un protocolo RPC (se usa serialización para renderizar los diferentes mensajes en streams binarios). Para el almacenaje de los datos en HDFS y su transmisión entre nodos también se debe serializar la información.
Hadoop utiliza su propio formato de serialización: Writables.  En este apartado se habla de la interfaz Writable y de las clases Java existentes bajo esta interfaz.

3.1 – Interfaz Writable.

3.1.1 – Comparaciones WritableComparable.

3.2 – Clases Writable.

3.2.1 – Envolturas Writable para primitivas Java.
3.2.2 – Texto Writable.
3.2.3 – BytesWritable.
3.2.4 – NullWritable.
3.2.5 – ObjectWritable y GenericWritable.
3.2.6 – Colecciones Writable.

3.3 – Implementando un Writable personalizado.

3.4 – Frameworks de serialización.


4 – Avro.

Avro es un sistema de serialización de datos neutral para poder tener formatos de datos que puedas ser procesados por diferentes lenguajes (C,C++,C#, Java, PHP,Python y Ruby). Se introduce Avro y se explica como poder utilizar datos Avro en programas MapReduce.

5 – Estructuras de datos basadas en ficheros.

En algunas aplicaciones, es necesario que los datos sigan algún tipo de estructura especial.  Hadoop proporciona contenedores de alto nivel para este tipo de situaciones, de forma que se pueda realizar un procesado MapReduce y siga siendo escalable.

5.1 – SequenceFile.

5.2 – MapFile.

No hay comentarios:

Publicar un comentario