Este proyecto es un rastreador web y motor de búsqueda de conjuntos de datos, diseñado específicamente para tareas de aumento de datos en aprendizaje automático. Es capaz de encontrar conjuntos de datos en diferentes repositorios e indexarlos para su posterior recuperación.
La documentación está disponible aquí.
Se divide en varios componentes:
datamart_geo
. Contiene datos sobre áreas administrativas extraídas de Wikidata y OpenStreetMap. Vive en su propio repositorio y se utiliza aquí como submódulo.datamart_profiler
. Esto puede ser instalado por los clientes y permitirá que la biblioteca del cliente genere perfiles de conjuntos de datos localmente en lugar de enviarlos al servidor. También lo utilizan los servicios apiserver y perfilador.datamart_materialize
. Esto se utiliza para materializar el conjunto de datos de las diversas fuentes que admite Auctus. Los clientes pueden instalarlo, lo que les permitirá materializar conjuntos de datos localmente en lugar de utilizar el servidor como proxy.datamart_augmentation
. Esto realiza la unión o unión de dos conjuntos de datos y lo utiliza el servicio apiserver, pero posiblemente podría usarse de forma independiente.datamart_core
. Contiene código común para servicios. Sólo se utiliza para los componentes del servidor. El código de bloqueo del sistema de archivos está separado como datamart_fslock
por razones de rendimiento (debe importarse rápidamente).Elasticsearch se utiliza como índice de búsqueda y almacena un documento por conjunto de datos conocido.
Los servicios intercambian mensajes a través de RabbitMQ
, lo que nos permite tener patrones de mensajería complejos con semántica de cola y reintento, y patrones complejos como las consultas bajo demanda.
El sistema se está ejecutando actualmente en https://auctus.vida-nyu.org/. Puede ver el estado del sistema en https://grafana.auctus.vida-nyu.org/.
Para implementar el sistema localmente usando Docker-Compose, siga estos pasos:
Asegúrese de haber revisado el submódulo con git submodule init && git submodule update
Asegúrate de tener Git LFS instalado y configurado ( git lfs install
)
Copie env.default a .env y actualice las variables allí. Es posible que desee actualizar la contraseña para una implementación de producción.
Asegúrese de que su nodo esté configurado para ejecutar Elasticsearch. Probablemente tendrás que aumentar el límite de mmap.
API_URL
es la URL en la que los contenedores del apiserver serán visibles para los clientes. En una implementación de producción, probablemente se trate de una URL HTTPS pública. Puede ser la misma URL en la que se entregará el componente "coordinador" si se utiliza un proxy inverso (consulte nginx.conf).
Para ejecutar scripts localmente, puede cargar las variables de entorno en su shell ejecutando: . scripts/load_env.sh
(esos son scripts de espacio de puntos... )
Ejecute scripts/setup.sh
para inicializar los volúmenes de datos. Esto establecerá los permisos correctos en los volumes/
subdirectorios.
Si alguna vez desea comenzar desde cero, puede eliminar volumes/
pero asegúrese de ejecutar scripts/setup.sh
nuevamente después para establecer los permisos.
$ docker-compose build --build-arg version=$(git describe) apiserver
$ docker-compose up -d elasticsearch rabbitmq redis minio lazo
Estos tardarán unos segundos en ponerse en funcionamiento. Luego puedes iniciar los otros componentes:
$ docker-compose up -d cache-cleaner coordinator profiler apiserver apilb frontend
Puede utilizar la opción --scale
para iniciar más contenedores de perfilador o apiserver, por ejemplo:
$ docker-compose up -d --scale profiler=4 --scale apiserver=8 cache-cleaner coordinator profiler apiserver apilb frontend
Puertos:
$ scripts/docker_import_snapshot.sh
Esto descargará un volcado de Elasticsearch desde auctus.vida-nyu.org y lo importará a su contenedor local de Elasticsearch.
$ docker-compose up -d socrata zenodo
$ docker-compose up -d elasticsearch_exporter prometheus grafana
Prometheus está configurado para encontrar automáticamente los contenedores (ver prometheus.yml)
Se utiliza una imagen RabbitMQ personalizada, con complementos agregados (administración y prometheus).