Teniendo en cuenta que soy el autor de conexión en cascada ...
Mi sugerencia es utilizar cerdo o colmena si tienen sentido para su problema, especialmente cerdo.
Pero si está en el negocio de los datos, y no solo hurgando en sus datos para obtener información, encontrará que el enfoque en cascada tiene mucho más sentido para la mayoría de los problemas que MapReduce sin formato.
Su primer obstáculo con MapReduce sin procesar será pensar en MapReduce. Los problemas triviales son simples en MapReduce, pero es mucho más fácil desarrollar aplicaciones complejas si puede trabajar con un modelo que se asigna más fácilmente a su dominio problemático (filtrar esto, analizar eso, ordenarlos, unir el resto, etc.).
A continuación, se dará cuenta de que una unidad normal de trabajo en Hadoop consiste en múltiples trabajos de MapReduce. Encadenar trabajos juntos es un problema que se puede resolver, pero no debe filtrarse en el código de nivel de dominio de la aplicación, debe estar oculto y ser transparente.
Además, encontrará que refactorizar y crear códigos reutilizables será mucho más difícil si tiene que mover funciones continuamente entre los mapeadores y los reductores. o desde los mapeadores hasta el reductor anterior para obtener una optimización. Lo que lleva al problema de la fragilidad.
Cascading cree en fallar lo más rápido posible. El planificador intenta resolver y satisfacer las dependencias entre todos esos nombres de campo antes de que el clúster de Hadoop incluso esté trabajando. Esto significa que el 90% o más de todos los problemas se encontrarán antes de esperar horas para que su trabajo lo encuentre durante la ejecución.
Puede aliviar esto en código MapReduce sin procesar creando objetos de dominio como Persona o Documento, pero muchas aplicaciones no necesitan todos los campos en sentido descendente. Considere si necesitaba la edad promedio de todos los hombres. No quiere pagar la penalidad de IO de pasar a toda una Persona por la red cuando todo lo que necesita es un género binario y una edad numérica.
Con la semántica a prueba de errores y la unión diferida de sumideros y fuentes, resulta muy fácil crear marcos en cascada que crean flujos en cascada (que se convierten en muchos trabajos de Hadoop MapReduce). Un proyecto en el que estoy involucrado actualmente termina con cientos de trabajos de MapReduce por ejecución, muchos creados a mitad de carrera basados en los comentarios de los datos que se procesan. Busque Cascalog para ver un ejemplo de un marco basado en Clojure para simplemente crear procesos complejos. O Bixo para un conjunto de herramientas de minería web y un marco que es mucho más fácil de personalizar que Nutch.
Finalmente Hadoop nunca se usa solo, eso significa que sus datos siempre se extraen de una fuente externa y se envían a otro después del procesamiento. El secreto sucio acerca de Hadoop es que es un marco de ETL muy efectivo (por lo que es una tontería escuchar a los proveedores de ETL hablar sobre el uso de sus herramientas para enviar/extraer datos desde/hacia Hadoop). La conexión en cascada alivia este inconveniente al permitirle escribir sus operaciones, aplicaciones y pruebas unitarias independientes de los puntos finales de integración. La conexión en cascada se utiliza en producción para cargar sistemas como Membase, Memcached, Aster Data, Elastic Search, HBase, Hypertable, Cassandra, etc. (Desafortunadamente no todos los adaptadores han sido publicados por sus autores)
Si lo desea, por favor envíeme una lista de los problemas que está experimentando con la interfaz. Estoy constantemente buscando mejores formas de mejorar la API y la documentación, y la comunidad de usuarios siempre está dispuesta a ayudar.
¿Hay algún otro libro para aprender en cascada aparte de "Flujos de trabajo de empresa con conexión en cascada"? Actualmente estoy leyendo este libro, pero parece que el código en ese libro es algo antiguo. Parece que muchas cosas en Cascading han cambiado desde que se escribió este libro. – Shekhar
Hola Marc ¿Puedes sugerir una solución usando cascada en esta pregunta ...http: //stackoverflow.com/questions/27506306/piping-data-into-jobs-in-hadoop-mr-pig –