2011-01-26 32 views
13

Nos gustaría implementar Hadoop en nuestro sistema para mejorar su rendimiento.Integración Hadoop y MySQL

El proceso funciona de la siguiente manera: Hadoop reunirá datos de la base de datos MySQL y luego los procesará. La salida se exportará a la base de datos MySQL.

¿Es esta una buena implementación? ¿Mejorará esto el rendimiento general de nuestro sistema? ¿Cuáles son los requisitos y esto se ha hecho antes? Un buen tutorial realmente ayudaría.

Gracias

Respuesta

1

Altough no es un uso regular hadoop. Tiene sentido en el siguiente escenario:
a) Si tiene una buena forma de dividir sus datos en las entradas (como las particiones existentes).
b) El procesamiento de cada partición es relativamente pesado. Daría el número de al menos 10 segundos de tiempo de CPU por partición.
Si se cumplen ambas condiciones, podrá aplicar la cantidad deseada de potencia de la CPU para procesar sus datos.
Si está realizando un escaneo o agregación simple, creo que no obtendrá nada. Por otro lado, si vas a ejecutar algunos algoritmos intensivos de CPU en cada partición, entonces tu ganancia puede ser significativa.
También mencionaría un caso separado, si su procesamiento requiere una clasificación masiva de datos. No creo que MySQL sea bueno para clasificar miles de millones de registros. Hadoop lo hará.

+0

Es un uso regular de Hadoop. Ver la arquitectura Lamda. Usar MySQL como capa de velocidad es normativo (aunque también se usan otras herramientas). SQOOP no existiría si esto no fuera normativo. – nick

+0

Por lo general, hadoop tiene sentido cuando agregamos escalabilidad masiva. Ejecutando docenas de mapeadores contra uno MySQL no dará mucha ganancia. El uso habitual es tener hadoop para preprocesar y agregar datos brutos, y luego cargar en RDBMS ... –

2

Hadoop se utiliza para trabajos por lotes basado principalmente en tamaño grande semi datos estructurados .. por lotes en el sentido incluso los trabajos más corta es en el orden de magnitud de minutos. ¿Qué tipo de problema de rendimiento estás enfrentando? Está basado en transformaciones de datos o informes. Dependiendo de esto, esta arquitectura puede ayudar o empeorar las cosas.

0

Estoy de acuerdo con Sai. Estoy usando Hadoop con MySql solo cuando sea necesario. Exporto la tabla a CSV y la cargo a HDFS para procesar datos más rápidamente. Si desea conservar sus datos procesados, tendrá que escribir un trabajo de reductor único que hará algún tipo de batchinserts para mejorar el rendimiento de la inserción.
PERO que realmente depende del tipo de cosas que desea hacer.

+1

Creo que exportarlo a un archivo csv y luego cargarlo en mysql será más rápido que la inserción directa por lotes de salida en db desde hadoop.Más tarde sería una llamada jdbc que es lenta en comparación con la carga de archivos. –

2

Como lo menciona Joe, Sqoop es una gran herramienta del ecosistema Hadoop para importar y exportar datos desde y hacia bases de datos SQL como MySQl.

Si necesita una integración más compleja de MySQL, p. Ej. filtrado o transformación, entonces debería usar un marco de integración o suite de integración para este problema. Eche un vistazo a mi presentación "Big Data beyond Hadoop - How to integrate ALL your data" para obtener más información sobre cómo usar marcos de integración de código abierto y suites de integración con Hadoop.