Hadoop y Machine Learning

Un punto muy interesante del mundo Big Data es la posibilidad de realizar análisis de los datos para poder extraer información no intuitiva de ellos. Para ello Hadoop incluye el framework Mahout y se integra con R.

Hadoop

Framework open-source que permite el tratamiento distribuido de grandes cantidades de datos mediante clusters de máquinas

  • La tecnología Big Data cubre tres dimensiones: Volumen, Velocidad y Variedad
  • Y Hadoop es Big Data por ser: Económico, Escalable, Eficiente y Confiable

Ecosistema Hadoop

HDFS: Hadoop Distributed File System

• Sistema de ficheros distribuido que se abstrae del almacenamiento físico y ofrece una visión única de todos los recursos de almacenamiento del cluster

• Ofrece las capacidades de tolerancia a fallos y capacidades de almacenamiento masivo, redundando entre distintas máquinas la información

MapReduce

• Framework para construir fácilmente aplicaciones distribuidas que procesan grandes volúmenes de información en paralelo, tanto datos estructurados como desestructurados

• El framework maneja transparentemente los fallos de hardware

El proceso Map transforma pares de datos de un determinado dominio en una lista de pares de un dominio diferente

El proceso Reduce transforma la lista de pares en colecciones de valores

Mahout

Tiene algoritmos de recomendación, clustering y clasificación

Algoritmo Descripción breve Caso de uso
Regresión logística, resuelta por gradiente estocástico descendiente (SGD) Clasificador brillante, rápido, simple y secuencial, capaz de aprendizaje on-line en entornos exigentes Recomienda publicidad a los usuarios, clasifica texto en categorías
Modelos ocultos de Markov (HMM) Implementaciones secuenciales y paralelas del algoritmo clásico de clasificación diseñado para modelar procesos del mundo real cuando el proceso de generación subyacente es desconocido Etiquetado de texto a parir de una parte del discurso. Reconocimiento del discurso
Descomposición de valor singular (SVD) Diseñado para reducir el ruido en matrices grandes, haciendo con esto que sean más pequeñas y que sea más fácil trabajar con ellas Precursor del almacenamiento en clúster, los recomendadores y la clasificación. Su usa para realizar selección de recursos automáticamente
Algoritmo Descripción breve Caso de uso
Almacenamiento en clúster Dirichlet Enfoque de almacenamiento en clúster basado en modelo, que determina la propiedad con base en si los datos se ajustan al modelo subyacente Útil cuando los datos tienen sobreposición o jerarquía
Almacenamiento en clúster espectral Es una familia de enfoques similares que usa un enfoque basado en gráficas para determinar la membresía a clúster Como el resto de los algoritmos de almacenamiento en clúster, es útil para explorar conjuntos de datos grandes y sacar información de esos conjuntos de datos
Almacenamiento en clúster Minhash Utiliza una estrategia de hash para agrupar elementos similares, produciendo así clústeres Igual a los otros enfoques de clúster
Numerosas mejoras de recomendador Co-ocurrencia distribuida, SVD, mínimos cuadrados alternantes Sitios de citas, e-commerce. Recomendaciones de películas, libros, productos…
Colocaciones Implementación de colocación reducida por correlacionamiento Encontrar frases estadísticamente interesantes en texto

Integración de R en Hadoop

• R es un lenguaje de programación estadística para realizar análisis de datos y poder representar gráficamente los resultados

• Las capacidades de R permiten realizar análisis estadísticos y predictivo, minería de datos y funciones de visualización de los datos

• Aplica en múltiples ámbitos como: finanzas, ventas, fabricación, mundo académico…

R + Streaming: Se utiliza para ejecutar scritps de R utilizando la tecnología MapReduce de Hadoop

Rhipe: es un proyecto de código abierto que permite integrar MapReduce con R en el cliente

Rhadoop: Proporciona una wrapper sobre R para facilitar la integación con MapReduce

Criterios R + Streaming Rhipe RHadoop
Instalación Fácil. El paquete de Rnecesita ser instalado en cada DataNode, pero los paquetes están disponibles en los repositorios de Yum Alta. R debe estar instalado en cada uno DataNode, junto con el Protocol Buffers y Rhipe. La instalación conjunta no es automática Moderada. R debe ser instaladoen cada DataNode y Rhadoop tiene dependencias en otros paquetes R. Pero estos paquetes se pueden instalar con CRAN
Integración Cliente con R Ninguna. Hay que utilizar la consola con Hadoop para ejecutar un trabajo de Streaming, Especificando los argumentos Alta. Rhipe es una biblioteca de R que ejecuta los trabajos en MapReduce cuando la función correspondiente se llama. La librería se encarga de la logística de transporte ellos y invocarlos del mapa y reducir las tareas Alta. RHadoop es también un Rbiblioteca, donde los usuarios definen sus funciones de mapeo y de reducción en R
Tecnologías subyacentes Streaming Rhipe utiliza su propias funciones java para realizar el MapReduce y transmite los datos en el protocolo Protocol Buffers RHadoop es una capa de recubrimiento sobre Hadoop y Streaming. No implementa su propio MapReduce si no que recubre R y ejecuta los comandos con Streaming.
Opciones Cuando aplica A tener en cuenta
R y Streaming Cuando se quiere un control avanzado sobre las funciones MapReduce como en las particiones y en las clasificaciones Difícil de invocar directamente desde otros Scritps R en comparación con las otras opcioens
Rhipe Para poder ejecutar R y MaprReduce sin tener que salir del proceso R Requiere de entrada y salida propia.El formato con los que trabaja es Protocol Buffers
RHadoop Permite tener acceso a R y a MapReduce desde un proceso R. También permite trabajar con un proceso MapReduce existente y con un formato de clases de salida Es necesario que haya suficiente memoriapara almacenar todos los valores necesarios para la reducción

Caso práctico: Recomendación de productos

Copia de los ficheros de usuarios y de las opiniones en HDFS

hadoop fs -put user-ids.txt ratings.csv .

Ejecutar el algoritmo de recomendación de items de Mahout

mahout recommenditembased -Dmapred.reduce.tasks=3 –similarityClassname SIMILARITY_PEARSON_CORRELATION –input ratings.csv –output item-rec-output — tempDir item-rec-tmp –usersFile user-ids.txt

Mostrar el resultado

hadoop fs -cat item-rec-output/part*

Caso práctico: La media diaria del stock

Copia de los datos del almacén en HDFS

hadoop fs -put test-data/stocks.txt stocks.txt

Ejecución del Script de R en Hadoop

hadoop jar /home/gpadmin/.m2/repository/org/apache/hadoop/hadoop-streaming/2.0.2-alpha-gphd-2.0.1.0/*.jar -D mapreduce.job.reduces=0 -inputformat org.apache.hadoop.mapred.TextInputFormat -input stocks.txt -output output -mapper stock_day_avg.R -file stock_day_avg.R

Mostrar el resultado

hadoop fs -cat output/part*