이 프로젝트는 특히 기계 학습의 데이터 증대 작업을 위한 데이터 세트용 웹 크롤러 및 검색 엔진입니다. 다양한 저장소에서 데이터 세트를 찾고 나중에 검색할 수 있도록 색인을 생성할 수 있습니다.
문서는 여기에서 볼 수 있습니다.
여러 구성 요소로 나뉩니다.
datamart_geo
. 여기에는 Wikidata 및 OpenStreetMap에서 추출한 행정 구역에 대한 데이터가 포함되어 있습니다. 자체 저장소에 있으며 여기서는 하위 모듈로 사용됩니다.datamart_profiler
. 이는 클라이언트가 설치할 수 있으며 클라이언트 라이브러리가 데이터 세트를 서버로 보내는 대신 로컬로 프로파일링할 수 있게 해줍니다. apiserver 및 profiler 서비스에서도 사용됩니다.datamart_materialize
. 이는 Auctus가 지원하는 다양한 소스의 데이터 세트를 구체화하는 데 사용됩니다. 클라이언트가 설치할 수 있으며, 이를 통해 서버를 프록시로 사용하는 대신 로컬로 데이터 세트를 구체화할 수 있습니다.datamart_augmentation
. 이는 두 데이터 세트의 조인 또는 결합을 수행하고 apiserver 서비스에서 사용되지만 독립 실행형으로 사용될 수도 있습니다.datamart_core
. 여기에는 서비스에 대한 공통 코드가 포함되어 있습니다. 서버 구성요소에만 사용됩니다. 파일 시스템 잠금 코드는 성능상의 이유로 datamart_fslock
으로 분리되어 있습니다(빠르게 가져와야 함).Elasticsearch는 검색 인덱스로 사용되며 알려진 데이터세트당 하나의 문서를 저장합니다.
서비스는 RabbitMQ
통해 메시지를 교환하므로 큐잉 및 재시도 의미론이 포함된 복잡한 메시징 패턴과 주문형 쿼리와 같은 복잡한 패턴을 가질 수 있습니다.
이 시스템은 현재 https://auctus.vida-nyu.org/에서 실행되고 있습니다. https://grafana.auctus.vida-nyu.org/에서 시스템 상태를 확인할 수 있습니다.
docker-compose를 사용하여 시스템을 로컬로 배포하려면 다음 단계를 따르세요.
git submodule init && git submodule update
사용하여 하위 모듈을 확인했는지 확인하세요.
Git LFS가 설치 및 구성되어 있는지 확인하세요( git lfs install
).
env.default를 .env에 복사하고 거기에서 변수를 업데이트합니다. 프로덕션 배포에 대한 비밀번호를 업데이트할 수 있습니다.
노드가 Elasticsearch를 실행하도록 설정되어 있는지 확인하세요. 아마도 mmap 제한을 높여야 할 것입니다.
API_URL
은 apiserver 컨테이너가 클라이언트에 표시되는 URL입니다. 프로덕션 배포에서는 아마도 공개 HTTPS URL일 것입니다. 역방향 프록시를 사용하는 경우 "코디네이터" 구성 요소가 제공되는 URL과 동일할 수 있습니다(nginx.conf 참조).
로컬에서 스크립트를 실행하려면 다음을 실행하여 환경 변수를 셸에 로드할 수 있습니다 . scripts/load_env.sh
( 도트 스페이스 스크립트입니다... )
scripts/setup.sh
실행하여 데이터 볼륨을 초기화합니다. 그러면 volumes/
하위 디렉터리에 대한 올바른 권한이 설정됩니다.
처음부터 시작하고 싶다면 volumes/
삭제할 수 있지만 나중에 scripts/setup.sh
다시 실행하여 권한을 설정해야 합니다.
$ docker-compose build --build-arg version=$(git describe) apiserver
$ docker-compose up -d elasticsearch rabbitmq redis minio lazo
시작하고 실행하는 데 몇 초 정도 걸립니다. 그런 다음 다른 구성요소를 시작할 수 있습니다.
$ docker-compose up -d cache-cleaner coordinator profiler apiserver apilb frontend
--scale
옵션을 사용하여 더 많은 프로파일러 또는 apiserver 컨테이너를 시작할 수 있습니다. 예를 들면 다음과 같습니다.
$ docker-compose up -d --scale profiler=4 --scale apiserver=8 cache-cleaner coordinator profiler apiserver apilb frontend
포트:
$ scripts/docker_import_snapshot.sh
그러면 auctus.vida-nyu.org에서 Elasticsearch 덤프를 다운로드하여 로컬 Elasticsearch 컨테이너로 가져옵니다.
$ docker-compose up -d socrata zenodo
$ docker-compose up -d elasticsearch_exporter prometheus grafana
Prometheus는 자동으로 컨테이너를 찾도록 구성되어 있습니다(prometheus.yml 참조).
플러그인(관리 및 프로메테우스)이 추가된 사용자 정의 RabbitMQ 이미지가 사용됩니다.