Todos hablan de Big Data.
Ya han pasado varios años desde que escribí algo en este blog y que mejor tema para reabrirlo que uno de los 3 temas más importantes de la actualidad a mi consideración (Big Data, Cloud, Internet de las Cosas). Hoy en día las empresas hablan del Big Data, pero en realidad ¿Qué es el Big Data?
Hay varias definiciones, desde las 5 V, hasta definiciones por grandes empresas como IBM, Microsoft, Amazon, etc. Yo no daré una definición formal de Big Data, simplemente expresaré que es para mi este concepto.
El Big Data surge con Google y el problema de responder rápido a las peticiones de búsqueda de sus usuarios, para eso tenían que idearse algoritmos más rápidos y sofisticados, pero que mejor que empezar a usar más matemáticas y software en conjunto. El Big Data surge al tener la necesidad de buscar en un mundo de información resultados concretos en poco tiempo.
Después de que Google diera la solución a las peticiones y búsquedas rápidas en un mar de información, La Fundación Apache empieza a construir la tecnología base de todo el procesamiento para el concepto de Big Data, lo que hoy en día conocemos como Apache Hadoop, la primer herramienta de procesamiento en paralelo bajo la licencia de Apache. Google donó algunas librerías de su primer trabajo la primera base de datos NoSQL (Accumulo).
Hoy en día estas tecnologías son relativamente nuevas en mi país, pero llevan 10 años de existencia y duro trabajo de programadores amantes del software libre.
Gracias a esta herramienta el procesamiento de grandes volúmenes de información se facilito, algunos algoritmos de orden O(n^n) fueron reducidos en un volúmen masivo, pero el procesamiento en paralelo no fue el único logro que se obtuvo con esta revolución del Big Data, los algoritmos Hash encontraron una nueva área de oportunidad y no solo en el área de seguridad (Computacionalmente Hablando, ya que Matemáticamente hablando existen muchas formas de utilizar estas funciones.)
Pero, ¿Cómo es que una Función Hash se puede aplicar para la optimización de los tiempos?. Sencillo, este concepto se aplica desde hace algún tiempo en los sistemas operativos en la búsqueda de archivos y visualización de los mismos. La aplicación de los funciones Hash es algo parecido a lo siguiente, supongamos que tenemos un disco duro como el siguiente:

Pero ahora ud pensará, que pasa si hay más información en nuestro domio que valores a los que se pueden mappear a nuestra imagen, bueno, esta es una buena pregunta ya que este evento se conoce como colisiones y es cuando dos valores distintas del dominio toman un mismo valor en la imagen (Una función no inyectiva) como el caso siguiente:
Hay varias definiciones, desde las 5 V, hasta definiciones por grandes empresas como IBM, Microsoft, Amazon, etc. Yo no daré una definición formal de Big Data, simplemente expresaré que es para mi este concepto.
El Big Data surge con Google y el problema de responder rápido a las peticiones de búsqueda de sus usuarios, para eso tenían que idearse algoritmos más rápidos y sofisticados, pero que mejor que empezar a usar más matemáticas y software en conjunto. El Big Data surge al tener la necesidad de buscar en un mundo de información resultados concretos en poco tiempo.
Después de que Google diera la solución a las peticiones y búsquedas rápidas en un mar de información, La Fundación Apache empieza a construir la tecnología base de todo el procesamiento para el concepto de Big Data, lo que hoy en día conocemos como Apache Hadoop, la primer herramienta de procesamiento en paralelo bajo la licencia de Apache. Google donó algunas librerías de su primer trabajo la primera base de datos NoSQL (Accumulo).
Hoy en día estas tecnologías son relativamente nuevas en mi país, pero llevan 10 años de existencia y duro trabajo de programadores amantes del software libre.
Gracias a esta herramienta el procesamiento de grandes volúmenes de información se facilito, algunos algoritmos de orden O(n^n) fueron reducidos en un volúmen masivo, pero el procesamiento en paralelo no fue el único logro que se obtuvo con esta revolución del Big Data, los algoritmos Hash encontraron una nueva área de oportunidad y no solo en el área de seguridad (Computacionalmente Hablando, ya que Matemáticamente hablando existen muchas formas de utilizar estas funciones.)
Pero, ¿Cómo es que una Función Hash se puede aplicar para la optimización de los tiempos?. Sencillo, este concepto se aplica desde hace algún tiempo en los sistemas operativos en la búsqueda de archivos y visualización de los mismos. La aplicación de los funciones Hash es algo parecido a lo siguiente, supongamos que tenemos un disco duro como el siguiente:
Cómo podemos notar un disco duro se divide en sectores y el conjunto de sectores en un mismo nivel se les llama pistas, pero no estoy aquí para hablar de la estructura del disco duro, si no de la aplicación de la función hash para hacer más rápida la lectura del mismo.
Antes de comenzar con esta explicación definamos que es una función hash:
Supongamos tenemos un archivo con los siguientes nombres John Smith, Lisa Smith y Sandra Dee, nuestro archivo es un texto plano que deseamos guardar en disco, donde este archivo lo particionaremos por linea lo intentaremos guardar por sectores en el disco duro.
Como podemos notar en la siguiente imagen, cada vez que nosotros le aplicamos la función hash a el contenido en la linea en este caso los nombres, la función dependiendo de su estructura nos lleva a un conjunto de cardinalidad diferente y elementos diferentes, en este ejemplo la función nos esta mappeando los valores de entrada (nombres) a un conjunto con los elementos (00,01,02,03) y este valor nosotros lo asociamos con un sector del disco duro, entonces cuando queramos cierta información en lugar de leer todos los sectores del disco duro, solo vamos a nuestra tabla de la forma key, value donde la key es el valor de la función hash y el value la dirección del sector en el disco duro, así que con estos valores sabemos que información cargar y en que parte se encuentra ahorrándonos por completo la búsqueda en todos los sectores del disco duro a cambio de un poco de recursos sumamente pequeños para mantener esta tabla en memoria.

Pero ahora ud pensará, que pasa si hay más información en nuestro domio que valores a los que se pueden mappear a nuestra imagen, bueno, esta es una buena pregunta ya que este evento se conoce como colisiones y es cuando dos valores distintas del dominio toman un mismo valor en la imagen (Una función no inyectiva) como el caso siguiente:
En el ejemplo anterior podemos ver que la función hash que se utiliza para este ejemplo tiene una colisión con los datos Sandra Dee y John Smith los cuales tienen el mismo valor al aplicarles la función hash, para solucionar se utiliza la solución conocida como cadenas separadas, por esta razón vemos que en el valor 152 de la función hash apunta a la cadena de Jonh Smith con el valor en disco correspondiente y a su vez esta apunta a la cadena de Sandra Dee con su valor en disco correspondiente y así como este método existen varios más ciando se presentan colisiones.
Pero lo anterior para que nos sirve en el universo de lo distribuido, muy fácil, si ahora en lugar de pensar en un disco duro como un ente físico total pensamos como el conjunto de computadoras conectadas (clúster) donde cada uno deberá guardar cierta información del conjunto total de información, es la misma idea, pero en este caso nuestro disco duro es un conjunto de computadoras conectadas, entonces el concepto de Hash Tables puede ser aplicado para este modelo.
La única diferencia es que ahora esparciremos la información en un conjunto de computadoras, pero con el mismo principio del disco duro, como veremos más adelante estos sistemas distribuidos, pueden contar con replicas de la información, tolerancia a fallos y veremos uno de los teoremas que más peso tienen en este tipo de sistemas mejor conocido como el teorema CAP.
Espero me acompañen a lo largo de este blog para liberar su imaginación y poder usar estas herramientas de la forma más útil para cada uno de uds y les puedan sacar el mejor provecho.
Comentarios
Publicar un comentario