2009-12-28 10 views
5

Estoy a punto de comenzar un proyecto de mapreduce que se ejecutará en AWS y se me ofrece la opción de usar Java o C++.Hadoop o Hadoop Streaming para MapReduce en AWS

Entiendo que escribir el proyecto en Java me proporcionaría más funcionalidades, sin embargo, C++ también podría hacerlo, a través de Hadoop Streaming.

Eso sí, tengo poca formación en ambos idiomas. Un proyecto similar se ha realizado en C++ y el código está disponible para mí.

Entonces mi pregunta: ¿esta funcionalidad adicional está disponible a través de AWS o solo es relevante si tienes más control sobre la nube? ¿Hay algo más que deba tener en cuenta para tomar una decisión, como la disponibilidad de complementos para hadoop que funcionan mejor con un idioma u otro?

Gracias de antemano

Respuesta

6

usted tiene algunas opciones para ejecutar Hadoop en AWS. Lo más simple es ejecutar sus trabajos de MapReduce a través de su servicio Elastic MapReduce: http://aws.amazon.com/elasticmapreduce. También podría ejecutar un clúster de Hadoop en EC2, como se describe en http://archive.cloudera.com/docs/ec2.html.

Si sospecha que necesitará escribir sus propios formatos de entrada/salida, particionadores y combinadores, le recomendaría usar Java con este último sistema. Si su trabajo es relativamente simple y no planea utilizar su clúster Hadoop para ningún otro fin, le recomiendo que elija el idioma con el que se sienta más cómodo y que use EMR.

De cualquier manera, buena suerte!

Divulgación: soy un fundador de Cloudera.

Saludos, Jeff

+0

gracias por su respuesta, he leído algunas de las presentaciones de cloudera, fueron realmente útiles – aeolist

0

Depende de sus necesidades. ¿Cuál es su entrada/salida? ¿Es un simple archivo de texto? ¿Registros con nuevos delimitadores de línea? ¿Necesita un combinador especial? ¿particionador?

Lo que quiero decir es que, si solo necesitas los conceptos básicos de hadoop, la transmisión estará bien. Pero si necesita un poco más de complejidad (desde el marco de hadoop, no desde su propia lógica comercial), hadoop jar será más flexible.

Sagie

+0

Bueno, mi entrada será una secuencia de texto grande, supongo que en la región de 1-100 GB. Tendré que cortar la secuencia en pedazos. No puedo decirte si necesito algún combinador o particionador especial, ya que todavía tengo que programar el hadoop por mi cuenta, aún en la fase de "tutoriales de lectura". ¿Estará toda la flexibilidad añadida disponible a través de AWS o tal vez se hayan apagado cosas para la seguridad, etc.? – aeolist

+0

También estoy empezando a usar AWS también. Por lo que puedo decir, si usa M/R para procesar archivos de texto con un formato de registros bien conocido, en realidad no importa si usa Hadoop Jar o Streaming. Elija el que le resulte más cómodo (Java vs. C++). Si necesita crear sus propios formatos de entrada/salida personalizados, si necesita comenzar a utilizar HBase, etc. vaya a Java. No tendrá esa flexabilidad en la transmisión. BTW, ¿qué pasa con las tuberías de hadoop? – sagie

1

yo decidimos la flexibilidad de Java era más importante que hacer frente a las posibles deficiencias de ajustar mi actual código de C++ para Java.

Gracias por todas sus respuestas.

Cuestiones relacionadas