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*
jajajajaja
ya hablas de Machine Learning y de R…
bien, bien… ese es el camino!!!!!!