myDIG é uma ferramenta para construir pipelines que rastreiam a web, extraem informações, constroem um gráfico de conhecimento (KG) a partir das extrações e fornecem uma interface de usuário fácil para consultar o KG. A página do projeto é DIG.
Você pode instalar o myDIG em um laptop ou servidor e usá-lo para construir um aplicativo de pesquisa específico de domínio para qualquer corpus de páginas da web, CSV, JSON e uma variedade de outros arquivos.
o guia de instalação está abaixo
guia do usuário
guia do usuário avançado
Sistemas operacionais: Linux, MacOS ou Windows
Requisitos do sistema: mínimo de 8 GB de memória
myDIG usa Docker para facilitar a instalação:
Instale o Docker e o Docker Compose.
Configure o Docker para usar pelo menos 6 GB de memória. DIG não funcionará com menos de 4GB e é instável com menos de 6GB.
No Mac e no Windows, você pode definir a memória do Docker no menu Preferências do aplicativo Docker. Os detalhes estão nas páginas de documentação do Docker (Mac Docker ou Windows Docker). No Linux, o Docker é construído no LXC do kernel, sendo necessária a versão mais recente do kernel e memória suficiente no host.
Clone este repositório.
git clone https://github.com/usc-isi-i2/dig-etl-engine.git
myDIG armazena os arquivos do seu projeto em seu disco, então você precisa informar onde colocar os arquivos. Você fornece essas informações no arquivo .env
na pasta onde instalou o myDIG. Crie o arquivo .env
copiando o arquivo de ambiente de exemplo disponível em sua instalação.
cp ./dig-etl-engine/.env.example ./dig-etl-engine/.env
Depois de criar seu arquivo .env
, abra-o em um editor de texto e personalize-o. Aqui está um arquivo .env
típico:
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
: deixe este como está se você tiver apenas uma instância myDIG. Este é o prefixo para diferenciar instâncias docker-compose.
DIG_PROJECTS_DIR_PATH
: esta é a pasta onde myDIG irá armazenar os arquivos do seu projeto. Certifique-se de que o diretório exista. A configuração padrão armazenará seus arquivos em ./mydig-projects
, então faça mkdir ./mydig-projects
se quiser usar a pasta padrão.
DOMAIN
: altere se instalar em um servidor que será acessado de outras máquinas.
PORT
: você pode personalizar a porta onde o myDIG é executado.
NUM_ETK_PROCESSES
: myDIG usa multiprocessamento para ingerir arquivos. Defina esse número de acordo com o número de núcleos que você possui na máquina. Não recomendamos configurá-lo para mais de 4 em um laptop.
KAFKA_NUM_PARTITIONS
: números de partição por tópico. Defina-o com o mesmo valor de NUM_ETK_PROCESSES
. Isso não afetará o número da partição existente nos tópicos do Kafka, a menos que você elimine o contêiner do Kafka (você perderá todos os dados nos tópicos do Kafka).
DIG_AUTH_USER, DIG_AUTH_PASSWORD
: myDIG usa nginx para controlar o acesso.
Se você estiver trabalhando no Linux, execute estas etapas adicionais:
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
Para definir
vm.max_map_count
permanentemente, atualize-o em/etc/sysctl.conf
e recarregue as configurações do sysctl porsysctl -p /etc/sysctl.conf
.
Mova a instalação padrão do docker (se o docker ficar sem memória) para um volume
sudo mv /var/lib/docker /path_with_more_space sudo ln -s /path_with_more_space /var/lib/docker
Para executar o myDIG faça:
./engine.sh up
Os comandos do Docker adquirem altos privilégios em alguns sistemas operacionais, adicione
sudo
antes deles. Você também pode executar./engine.sh up -d
para executar myDIG como um processo daemon em segundo plano. Aguarde alguns minutos para garantir que todos os serviços estejam funcionando.
Para parar o myDIG faça:
./engine.sh stop
(Use /engine.sh down
para eliminar todos os contêineres)
Assim que o myDIG estiver em execução, vá para o seu navegador e visite http://localhost:12497/mydig/ui/
Nota: myDIG atualmente funciona apenas no Chrome
Para usar myDIG, consulte o guia do usuário
myDIG v2 está agora em alfa, existem algumas mudanças grandes e incompatíveis.
dados, configurações e logs de componentes não estão em DIG_PROJECTS_DIR_PATH/.*
.
Os dados da fila Kafka NÃO serão limpos mesmo depois de executar ./engine.sh down
, você precisa excluir DIG_PROJECTS_DIR_PATH/.kafka
e reiniciar o mecanismo (se você alterar NUM_ETK_PROCESSES
).
Não há mais recurso padrão. Se um arquivo de recurso (glossário) não for compatível, exclua-o.
Não há mais custom_etk_config.json
ou additional_etk_config/*
; em vez disso, os módulos ETK gerados estão working_dir/generated_em
e os módulos adicionais estão working_dir/additional_ems
.
O log ETK não está totalmente implementado e testado. Os logs de tempo de execução serão APPEND para working_dir/etk_worker_*.log
.
O editor de regras Spacy não está funcionando.
Os componentes ELK (Elastic Search, LogStash e Kibana) foram atualizados para 5.6.4 e outros serviços no myDIG também foram atualizados. O que você precisa fazer é:
Faça docker-compose down
Excluir diretório DIG_PROJECTS_DIR_PATH/.es
.
Você perderá todos os dados e índices do Elastic Search e do Kibana anteriores.
Em 20 de outubro de 2017, houve alterações incompatíveis na ferramenta Landmark (1.1.0), as regras que você definiu serão excluídas quando você atualizar para o novo sistema. Por favor, siga estas instruções:
Excluir DIG_PROJECTS_DIR_PATH/.landmark
Exclua arquivos em DIG_PROJECTS_DIR_PATH/<project_name>/landmark_rules/*
Também existem alterações incompatíveis no webservice myDIG (1.0.11). Em vez de travar, ele mostrará N/A
s na tabela de TLD, você precisa atualizar o número desejado.
GUI do serviço web MyDIG http://localhost:12497/mydig/ui/
Pesquisa elástica: http://localhost:12497/es/
Kibana: http://localhost:12497/kibana/
Gerenciador Kafka (opcional): 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
No arquivo .env
, adicione nomes de complementos separados por vírgula:
DIG_ADD_ONS=ache,rss
Então, basta fazer ./engine.sh up
. Você também pode invocar complementos adicionais em tempo de execução: ./engine.sh +dev up
.
ache
: ACHE Crawler (em breve).
rss
: Rastreador de feed RSS (em breve).
kafka-manager
: Gerenciador Kafka.
dev
: modo de desenvolvimento.
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
Se algumas das imagens do docker (marcadas como latest
) no arquivo docker-compose forem atualizadas, execute docker-compose pull <service name>
primeiro.
Os dados na fila kafka serão limpos após dois dias. Se você quiser excluir os dados imediatamente, elimine o contêiner kafka.
Se você deseja executar sua própria configuração ETK, nomeie este arquivo como custom_etk_config.json
e coloque-o em DIG_PROJECTS_DIR_PATH/<project_name>/working_dir/
.
Se você tiver arquivos de configuração ETK adicionais, cole-os em DIG_PROJECTS_DIR_PATH/<project_name>/working_dir/additional_etk_config/
(crie o diretório additional_etk_config
se não estiver lá).
Se você estiver usando configuração ETK personalizada ou configurações etk adicionais, será necessário cuidar de todos os caminhos de arquivo nesses arquivos de configuração. DIG_PROJECTS_DIR_PATH/<project_name>
será mapeado para /shared_data/projects/<project_name>
na janela de encaixe, portanto, certifique-se de que todos os caminhos usados na configuração comecem com este prefixo.
Se você deseja limpar todos os dados do ElasticSearch, remova o diretório .es
do seu DIG_PROJECTS_DIR_PATH
.
Se você deseja limpar todos os dados do banco de dados da Landmark Tool, remova o diretório .landmark
em seu DIG_PROJECTS_DIR_PATH
. Mas isso tornará as regras publicadas indetectáveis.
No Linux, se você não conseguir acessar a rede docker a partir da máquina host: 1. pare os contêineres do docker 2. faça docker network ls
para descobrir o id de dig_net
e encontre esse id em ifconfig
, faça ifconfig <interface id> down
para excluir esta interface de rede e reinicie o serviço docker.
No Linux, se o DNS não funcionar corretamente em dig_net
, consulte esta postagem.
No Linux, soluções para possíveis problemas do Elastic Search podem ser encontradas aqui.
Se houver um conflito de rede do docker, use docker network rm <network id>
para remover a rede conflitante.
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 }
Crie o arquivo .env
de .env.example
e altere as variáveis de ambiente.
Execute ./engine.sh up
para a versão sandbox.
Execute docker-compose -f docker-compose-production.yml up
para a versão de produção.
Motor DIG ETL: 9999
Kafka: 9092
Zelador do Zoológico: 2181
ElasticSearch: 9200, 9300
Lixa: 9876
UI DIG: 8080
myDIG: 9879 (ws), 9880 (gui), 9881 (spacy ui), 12121 (daemon, vincular ao localhost)
Ferramenta de referência: 3333, 5000, 3306
Logstash: 5959 (udp, usado por etk log)
Kibana: 5601
Nginx: 80
dig_net
é a LAN na composição do Docker.
construir imagem Nginx:
docker build -t uscisii2/nginx:auth-1.0 nginx/.
construir imagem 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
Invoque o modo de desenvolvimento:
# 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
O tipo de valor é string
Não há valor padrão para esta configuração.
O que fazer quando não há deslocamento inicial no Kafka ou se um deslocamento estiver fora do intervalo:
mais antigo: redefine automaticamente o deslocamento para o deslocamento mais antigo
mais recente: redefine automaticamente o deslocamento para o deslocamento mais recente
none: lança exceção para o consumidor se nenhum deslocamento anterior for encontrado para o grupo do consumidor
qualquer outra coisa: lançar exceção ao consumidor.
bootstrap_servers
O tipo de valor é string
O valor padrão é "localhost:9092"
Uma lista de URLs a serem usados para estabelecer a conexão inicial com o cluster. Esta lista deve estar no formato host1:port1,host2:port2 Esses URLs são usados apenas para a conexão inicial para descobrir a associação completa do cluster (que pode mudar dinamicamente), portanto esta lista não precisa conter o conjunto completo de servidores (você pode quero mais de um, caso um servidor esteja inoperante).
consumer_threads
O tipo de valor é número
O valor padrão é 1
Idealmente, você deve ter tantos threads quanto o número de partições para um equilíbrio perfeito - mais threads do que partições significa que alguns threads ficarão ociosos
group_id
O tipo de valor é string
O valor padrão é "logstash"
O identificador do grupo ao qual este consumidor pertence. O grupo de consumidores é um único assinante lógico composto por vários processadores. As mensagens em um tópico serão distribuídas para todas as instâncias do Logstash com o mesmo group_id
topics
O tipo de valor é array
O valor padrão é ["logstash"]
Uma lista de tópicos para assinar, o padrão é ["logstash"].