Red de conocimiento informático - Material del sitio web - Cómo utilizar Mahout y Hadoop para procesar datos a gran escala

Cómo utilizar Mahout y Hadoop para procesar datos a gran escala

Uso de Mahout y Hadoop para procesar datos a gran escala

¿Qué importancia práctica tiene la cuestión de la escala en los algoritmos de aprendizaje automático? Consideremos el tamaño de algunos problemas que puede necesitar. implemente Mahout para resolverlo.

Según estimaciones aproximadas, Picasa tenía 500 millones de fotografías hace tres años. Esto significa que hay millones de fotografías nuevas que procesar cada día. El análisis de una fotografía no supone un gran problema en sí mismo, aunque se repita millones de veces. Sin embargo, durante la etapa de aprendizaje, puede ser necesario obtener información de miles de millones de fotografías al mismo tiempo, y cálculos de esta escala no se pueden lograr con una sola máquina.

Se informa que Google News procesa aproximadamente 3,5 millones de artículos de noticias nuevos cada día. Si bien el número absoluto de términos puede parecer pequeño, imagine que para publicar estos artículos de manera oportuna, ellos, junto con otros artículos recientes, deben agruparse en cuestión de minutos.

El subconjunto de datos de calificación publicados por Netflix para el Premio Netflix contiene 100 millones de calificaciones. Debido a que estos son solo los datos publicados para la competencia, se especula que la cantidad total de datos que Netflix necesita procesar para formar los resultados de las recomendaciones es muchas veces mayor que esto.

La tecnología de aprendizaje automático debe implementarse en escenarios de aplicaciones como este, donde la cantidad de datos de entrada suele ser tan grande que no se pueden procesar completamente en una sola computadora, incluso si la computadora es muy potente. Sin implementaciones como Mahout, esto sería una tarea imposible. Esta es la razón por la que Mahout considera la escalabilidad como una prioridad máxima y por la que este libro, a diferencia de otros libros, se centra en el procesamiento eficiente de grandes conjuntos de datos.

Actualmente, solo las grandes empresas de alta tecnología consideran la aplicación de tecnología compleja de aprendizaje automático para resolver problemas a gran escala. Sin embargo, la potencia informática actual es mucho más barata que nunca y se puede obtener más fácilmente con la ayuda de marcos de código abierto como Apache Hadoop. Mahout completa este rompecabezas proporcionando implementaciones de código abierto de alta calidad construidas sobre la plataforma Hadoop que pueden resolver problemas a gran escala y pueden ser utilizadas por todos los grupos tecnológicos.

Partes de Mahout aprovechan Hadoop, que incluye el popular marco informático distribuido MapReduce. MapReduce es ampliamente utilizado por Google dentro de la empresa y Hadoop es una implementación de código abierto basada en Java. MapReduce es un paradigma de programación que al principio parece extraño, o tan simple que cuesta creer en su poder. El paradigma MapReduce es adecuado para resolver problemas en los que la entrada es un conjunto de "pares clave-valor". La función de mapa convierte estos pares clave-valor en otro conjunto de pares clave-valor intermedios. La función de reducción convierte todos los valores. correspondiente a cada clave intermedia de alguna manera. Fusionarse para producir resultados. De hecho, muchos problemas se pueden reducir a problemas de MapReduce o sus cascadas. Este paradigma también es bastante fácil de paralelizar: todo el procesamiento es independiente y, por lo tanto, puede distribuirse entre muchas máquinas. No entraré en detalles sobre MapReduce aquí. Se recomienda que los lectores consulten algunos tutoriales introductorios para comprenderlo, como los proporcionados por Hadoop.

Hadoop implementa el paradigma MapReduce aunque MapReduce parezca así. simple, sigue siendo un gran progreso. Es responsable de gestionar el almacenamiento de datos de entrada, pares clave-valor intermedios y datos de salida. Estos datos pueden ser muy grandes y deben ser accesibles para muchos nodos trabajadores, no solo almacenados en un solo nodo; Hadoop también es responsable de la partición y transmisión de datos entre nodos de trabajo, así como del monitoreo de fallas y la recuperación de cada máquina. Comprender los principios de funcionamiento detrás de esto puede ayudarlo a prepararse para las situaciones complejas que puede enfrentar al usar Hadoop. Hadoop es más que una simple biblioteca que se puede agregar a un proyecto. Tiene varios componentes, cada uno con muchas bibliotecas y (varios) procesos de servicio independientes que pueden ejecutarse en varias máquinas.

El proceso de operación en Hadoop no es simple, pero invertir en una implementación distribuida y escalable puede dar sus frutos más adelante: sus datos pueden crecer hasta alcanzar un tamaño grande muy rápidamente, y esta implementación escalable le permite a sus aplicaciones nunca quedarse atrás.

Dado que estos marcos complejos que requieren grandes cantidades de potencia informática son cada vez más comunes, no es sorprendente que los proveedores de computación en la nube estén comenzando a ofrecer servicios relacionados con Hadoop. Por ejemplo, Amazon proporciona un servicio para administrar clústeres de Hadoop, Elastic MapReduce, que proporciona poderosas capacidades informáticas y nos permite operar y monitorear trabajos a gran escala en Hadoop a través de una interfaz amigable, que originalmente era una tarea muy compleja.