Pregunta

He estado mirando MapReduce por un tiempo y parece ser una muy buena manera de implementar computación distribuida tolerante a fallas.Leí muchos artículos y artículos sobre ese tema, instalé Hadoop en una variedad de máquinas virtuales e hice algunas pruebas muy interesantes.Realmente creo que entiendo los pasos de Mapear y Reducir.

Pero éste es mi problema : No puedo entender cómo puede ayudar con el análisis de los registros del servidor http.

Tengo entendido que las grandes empresas (Facebook, por ejemplo) utilizan MapReduce con el fin de calcular sus registros http para acelerar el proceso de extracción de estadísticas de audiencia de estos.La empresa para la que trabajo, aunque más pequeña que Facebook, tiene un gran volumen de registros web que calcular todos los días (100Go crece entre un 5 y un 10 por ciento cada mes).En este momento procesamos estos registros en un solo servidor y funciona bien.Pero la distribución de los trabajos informáticos me viene inmediatamente a la mente como una optimización que pronto será útil.

Estas son las preguntas que no puedo responder en este momento; cualquier ayuda sería muy apreciada:

  • ¿Se puede realmente aplicar el concepto MapReduce al análisis de blogs?
  • ¿Es MapReduce la forma más inteligente de hacerlo?
  • ¿Cómo dividiría los archivos de registro web entre las distintas instancias informáticas?

Gracias.
Nicolás

¿Fue útil?

Solución

¿Puede el concepto de MapReduce realmente ser aplicado al análisis weblogs?

Sí.

Se puede dividir el archivo de registro notoria en trozos de decir 10.000 o 1.000.000 líneas (lo que es una buena parte para el tipo de archivo de registro - para los archivos de registro de Apache me gustaría ir a un mayor número), darles de comer a algunos creadores de mapas que extraería algo específico (como el navegador, la dirección IP, ..., nombre de usuario, ...) de cada línea de registro, a continuación, reducir al contar el número de veces que aparece cada uno (simplificado):

  192.168.1.1,FireFox x.x,username1
  192.168.1.1,FireFox x.x,username1
  192.168.1.2,FireFox y.y,username1
  192.168.1.7,IE 7.0,username1

Puede extraer los navegadores, haciendo caso omiso de la versión, el uso de una operación de mapa para obtener esta lista:

FireFox
FireFox
FireFox
IE

A continuación, reducir a conseguir esto:     FireFox, 3     IE, 1

¿Es MapReduce la forma más inteligente de hacerlo?

Es inteligente, pero que tendría que ser muy grande con el fin de obtener algún beneficio ... petabytes división de registros.

Para hacer este tipo de cosas, yo preferiría usar colas de mensajes, y un motor de almacenamiento compatibles (como una base de datos), con el procesamiento de los clientes que tiran de trabajo de las colas, realizar el trabajo, y empuje resultados a otra cola, con puestos de trabajo no se están ejecutando en cierto período de tiempo a disposición para que otros puedan procesar. Estos clientes serían pequeños programas que hacen algo específico.

Se podría empezar con 1 cliente, y ampliar a 1000 ... Incluso podría tener un cliente que funciona como un protector de pantalla en todos los equipos de una red local, y ejecutar 8 clientes en sus servidores de 8 núcleos, 2 en su PC de doble núcleo ...

Con Tire: Usted podría tener 100 ó 10 clientes de trabajo, máquinas multinúcleo podrían tener varios clientes que se ejecutan, y cualesquiera que sean unos acabados de clientes estarían disponibles para el siguiente paso. Y que no es necesario hacer ningún hash o asignación para el trabajo a realizar. Es 100% dinámica.

http://img355.imageshack.us/img355/7355/mqlogs.png

¿Cómo dividir los archivos de registro de banda entre las distintas instancias de computación?

Por número de elementos o líneas si se trata de un archivo de registro basado en texto.

Con el fin de probar MapReduce, me gustaría sugerir que usted juega con Hadoop.

Otros consejos

  • ¿Puede el concepto de MapReduce realmente ser aplicado al análisis weblogs?

Claro. ¿Qué tipo de datos está almacenando?

  • ¿Es MapReduce la forma más inteligente de hacerlo?

Esto permitiría realizar consultas a través de muchas máquinas de las materias primas a la vez, por lo que sí puede ser útil. Alternativamente, usted podría intentar Sharding .

  • ¿Cómo dividir los archivos de registro de banda entre las distintas instancias de computación?

En general usted distribuir sus datos mediante una consistente algoritmo de hash , por lo que puede agregar fácilmente más instancias posteriores. Usted debe hash lo que sería su clave primaria en una base de datos común. Podría ser un nombre de usuario, una dirección IP, árbitro, página, el anuncio; cualquiera que sea el tema de su registro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top