2010-03-19 20 views
6

He leído un poco de documentación sobre hadoop y he visto los impresionantes resultados. Tengo una visión más amplia, pero me resulta difícil si se ajusta a nuestra configuración. programación isnt pregunta relacionada, pero estoy deseoso de obtener la opinión de las personas que actualmente trabajan con Hadoop y cómo encajaría nuestra configuración:pregunta de principiantes de hadoop

  • Utilizamos Oracle para backend
  • Java (Struts2/servlets/iBatis) para frontend
  • Cada noche obtenemos datos que deben resumirse. esto se ejecuta como un proceso por lotes (toma 5 horas)

Estamos buscando una manera de reducir esas 5 horas a un tiempo más corto.

¿Dónde encajaría hadoop en esta imagen? ¿Podemos seguir usando Oracle incluso después de hadoop?

+0

¿Qué volumen de datos [GB o TB] y qué tipo de resumen? –

+0

sqoop es una buena herramienta si necesita datos de Oracle para importar a hadoop – wlk

Respuesta

4

Lo más probable es que pueda reducir drásticamente el tiempo transcurrido de ese proceso por lotes con un ajuste directo.Ofrezco este análisis sobre la base simple de la experiencia pasada. Los procesos por lotes tienden a escribirse muy mal, precisamente porque son autónomos y, por lo tanto, no tienen usuarios airados que exigen mejores tiempos de respuesta.

Ciertamente, no creo que tenga ningún sentido invertir mucho tiempo y energía en volver a implementar nuestra aplicación en una nueva tecnología, sin importar qué tan fresca y fresca sea, hasta que hayamos agotado las capacidades. de nuestra arquitectura actual.

Si desea obtener consejos específicos sobre cómo ajustar su consulta por lotes, esa sería una nueva pregunta.

2

Hadoop está diseñado para paralelizar un trabajo en varias máquinas. Para determinar si será un buen candidato para su instalación, hágase las siguientes preguntas:

  • ¿Tengo muchas máquinas en las que se puede ejecutar Hadoop, o estoy dispuesto a gastar dinero en algo así como EC2?

  • ¿Mi trabajo es paralelizable? (Si su proceso por lotes de 5 horas consiste en 30 tareas de 10 minutos que deben ejecutarse en secuencia, Hadoop no lo ayudará).

  • ¿Mis datos requieren acceso aleatorio? (Esto es realmente bastante significativo: Hadoop es excelente para el acceso secuencial y terrible para el acceso aleatorio. En el último caso, no verá la aceleración suficiente para justificar el trabajo/costo adicional).

En cuanto a donde "cabe", le da a Hadoop un montón de datos y le devuelve la salida. Una forma de pensarlo es como un proceso gigante de Unix: los datos entran, salen los datos. Lo que haces con él es tu negocio. (Esta es, por supuesto, una visión demasiado simplificada, pero se entiende la idea). Así que sí, aún podrá escribir datos en su base de datos Oracle.

+0

el segundo paso es un error en mi caso. aunque no son tareas de 10 minutos, pero cada tarea depende de la finalización de la tarea anterior. ¿Hay alguna otra solución o solo debemos concentrarnos en optimizar nuestras consultas? – Omnipresent

+0

Bueno, si las tareas individuales son de larga duración, puede paralelizar cada una de ellas. Supongamos que tiene cinco tareas que requieren una hora cada una. Si tuviera un grupo de cinco máquinas, en teoría podría acelerar una tarea de hasta 12 minutos (60/5). También podría usar el mismo clúster para ejecutar cada una de las tareas, por lo que reduciría su tiempo total a una hora en lugar de 5. Si las tareas son cortas, no verá este beneficio ya que la sobrecarga de la configuración del trabajo superará la aceleración. Entonces, para resumir, esto funcionará si puede dividir su trabajo en piezas individuales que son ambas – danben

0

El sistema de archivos distribuidos de Hadoop admite el procesamiento por lotes altamente paralelo de datos utilizando MapReduce.

De modo que su proceso actual tarda 5 horas en resumir los datos. Del bate, las tareas de resumen general son uno de los 'tipos' de trabajo en los que MapReduce sobresale. Sin embargo, necesita comprender el tiempo en que sus requisitos de procesamiento se traducirán en un trabajo de MapReduce. Con esto quiero decir, ¿puedes lograr los resúmenes que necesitas utilizando los pares clave/valor que MapReduce te limita a usar?

Hadoop requiere un clúster de máquinas para funcionar. ¿Tiene hardware para soportar un clúster? Esto generalmente se reduce a la cantidad de datos que está almacenando en el HDFS y también a la velocidad con la que desea procesar los datos. Generalmente cuando se ejecuta MapReduce en un Hadoop, cuantas más máquinas tenga, más datos podrá almacenar o más rápido ejecutará un trabajo. Tener una idea de la cantidad de datos que procesa cada noche ayudaría mucho aquí.

Aún puede utilizar Oracle. Puede usar Hadoop/MapReduce para hacer el crujido de datos y luego usar un código personalizado para insertar los datos de resumen en un DB de Oracle.

Cuestiones relacionadas