myDIG는 웹을 크롤링하고, 정보를 추출하고, 추출로부터 지식 그래프(KG)를 구축하고, KG를 쿼리하기 위한 쉬운 사용자 인터페이스를 제공하는 파이프라인을 구축하는 도구입니다. 프로젝트 웹페이지는 DIG입니다.
myDIG를 노트북이나 서버에 설치하고 이를 사용하여 웹 페이지, CSV, JSON 및 기타 다양한 파일 모음에 대한 도메인별 검색 애플리케이션을 구축할 수 있습니다.
설치 가이드는 아래에 있습니다
사용자 가이드
고급 사용자 가이드
운영 체제: Linux, MacOS 또는 Windows
시스템 요구 사항: 최소 8GB 메모리
myDIG는 Docker를 사용하여 설치를 쉽게 만듭니다.
Docker 및 Docker Compose를 설치합니다.
최소 6GB 의 메모리를 사용하도록 Docker를 구성합니다. DIG는 4GB 미만에서는 작동하지 않으며, 6GB 미만에서는 불안정합니다.
Mac 및 Windows에서는 Docker 애플리케이션의 기본 설정 메뉴에서 Docker 메모리를 설정할 수 있습니다. 자세한 내용은 Docker 설명서 페이지(Mac Docker 또는 Windows Docker)에 나와 있습니다. Linux에서 Docker는 커널의 LXC를 기반으로 구축되므로 최신 버전의 커널과 호스트에 충분한 메모리가 필요합니다.
이 저장소를 복제하세요.
git clone https://github.com/usc-isi-i2/dig-etl-engine.git
myDIG는 프로젝트 파일을 디스크에 저장하므로 파일을 저장할 위치를 알려주어야 합니다. myDIG를 설치한 폴더의 .env
파일에 이 정보를 제공합니다. 설치에 사용 가능한 예제 환경 파일을 복사하여 .env
파일을 만듭니다.
cp ./dig-etl-engine/.env.example ./dig-etl-engine/.env
.env
파일을 생성한 후 텍스트 편집기에서 열고 사용자 정의합니다. 다음은 일반적인 .env
파일입니다.
COMPOSE_PROJECT_NAME=dig DIG_PROJECTS_DIR_PATH=/Users/pszekely/Documents/mydig-projects DOMAIN=localhost PORT=12497 NUM_ETK_PROCESSES=2 KAFKA_NUM_PARTITIONS=2 DIG_AUTH_USER=admin DIG_AUTH_PASSWORD=123
COMPOSE_PROJECT_NAME
: myDIG 인스턴스가 하나만 있는 경우 이 인스턴스를 그대로 둡니다. 이는 docker-compose 인스턴스를 구별하기 위한 접두사입니다.
DIG_PROJECTS_DIR_PATH
: myDIG가 프로젝트 파일을 저장할 폴더입니다. 디렉토리가 존재하는지 확인하십시오. 기본 설정은 파일을 ./mydig-projects
에 저장하므로 기본 폴더를 사용하려면 mkdir ./mydig-projects
수행하세요.
DOMAIN
: 다른 컴퓨터에서 액세스할 서버에 설치하는 경우 이를 변경합니다.
PORT
: myDIG가 실행되는 포트를 사용자 정의할 수 있습니다.
NUM_ETK_PROCESSES
: myDIG는 다중 처리를 사용하여 파일을 수집합니다. 머신에 있는 코어 수에 따라 이 숫자를 설정하십시오. 노트북에서는 4개 이상으로 설정하지 않는 것이 좋습니다.
KAFKA_NUM_PARTITIONS
: 주제별 파티션 번호입니다. NUM_ETK_PROCESSES
와 동일한 값으로 설정하세요. Kafka 컨테이너를 삭제하지 않는 한 Kafka 주제의 기존 파티션 번호에는 영향을 미치지 않습니다(Kafka 주제의 모든 데이터가 손실됩니다).
DIG_AUTH_USER, DIG_AUTH_PASSWORD
: myDIG는 nginx를 사용하여 액세스를 제어합니다.
Linux에서 작업하는 경우 다음 추가 단계를 수행하세요.
chmod 666 logstash/sandbox/settings/logstash.yml sysctl -w vm.max_map_count=262144 # replace <DIG_PROJECTS_DIR_PATH> to you own project path mkdir -p <DIG_PROJECTS_DIR_PATH>/.es/data chown -R 1000:1000 <DIG_PROJECTS_DIR_PATH>/.es
vm.max_map_count
영구적으로 설정하려면/etc/sysctl.conf
에서 업데이트하고sysctl -p /etc/sysctl.conf
를 통해 sysctl 설정을 다시 로드하세요.
기본 Docker 설치(Docker 메모리가 부족한 경우)를 볼륨으로 이동
sudo mv /var/lib/docker /path_with_more_space sudo ln -s /path_with_more_space /var/lib/docker
myDIG를 실행하려면 다음을 수행하십시오.
./engine.sh up
Docker 명령은 일부 OS에서 높은 권한을 얻으며 그 앞에
sudo
추가합니다../engine.sh up -d
실행하여 myDIG를 백그라운드에서 데몬 프로세스로 실행할 수도 있습니다. 모든 서비스가 작동되는지 확인하려면 몇 분 정도 기다리십시오.
myDIG를 중지하려면 다음을 수행하십시오.
./engine.sh stop
(모든 컨테이너를 삭제하려면 /engine.sh down
사용하세요)
myDIG가 실행되면 브라우저로 이동하여 http://localhost:12497/mydig/ui/
방문하십시오.
참고: myDIG는 현재 Chrome에서만 작동합니다.
myDIG를 사용하려면 사용자 가이드를 참조하세요.
myDIG v2는 현재 알파 버전이며, 크고 호환되지 않는 몇 가지 변경 사항이 있습니다.
구성요소의 데이터, 구성 및 로그는 DIG_PROJECTS_DIR_PATH/.*
에 없습니다.
Kafka 대기열 데이터는 ./engine.sh down
수행한 후에도 정리되지 않습니다. DIG_PROJECTS_DIR_PATH/.kafka
삭제한 다음 엔진을 다시 시작해야 합니다( NUM_ETK_PROCESSES
변경하는 경우).
더 이상 기본 리소스가 없습니다. 리소스 파일(용어집)이 호환되지 않으면 삭제해 주세요.
더 이상 custom_etk_config.json
또는 additional_etk_config/*
없습니다. 대신 생성된 ETK 모듈은 working_dir/generated_em
에 있고 추가 모듈은 working_dir/additional_ems
에 있습니다.
ETK 로그는 완전히 구현 및 테스트되지 않았습니다. 런타임 로그는 working_dir/etk_worker_*.log
에 추가됩니다.
Spacy 규칙 편집기가 작동하지 않습니다.
ELK(Elastic Search, LogStash & Kibana) 구성 요소가 5.6.4로 업그레이드되었으며 myDIG의 다른 서비스도 업데이트되었습니다. 당신이 해야 할 일은:
docker-compose down
수행하세요.
DIG_PROJECTS_DIR_PATH/.es
디렉토리를 삭제합니다.
이전 Elastic Search 및 Kibana의 모든 데이터와 인덱스가 손실됩니다.
2017년 10월 20일에 랜드마크 도구(1.1.0)에 호환되지 않는 변경 사항이 있어 정의한 규칙은 새 시스템으로 업그레이드할 때 삭제됩니다. 다음 지침을 따르십시오.
DIG_PROJECTS_DIR_PATH/.landmark
삭제
DIG_PROJECTS_DIR_PATH/<project_name>/landmark_rules/*
에서 파일 삭제
myDIG 웹 서비스(1.0.11)에도 호환되지 않는 변경 사항이 있습니다. 충돌하는 대신 TLD 테이블에 N/A
가 표시되므로 원하는 숫자를 업데이트해야 합니다.
MyDIG 웹 서비스 GUI: http://localhost:12497/mydig/ui/
탄력적 검색: http://localhost:12497/es/
키바나: http://localhost:12497/kibana/
Kafka 관리자(선택 사항): http://localhost:12497/kafka_manager/
# run with ache ./engine.sh +ache up # run with ache and rss crawler in background ./engine.sh +ache +rss up -d # stop containers ./engine.sh stop # drop containers ./engine.sh down
.env
파일에 쉼표로 구분된 추가 기능 이름을 추가합니다.
DIG_ADD_ONS=ache,rss
그런 다음 간단히 ./engine.sh up
수행하십시오. 런타임 시 추가 추가 기능을 호출할 수도 있습니다: ./engine.sh +dev up
.
ache
: ACHE 크롤러(출시 예정)
rss
: RSS 피드 크롤러(출시 예정)
kafka-manager
: 카프카 관리자.
dev
: 개발 모드.
COMPOSE_PROJECT_NAME=dig DIG_PROJECTS_DIR_PATH=./../mydig-projects DOMAIN=localhost PORT=12497 NUM_ETK_PROCESSES=2 KAFKA_NUM_PARTITIONS=2 DIG_AUTH_USER=admin DIG_AUTH_PASSWORD=123 DIG_ADD_ONS=ache KAFKA_HEAP_SIZE=512m ZK_HEAP_SIZE=512m LS_HEAP_SIZE=512m ES_HEAP_SIZE=1g DIG_NET_SUBNET=172.30.0.0/16 DIG_NET_KAFKA_IP=172.30.0.200 # only works in development mode MYDIG_DIR_PATH=./../mydig-webservice ETK_DIR_PATH=./../etk SPACY_DIR_PATH=./../spacy-ui RSS_DIR_PATH=./../dig-rss-feed-crawler
docker-compose 파일의 일부 docker 이미지( latest
태그가 지정됨)가 업데이트된 경우 docker-compose pull <service name>
먼저 실행하세요.
Kafka 대기열의 데이터는 2일 후에 정리됩니다. 데이터를 즉시 삭제하려면 kafka 컨테이너를 삭제하세요.
자체 ETK 구성을 실행하려면 이 파일의 이름을 custom_etk_config.json
으로 지정하고 DIG_PROJECTS_DIR_PATH/<project_name>/working_dir/
에 넣으세요.
추가 ETK 구성 파일이 있는 경우 해당 파일을 DIG_PROJECTS_DIR_PATH/<project_name>/working_dir/additional_etk_config/
에 붙여넣으세요(없는 경우 additional_etk_config
디렉터리 생성).
사용자 정의 ETK 구성 또는 추가 etk 구성을 사용하는 경우 이러한 구성 파일의 모든 파일 경로를 관리해야 합니다. DIG_PROJECTS_DIR_PATH/<project_name>
docker의 /shared_data/projects/<project_name>
에 매핑되므로 구성에서 사용한 모든 경로가 이 접두사로 시작하는지 확인하세요.
모든 ElasticSearch 데이터를 정리하려면 DIG_PROJECTS_DIR_PATH
에서 .es
디렉터리를 제거하세요.
모든 랜드마크 도구의 데이터베이스 데이터를 정리하려면 DIG_PROJECTS_DIR_PATH
에서 .landmark
디렉터리를 제거하세요. 그러나 이로 인해 게시된 규칙을 추적할 수 없게 됩니다.
Linux의 경우 호스트 시스템에서 docker 네트워크에 액세스할 수 없는 경우: 1. docker 컨테이너를 중지합니다. 2. docker network ls
수행하여 dig_net
의 ID를 찾고 ifconfig
에서 이 ID를 찾습니다. ifconfig <interface id> down
수행하여 이 네트워크 인터페이스를 삭제합니다. 도커 서비스를 다시 시작하십시오.
Linux의 경우 dig_net
에서 DNS가 제대로 작동하지 않는 경우 이 게시물을 참조하세요.
Linux에서는 잠재적인 Elastic Search 문제에 대한 솔루션을 여기에서 찾을 수 있습니다.
docker 네트워크 충돌이 있는 경우 docker network rm <network id>
사용하여 충돌하는 네트워크를 제거하세요.
POST /create_project
{ "project_name" : "new_project" }
POST /run_etk
{ "project_name" : "new_project", "number_of_workers": 4, "input_offset": "seek_to_end", // optional "output_offset": "seek_to_end" // optional }
POST /kill_etk
{ "project_name" : "new_project", "input_offset": "seek_to_end", // optional "output_offset": "seek_to_end" // optional }
.env.example
에서 .env
파일을 생성하고 환경 변수를 변경합니다.
샌드박스 버전을 보려면 ./engine.sh up
실행하세요.
프로덕션 버전의 경우 docker-compose -f docker-compose-production.yml up
실행합니다.
DIG ETL 엔진: 9999
카프카: 9092
사육사: 2181
엘라스틱서치: 9200, 9300
사포: 9876
발굴 UI: 8080
myDIG: 9879(ws), 9880(gui), 9881(spacy ui), 12121(데몬, localhost에 바인딩)
랜드마크 도구: 3333, 5000, 3306
Logstash: 5959(udp, etk log에서 사용)
키바나: 5601
엔진엑스: 80
dig_net
Docker compose의 LAN입니다.
Nginx 이미지 빌드:
docker build -t uscisii2/nginx:auth-1.0 nginx/.
ETL 이미지 빌드:
# git commit all changes first, then ./release_docker.sh tag git push --tags # update DIG_ETL_ENGINE_VERSION in file VERSION ./release_docker.sh build ./release_docker.sh push
개발 모드 호출:
# clone a new etl to avoid conflict git clone https://github.com/usc-isi-i2/dig-etl-engine.git dig-etl-engine-dev # swith to dev branch or other feature branches git checkout dev # create .env from .env.example # change `COMPOSE_PROJECT_NAME` in .env from `dig` to `digdev` # you also need a new project folder # run docker in dev branch ./engine.sh up # run docker in dev mode (optional) ./engine.sh +dev up
auto_offset_resetedit
값 유형은 문자열입니다.
이 설정에는 기본값이 없습니다.
Kafka에 초기 오프셋이 없거나 오프셋이 범위를 벗어난 경우 수행할 작업:
가장 빠른: 오프셋을 가장 빠른 오프셋으로 자동 재설정합니다.
최신: 오프셋을 최신 오프셋으로 자동 재설정합니다.
없음: 소비자 그룹에 대한 이전 오프셋이 발견되지 않은 경우 소비자에게 예외를 발생시킵니다.
그 밖의 것: 소비자에게 예외를 던집니다.
bootstrap_servers
값 유형은 문자열입니다.
기본값은 "localhost:9092"입니다.
클러스터에 대한 초기 연결을 설정하는 데 사용할 URL 목록입니다. 이 목록은 호스트1:포트1,호스트2:포트2 형식이어야 합니다. 이러한 URL은 전체 클러스터 구성원(동적으로 변경될 수 있음)을 검색하기 위한 초기 연결에만 사용되므로 이 목록에 전체 서버 세트가 포함될 필요는 없습니다. 하지만 서버가 다운된 경우를 대비해 둘 이상을 원합니다.)
consumer_threads
값 유형은 숫자입니다.
기본값은 1입니다.
이상적으로는 완벽한 균형을 위해 파티션 수만큼 스레드가 있어야 합니다. 파티션보다 스레드가 많으면 일부 스레드가 유휴 상태가 된다는 의미입니다.
group_id
값 유형은 문자열입니다.
기본값은 "logstash"입니다.
이 소비자가 속한 그룹의 식별자입니다. 소비자 그룹은 여러 프로세서로 구성된 단일 논리적 가입자입니다. 주제의 메시지는 동일한 group_id를 가진 모든 Logstash 인스턴스에 배포됩니다.
topics
값 유형은 배열입니다.
기본값은 ["logstash"]입니다.
구독할 주제 목록은 기본값이 ["logstash"]입니다.