Genie es un motor federado de orquestación y ejecución de Big Data desarrollado por Netflix.
El valor de Genie se describe mejor en términos del problema que resuelve.
La infraestructura de Big Data es compleja y está en constante evolución.
Los consumidores de datos (científicos de datos u otras aplicaciones) deben superar muchos obstáculos para poder ejecutar una consulta sencilla:
Lo que funciona hoy, puede que no funcione mañana. Es posible que el clúster se haya movido, que los binarios ya no sean compatibles, etc.
Multiplique esta sobrecarga por la cantidad de consumidores de datos y obtendrá una gran pérdida de tiempo (¡y dolor!).
Los proveedores de infraestructura de datos enfrentan un conjunto diferente de problemas:
Genie está diseñado para ubicarse en el límite de estos dos mundos y simplificar la vida de las personas de ambos lados.
Un científico de datos puede "frotar la lámpara mágica" y simplemente decir "Genio, ejecuta la consulta 'Q' usando el motor SparkSQL contra los datos de producción". Genie se encarga de todos los detalles esenciales. Reúne dinámicamente los binarios y las configuraciones necesarios, ejecuta el trabajo, lo monitorea, notifica al usuario cuando se completa y hace que los datos de salida estén disponibles para uso inmediato y futuro.
Los proveedores de infraestructura de Big data trabajan con Genie poniendo a disposición recursos para su uso (clústeres, binarios, etc.) e incorporando la lógica mágica de la que el usuario no necesita preocuparse: ¿a qué clúster se debe enrutar una consulta determinada? ¿Con qué versión de Spark se debe ejecutar una consulta determinada? ¿Este usuario tiene permiso para acceder a estos datos? etc. Además, los detalles de cada trabajo se registran para su posterior auditoría o depuración.
Genie está diseñado desde cero para ser muy flexible y personalizable. Para más detalles visita la documentación oficial.
Las compilaciones de Genie se ejecutan en Travis CI aquí.
Rama | Construir | Cobertura (coveralls.io) |
---|---|---|
maestro (4.2.x) | ||
4.1.x | ||
4.0.x |
genie-app
Servidor de servicio Genie autónomo.
genie-agent-app
Ejecutor de trabajos Genie CLI autónomo.
genie-client
El cliente Genie interactúa con el servicio a través de la API REST.
genie-web
La biblioteca principal del servidor se puede volver a empaquetar para inyectar y anular componentes del servidor.
genie-agent
La biblioteca del agente principal se puede volver a empaquetar para inyectar y anular componentes.
genie-common
, genie-common-internal
, genie-common-external
Bibliotecas de componentes internos compartidas por los módulos de servidor, agente y cliente.
genie-proto
Mensajes Protobuf y definición de servicios gRPC compartidos por servidor y agente. Esta no es una API pública destinada a ser utilizada por otros clientes.
genie-docs
, genie-demo
Documentación y aplicación demo.
genie-test
, genie-test-web
Clases de prueba y utilidades compartidas por otros módulos.
genie-ui
Interfaz de usuario de JavaScript para buscar y visualizar trabajos, clústeres y comandos.
genie-swagger
Autoconfiguración de Swagger vía Spring Fox. Agregue al artefacto de implementación final del servidor para habilitarlo.
Genie publica en Maven Central y Docker Hub
Consulte la sección de demostración de la documentación para ver ejemplos. Y a la sección de configuración para obtener instrucciones más detalladas para configurar Genie.
El cliente Genie Python está alojado en un repositorio diferente.
Para obtener una explicación detallada de la arquitectura de Genie, casos de uso, documentación de API, demostraciones, guías de implementación y personalización, y más, visite la documentación de Genie.
Para contactar a los desarrolladores de Genie con preguntas y sugerencias, utilice Problemas de GitHub.