Mecanismos de soporte para procesamiento distribuido de algoritmos de recomendación en redes sociales

Los sistemas de recomendacion (RSs, del ingles Recommender Systems) se han convertido en una herramienta vital para ayudar a los usuarios a hacer frente a la enorme cantidad de informacion disponible en la Web. Con la aparicion de la Web Social y las Redes Sociales en Linea (OSN, del ingles Online Social Networks), los RSs han permitido a los usuarios gestionar la enorme cantidad de contenido generado en los medios sociales, tales como documentos, fotos y videos. En este contexto, los RSs basados en la Red Social exploran la informacion disponible en la red para inferir las preferencias de los usuarios y producir sugerencias sobre diferentes items. Entre los problemas mas sobresalientes en OSNs, sobresale el problema de sugerir personas conocidas en aquellas redes sociales basadas en amistades. Los algoritmos de recomendacion de amistades utilizan el grafo que subyace a la red social para sugerir amigos, mejorando la participacion de los usuarios en la plataforma y contribuyendo al crecimiento de la red. La recomendacion de usuarios en OSNs se traduce generalmente a un problema de prediccion de enlaces, en el cual el objetivo es inferir cuales relaciones entre los usuarios son mas propensas a ocurrir en el futuro. Computar algoritmos de prediccion de enlaces en redes sociales a gran escala presenta una serie de retos en relacion con la escalabilidad de las implementaciones. Muchos algoritmos de prediccion de enlaces se han disenado para ser ejecutados en una sola computadora, lo que limita el metodo de escalado solo a escalado vertical, es decir, mediante la adicion de mas recursos al equipo donde corre el algoritmo. Este tipo de implementaciones son faciles de desarrollar, pero dificiles de escalar debido a los costos de hardware y sus limitaciones intrinsecas. Por otro lado, distribuir el algoritmo en un conjunto de maquinas ha demostrado ser una alternativa rentable a pesar del aumento de la complejidad del desarrollo. Implementaciones complicadas, ad-hoc de algoritmos de prediccion de enlaces eran comunes hasta la aparicion de las bases de datos de grafos distribuidas y frameworks de procesamiento. Las bases de datos de grafos proporcionan un soporte de almacenamiento de grafos y la capacidad de realizar consultas simples, pero carecen de caracteristicas avanzadas de procesamiento. Los frameworks ocultan la mayor parte de las operaciones distribuidas al usuario detras de un modelo de procesamiento y, al mismo tiempo, fomentan buenas practicas de procesamiento en entornos conectados por redes de computadoras. Sin embargo, la mayoria de los frameworks no integran un soporte para persistir grafos y responden a un modelo de procesamiento unico, no siempre ajustado a la exigencia de diferentes tipos de algoritmos de prediccion de enlaces. La presente tesis ofrece un enfoque alternativo mediante la implementacion de un conjunto de mecanismos en un framework para el procesamiento de grafos a gran escala que combina el la persistencia de las bases de datos de grafos y las capacidades de procesamiento de multiples modelos de procesamiento distribuido. El framework propuesto, llamado Graphly, integra una almacen de grafos distribuidos que permite reducir la cantidad de memoria ocupada por la representacion del grafo, maximizando la cantidad de espacio disponible para los datos resultantes del procesamiento. Graphly tambien implementa un conjunto de modelos de procesamiento que permite a los desarrolladores elegir el modelo mas adecuado en funcion de los requisitos del algoritmo y permite la comparacion de los modelos en cuanto a su desempeno y a su aptitud para representar el algoritmo. Entre los modelos provistos, se encuentran los ampliamente conocidos Fork-Join y Pregel. Por otra parte, se propone un novedoso modelo de procesamiento llamado DPM (del ingles, Distributed Partitioned Merge), basado en la sencillez del estilo de programacion Fork-Join, con las ventajas de un modelo centrado en vertices, tal como Pregel. Graphly tambien aborda una problematica en gran parte ignorada por los modelos de procesamiento existentes: la personalizacion de la asignacion de tareas. De hecho, Graphly implementa un mecanismo llamado Mapping Strategies que permite a los usuarios personalizar la forma en que las tareas se asignan a los nodos de computo de acuerdo a las caracteristicas de cada nodo. Por defecto, Graphly utiliza una estrategia de asignacion basada en la ubicacion que asigna tareas de acuerdo a la disposicion de los datos en el almacen de grafos. Sin embargo,el uso de estrategias dinamicas basadas en metricas de memoria (por ejemplo, la memoria disponible de los nodos) puede ser critico en situaciones donde los recursos son escasos y muy heterogeneos de nodo a nodo. Uno de los principales aportes de esta tesis es una comparacion de algoritmos de prediccion de enlaces, incluyendo algoritmos basados en caminatas aleatorias y algoritmos basados en rutas, para los tres modelos de procesamiento diferentes. Esta comparacion arrojo luz sobre que tan bien se ajusta cada modelo a un tipo especifico de algoritmo midiendo no solo su velocidad de recomendacion, sino tambien sus estadisticas de uso de red y uso de memoria. La comparacion experimental de modelos de procesamiento tambien mostro que DPM supero a Pregel y Fork- Join en terminos de velocidad recomendacion para la mayoria de los algoritmos, manteniendo al mismo tiempo valores aceptables de uso de red y uso de memoria.