Ciencia de datos y modelo de programación MapReduce de Hadoop

8

¿Cuáles son las diferentes clases de problemas de ciencia de datos que se pueden resolver utilizando el modelo de programación mapreduce?

jithinjustin
fuente

Respuestas:

13

Primero dividámoslo en partes.

Data Science se trata de generar conocimiento a partir de datos sin procesar. Utiliza el aprendizaje automático, las estadísticas y otros campos para simplificar (o incluso automatizar) la toma de decisiones. Las técnicas de ciencia de datos pueden funcionar con cualquier tamaño de datos, pero más datos significa mejores predicciones y, por lo tanto, decisiones más precisas.

Hadoop es un nombre común para un conjunto de herramientas destinadas a trabajar con grandes cantidades de datos. Dos componentes más importantes en Hadoop son HDFS y MapReduce.

HDFS , o Hadoop Distributed File System, es un almacenamiento distribuido especial capaz de almacenar cantidades de datos realmente grandes. Los archivos grandes en HDFS se dividen en bloques, y para cada bloque, la API de HDFS expone su ubicación .

MapReduce es un marco para ejecutar cálculos en nodos con datos. MapReduce utiliza mucho la localidad de datos expuesta por HDFS: cuando es posible, los datos no se transfieren entre nodos, sino que el código se copia a los nodos con datos.

Entonces, básicamente, cualquier problema (incluidas las tareas de ciencia de datos) que no rompa el principio de la localidad de datos puede implementarse de manera eficiente usando MapReduce (y una serie de otros problemas pueden resolverse de manera no tan eficiente, sino simplemente suficiente).


Tomemos algunos ejemplos. Muy a menudo, el analista solo necesita algunas estadísticas simples sobre sus datos tabulares. En este caso , Hive , que es básicamente un motor SQL sobre MapReduce, funciona bastante bien (también hay Impala, Shark y otros, pero no usan MapReduce de Hadoop, así que más adelante).

En otros casos, el analista (o desarrollador) puede querer trabajar con datos previamente no estructurados. Pure MapReduce es bastante bueno para transformar y estandarizar datos.

Algunas personas están acostumbradas a las estadísticas exploratorias y la visualización utilizando herramientas como R. Es posible aplicar este enfoque a grandes cantidades de datos utilizando el paquete RHadoop .

Y cuando se trata de aprendizaje automático basado en MapReduce, Apache Mahout es el primero en mencionar.


Sin embargo, hay un tipo de algoritmos que funcionan bastante lentamente en Hadoop incluso en presencia de la localidad de datos, a saber, los algoritmos iterativos. Los algoritmos iterativos tienden a tener múltiples etapas de mapa y reducción. El marco MR de Hadoop lee y escribe datos en el disco en cada etapa (y a veces en el medio), lo que hace que las tareas iterativas (así como cualquier tarea de varias etapas) sean extremadamente lentas.

Afortunadamente, existen marcos alternativos que pueden usar ambos: utilizar la localidad de datos y mantener los datos en la memoria entre etapas. Probablemente, el más notable de ellos es Apache Spark . Spark es un reemplazo completo para MapReduce de Hadoop que usa su propio tiempo de ejecución y expone una API bastante rica para manipular su conjunto de datos distribuido. Spark tiene varios subproyectos, estrechamente relacionados con la ciencia de datos:

  • Shark y Spark SQL proporcionan interfaces alternativas de tipo SQL a los datos almacenados en HDFS
  • Spark Streaming facilita el trabajo con flujos de datos continuos (por ejemplo, Twitter)
  • MLlib implementa varios algoritmos de aprendizaje automático con una API bastante simple y flexible
  • GraphX permite el procesamiento de gráficos a gran escala

Entonces, hay un conjunto bastante grande de problemas de ciencia de datos que puede resolver con Hadoop y proyectos relacionados.

amigo
fuente
No estoy tan seguro de lo que dices en MapReduce, especialmente So basically any problem that doesn't break data locality principle may be efficiently implemented using MapReduce. Según tengo entendido, solo puede resolver problemas que se pueden expresar con el patrón MapReduce.
merours
@fxm: el marco MapReduce se puede usar para tareas bastante diferentes. Por ejemplo, Oozie --programador de flujo de trabajo para diferentes componentes de Hadoop-- tiene la llamada acción Java, que simplemente crea un mapeador y ejecuta código Java personalizado en él. Con este enfoque, esencialmente puede ejecutar cualquier código. Sin embargo, esto no le dará ninguna ventaja de MR en comparación con la aplicación Java simple. La única forma de obtener estas ventajas es ejecutar cálculos en paralelo (usando Map) en nodos con datos , es decir, localmente. Para resumir: puede ejecutar cualquier código con MR, pero para obtener rendimiento, necesita mantener la localidad de los datos.
amigo
Estoy de acuerdo, pero lo que quise decir es que un desarrollador no debería preocuparse por administrar la localidad de datos (que es administrada por hadoop), sino por expresar los algoritmos deseados con el patrón MapReduce.
merours
@fxm: el desarrollador asegura la localidad utilizando el mapeador. En términos generales, "mapa (f, datos)" significa "transferir f () a los nodos de datos y ejecutarlo localmente". Si el desarrollador no considera la localidad (p. Ej., Pone todos los cálculos en reductor), pierde todas las ventajas de MR. Por lo tanto, expresar algo como trabajo de MR (eficiente) implica la utilización de la localidad de datos de todos modos. Dicho esto, aún sugeriría usar herramientas más flexibles que la MR pura, como Spark.
amigo
9

Data Science tiene muchas subáreas diferentes como se describe en mi publicación ). Casi para cada área, los científicos y desarrolladores tienen contribuciones significativas. Para obtener más información sobre lo que se puede hacer, consulte los siguientes sitios web:

Además, hay algunos trabajos en la combinación MapReduce + Excel + Cloud pero no he encontrado el enlace.

¿Cuáles son las diferentes clases de problemas de ciencia de datos ...

Cada "clase" no es un dominio de problemas puramente homogéneo, es decir, algunos problemas no pueden resolverse mediante un mapa y reducen el enfoque debido a su costo de comunicación o comportamiento de algoritmo. Lo que quiero decir con comportamiento es que algún problema quiere tener control sobre todos los conjuntos de datos en lugar de fragmentos. Por lo tanto, me niego a enumerar el tipo de problema "clases".

No olvide que saber lo que MapReduce puede hacer no es suficiente para Data Science. También debe saber lo que MapReduce no puede hacer también.


fuente
4

Hay un documento que debe examinar:

MapReduce: Computación distribuida para Machine Learning

Distinguen 3 clases de problemas de aprendizaje automático que son razonables de abordar con MapReduce:

  1. Algoritmos de un solo paso
  2. Algoritmos iterativos
  3. Algoritmos basados ​​en consultas

También dan ejemplos para cada clase.

AceRymond
fuente
2

map / reduce es el más apropiado para cálculos fuera de línea paralelizables. Para ser más precisos, funciona mejor cuando el resultado se puede encontrar a partir del resultado de alguna función de una partición de la entrada. El promedio es un ejemplo trivial; puede hacer esto con map / reduce sumando cada partición, devolviendo la suma y el número de elementos en la partición, luego calculando la media general usando estos resultados intermedios. Es menos apropiado cuando los pasos intermedios dependen del estado de las otras particiones.

Emre
fuente