2010-06-19 20 views
5

Estoy empezando a aprender Hadoop, y me pregunto lo siguiente: supongamos que tengo un montón de grandes tablas de producción de MySQL que quiero analizar.Extrayendo datos de MySQL en Hadoop

  1. Parece como si tuviera que volcar todas las tablas en archivos de texto, con el fin de ponerlos en el sistema de archivos Hadoop - si esto es correcto, o hay alguna manera de que la colmena o cerdo o lo pueden tener acceso a los datos de MySQL directamente?
  2. Si elimino todas las tablas de producción en archivos de texto, ¿debo preocuparme por afectar el rendimiento de producción durante el volcado? (¿Depende de qué motor de almacenamiento utilizan las tablas? ¿Qué debo hacer si es así?)
  3. ¿Es mejor volcar cada tabla en un solo archivo o dividir cada tabla en 64mb (o lo que sea que mi tamaño de bloque sea) archivos?

Respuesta

10

La importación de datos de mysql se puede hacer muy fácilmente. Te recomiendo que utilices la distribución hadoop de Cloudera, con el programa llamado 'sqoop' que proporciona una interfaz muy simple para importar datos directamente desde mysql (también se admiten otras bases de datos). Sqoop se puede usar con mysqldump o consulta normal de mysql (seleccione * ...). Con esta herramienta no es necesario dividir manualmente las tablas en archivos. Pero para hadoop es mucho mejor tener un archivo grande.

Enlaces de interés:
Sqoop User Guide

+0

1 para SQOOP ref –

1

2)
Dado que no sé su entorno voy a Aire en la caja fuerte, lado - SÍ, se preocupan por afectar el rendimiento de la producción.

Dependiendo de la frecuencia y la cantidad de datos que se escriban, es posible que el proceso se realice en un tiempo aceptable, especialmente si solo está escribiendo datos nuevos o modificados. [sujeto a la complejidad de sus consultas]

Si no necesita tiempo real o sus servidores tienen periodos típicamente cuando están infrautilizados (¿de la noche a la mañana?), entonces podría crear los archivos en este momento.

Dependiendo de cómo tenga su configuración de entorno, podría replicar/iniciar sesión en servidores de bases de datos específicas cuyo único trabajo es crear su (s) archivo (s) de datos.


3)
No hay necesidad de dividir el archivo, HDFS se encargará de dividir el archivo de datos en bock y replicar el clúster. Por defecto, se dividirá automáticamente en bloques de datos de 64 MB.
ver - Apache - HDFS Architecture

re: Wojtek respuesta - SQOOP luxación (no funciona en comentarios)

Si tiene más preguntas o información entorno específico, háganoslo saber HTH Ralph