Foro Formación Hadoop

 
 
Imagen de Fernando Agudo
Benchmark Avro vs Parquet
de Fernando Agudo - viernes, 25 de noviembre de 2016, 11:47
 

Benchmark Avro vs Parquet 

En el siguiente bechmark hemos comprobado tanto la velocidad de procesamiento entre los formatos de ficheros Avro y Parquet así como el tamaño que ocupan cada uno de ellos después de convertirlos en sus correspondientes formatos.

 

Información Bechmark:

  • Estructura de las tablas: 18 columnas (17 tipo String y una de tipo Int)

  • Sin particionado

  • Sin compresión

 

-  Query Filtrado:

  • select * from t where ip="80.26.83.175" and ds="NmPuUDloT9qJwYyIfHfvEw";

- Query Select:

  • select ip,ds,dt from t;

 

- Hardware utilizado:

  • Cluster de 4 Nodos (todos realizan funciones de DataNode/NodeManager)
  • 64 G de Ram y 32 Cpu(s) por Nodo.

 

Resultado:


Formato

Tamaño

Query Filtrado

 

Query Select

 

Fichero original de 610.9 M (2.000.000 de Registros)

Text

610.9 M

   

Parquet

184.8 M

29sec

 

22sec

Avro

640.5 M

32sec

30sec

Fichero original de 4.8G (16.000.000 de Registros)

Text

4.8G

   

Parquet

1.3 G

31sec , 28sec

30sec

 

Avro

5.0 G

37sec, 35sec, 37sec

38sec

Fichero original de 24.0 G (80.000.000 de Registros)

Text

24.0 G

   

Parquet

7.3 G

43sec, 34sec, 38sec

26sec, 27sec

Avro

25.2 G

1mins 18sec, 1mins 22sec, 1mins 18sec, 1mins 28sec

1mins 21sec, 1mins 18sec

 

Conclusión:

Tal y como se puede comprobar en los tiempos tomados, a media que se va incrementado el volumen, el rendimiento de búsqueda de Parquet se hace notar. También debemos fijarnos en el volumen de almacenamiento, ya que en este sentido también "gana" Parquet.

A pesar de esto, no hay que descartar el formato de ficheros Avro. Ya que entre las características más importantes de este formato se encuentra que es posible procesarlo con multitud de herramientas y lenguajes (cosa que no podemos encontrar con el formato Parquet). 

Para decantarnos entre un formato u otro, deberíamos tener una visión global del caso de uso que se desea resolver para poder determinar si lo que más nos interesa es la velocidad de procesamiento (vamos a realizar múltiples análisis) o si estamos creando un "data lake" para un posterior procesamiento-consumo por otras herramientas.

 

¿Cuál es el mejor formato? Ninguno, todo depende del problema a resolver ;).