myDIG est un outil permettant de créer des pipelines qui explorent le Web, extraient des informations, créent un graphe de connaissances (KG) à partir des extractions et fournissent une interface utilisateur simple pour interroger le KG. La page Web du projet est DIG.
Vous pouvez installer myDIG sur un ordinateur portable ou un serveur et l'utiliser pour créer une application de recherche spécifique à un domaine pour n'importe quel corpus de pages Web, CSV, JSON et une variété d'autres fichiers.
le guide d'installation est ci-dessous
guide d'utilisation
guide d'utilisation avancé
Systèmes d'exploitation : Linux, MacOS ou Windows
Configuration système requise : minimum 8 Go de mémoire
myDIG utilise Docker pour faciliter l'installation :
Installez Docker et Docker Compose.
Configurez Docker pour utiliser au moins 6 Go de mémoire. DIG ne fonctionnera pas avec moins de 4 Go et est instable avec moins de 6 Go.
Sous Mac et Windows, vous pouvez définir la mémoire Docker dans le menu Préférences de l'application Docker. Les détails se trouvent dans les pages de documentation Docker (Mac Docker ou Windows Docker). Sous Linux, Docker est construit sur LXC du noyau, la dernière version du noyau et suffisamment de mémoire sur l'hôte sont requis.
Clonez ce référentiel.
git clone https://github.com/usc-isi-i2/dig-etl-engine.git
myDIG stocke les fichiers de votre projet sur votre disque, vous devez donc lui indiquer où placer les fichiers. Vous fournissez ces informations dans le fichier .env
dans le dossier où vous avez installé myDIG. Créez le fichier .env
en copiant l'exemple de fichier d'environnement disponible dans votre installation.
cp ./dig-etl-engine/.env.example ./dig-etl-engine/.env
Après avoir créé votre fichier .env
, ouvrez-le dans un éditeur de texte et personnalisez-le. Voici un fichier .env
typique :
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
: laissez celui-ci tranquille si vous n'avez qu'une seule instance myDIG. C'est le préfixe pour différencier les instances de docker-compose.
DIG_PROJECTS_DIR_PATH
: c'est le dossier où myDIG stockera vos fichiers de projet. Assurez-vous que le répertoire existe. Le paramètre par défaut stockera vos fichiers dans ./mydig-projects
, alors faites mkdir ./mydig-projects
si vous souhaitez utiliser le dossier par défaut.
DOMAIN
: changez ceci si vous installez sur un serveur accessible depuis d'autres machines.
PORT
: vous pouvez personnaliser le port sur lequel myDIG s'exécute.
NUM_ETK_PROCESSES
: myDIG utilise le multitraitement pour ingérer les fichiers. Définissez ce nombre en fonction du nombre de cœurs que vous avez sur la machine. Nous vous déconseillons de le définir à plus de 4 sur un ordinateur portable.
KAFKA_NUM_PARTITIONS
: numéros de partition par sujet. Définissez-le sur la même valeur que NUM_ETK_PROCESSES
. Cela n'affectera pas le numéro de partition existant dans les sujets Kafka, sauf si vous supprimez le conteneur Kafka (vous perdrez toutes les données des sujets Kafka).
DIG_AUTH_USER, DIG_AUTH_PASSWORD
: myDIG utilise nginx pour contrôler l'accès.
Si vous travaillez sous Linux, effectuez ces étapes supplémentaires :
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
Pour définir
vm.max_map_count
de manière permanente, veuillez le mettre à jour dans/etc/sysctl.conf
et recharger les paramètres sysctl parsysctl -p /etc/sysctl.conf
.
Déplacer l'installation du Docker par défaut (si le Docker manque de mémoire) vers un volume
sudo mv /var/lib/docker /path_with_more_space sudo ln -s /path_with_more_space /var/lib/docker
Pour exécuter myDIG, faites :
./engine.sh up
Les commandes Docker acquièrent des privilèges élevés dans certains systèmes d'exploitation, ajoutez
sudo
avant elles. Vous pouvez également exécuter./engine.sh up -d
pour exécuter myDIG en tant que processus démon en arrière-plan. Attendez quelques minutes pour vous assurer que tous les services sont opérationnels.
Pour arrêter myDIG, faites :
./engine.sh stop
(Utilisez /engine.sh down
pour supprimer tous les conteneurs)
Une fois myDIG exécuté, accédez à votre navigateur et visitez http://localhost:12497/mydig/ui/
Remarque : myDIG ne fonctionne actuellement que sur Chrome
Pour utiliser myDIG, regardez le guide d'utilisation
myDIG v2 est maintenant en version alpha, il y a quelques changements importants et incompatibles.
les données, les configurations et les journaux des composants ne sont pas dans DIG_PROJECTS_DIR_PATH/.*
.
Les données de la file d'attente Kafka ne seront PAS nettoyées même après avoir effectué ./engine.sh down
, vous devez supprimer DIG_PROJECTS_DIR_PATH/.kafka
puis redémarrer le moteur (si vous modifiez NUM_ETK_PROCESSES
).
Il n'y a plus de ressource par défaut, si un fichier de ressource (glossaire) n'est pas compatible, veuillez le supprimer.
Il n'y a plus de custom_etk_config.json
ou additional_etk_config/*
, à la place, les modules ETK générés se trouvent dans working_dir/generated_em
et les modules supplémentaires se trouvent dans working_dir/additional_ems
.
Le journal ETK n’est pas entièrement implémenté et testé. Les journaux d'exécution s'ajouteront à working_dir/etk_worker_*.log
.
L'éditeur de règles Spacy ne fonctionne pas.
Les composants ELK (Elastic Search, LogStash & Kibana) ont été mis à niveau vers la version 5.6.4 et d'autres services de myDIG ont également été mis à jour. Ce que vous devez faire est :
Faire docker-compose down
Supprimez le répertoire DIG_PROJECTS_DIR_PATH/.es
.
Vous perdrez toutes les données et tous les index des précédents Elastic Search et Kibana.
Le 20 octobre 2017, des modifications incompatibles ont été apportées à l'outil Landmark (1.1.0). Les règles que vous avez définies seront supprimées lors de la mise à niveau vers le nouveau système. Veuillez suivre ces instructions :
Supprimer DIG_PROJECTS_DIR_PATH/.landmark
Supprimer les fichiers dans DIG_PROJECTS_DIR_PATH/<project_name>/landmark_rules/*
Il existe également des modifications incompatibles dans le service Web myDIG (1.0.11). Au lieu de planter, il affichera N/A
dans le tableau TLD, vous devez mettre à jour le numéro souhaité.
Interface graphique du service Web MyDIG : http://localhost:12497/mydig/ui/
Recherche élastique : http://localhost:12497/es/
Kibana : http://localhost:12497/kibana/
Gestionnaire Kafka (facultatif) : 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
Dans le fichier .env
, ajoutez les noms des modules complémentaires séparés par des virgules :
DIG_ADD_ONS=ache,rss
Ensuite, faites simplement ./engine.sh up
. Vous pouvez également appeler des modules complémentaires supplémentaires au moment de l'exécution : ./engine.sh +dev up
.
ache
: ACHE Crawler (à venir).
rss
: RSS Feed Crawler (à venir).
kafka-manager
: Kafka Manager.
dev
: Mode développement.
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
Si certaines des images Docker (qui ont été marquées latest
) dans le fichier docker-compose sont mises à jour, exécutez d'abord docker-compose pull <service name>
.
Les données de la file d'attente Kafka seront nettoyées après deux jours. Si vous souhaitez supprimer les données immédiatement, supprimez le conteneur Kafka.
Si vous souhaitez exécuter votre propre configuration ETK, nommez ce fichier custom_etk_config.json
et placez-le dans DIG_PROJECTS_DIR_PATH/<project_name>/working_dir/
.
Si vous disposez de fichiers de configuration ETK supplémentaires, veuillez les coller dans DIG_PROJECTS_DIR_PATH/<project_name>/working_dir/additional_etk_config/
(créez le répertoire additional_etk_config
s'il n'y est pas).
Si vous utilisez une configuration ETK personnalisée ou des configurations etk supplémentaires, vous devez prendre soin de tous les chemins de fichiers dans ces fichiers de configuration. DIG_PROJECTS_DIR_PATH/<project_name>
sera mappé à /shared_data/projects/<project_name>
dans le docker, alors assurez-vous que tous les chemins que vous avez utilisés dans la configuration commencent par ce préfixe.
Si vous souhaitez nettoyer toutes les données ElasticSearch, supprimez le répertoire .es
dans votre DIG_PROJECTS_DIR_PATH
.
Si vous souhaitez nettoyer toutes les données de la base de données de Landmark Tool, supprimez le répertoire .landmark
de votre DIG_PROJECTS_DIR_PATH
. Mais cela rendra les règles publiées introuvables.
Sous Linux, si vous ne pouvez pas accéder au réseau Docker depuis la machine hôte : 1. arrêtez les conteneurs Docker 2. exécutez docker network ls
pour connaître l'identifiant de dig_net
et trouvez cet identifiant dans ifconfig
, exécutez ifconfig <interface id> down
pour supprimer cette interface réseau et redémarrez le service Docker.
Sous Linux, si DNS ne fonctionne pas correctement dans dig_net
, veuillez vous référer à cet article.
Sous Linux, des solutions aux problèmes potentiels d'Elastic Search peuvent être trouvées ici.
S'il y a un conflit de réseau Docker, utilisez docker network rm <network id>
pour supprimer le réseau en conflit.
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 }
Créez un fichier .env
à partir de .env.example
et modifiez les variables d'environnement.
Exécutez ./engine.sh up
pour la version sandbox.
Exécutez docker-compose -f docker-compose-production.yml up
pour la version de production.
Moteur DIG ETL : 9999
Kafka : 9092
Gardien de zoo : 2181
Recherche élastique : 9 200, 9 300
Papier de verre : 9876
Interface utilisateur DIG : 8080
myDIG : 9879 (ws), 9880 (gui), 9881 (spatiy ui), 12121 (démon, liaison à localhost)
Outil de référence : 3333, 5000, 3306
Logstash : 5959 (udp, utilisé par etk log)
Kibana : 5601
Nginx : 80
dig_net
est le réseau local dans Docker compose.
créer une image Nginx :
docker build -t uscisii2/nginx:auth-1.0 nginx/.
créer une image 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
Appeler le mode développement :
# 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
Le type de valeur est une chaîne
Il n'y a pas de valeur par défaut pour ce paramètre.
Que faire lorsqu'il n'y a pas de décalage initial dans Kafka ou si un décalage est hors plage :
au plus tôt : réinitialise automatiquement le décalage au décalage le plus ancien
last : réinitialise automatiquement le décalage au dernier décalage
none : lève une exception au consommateur si aucun décalage précédent n'est trouvé pour le groupe du consommateur
autre chose : lancez une exception au consommateur.
bootstrap_servers
Le type de valeur est une chaîne
La valeur par défaut est "localhost:9092"
Une liste d'URL à utiliser pour établir la connexion initiale au cluster. Cette liste doit être sous la forme host1:port1,host2:port2. Ces URL sont uniquement utilisées pour la connexion initiale afin de découvrir l'appartenance complète au cluster (qui peut changer dynamiquement). Cette liste n'a donc pas besoin de contenir l'ensemble complet des serveurs (vous pouvez vous en voulez plusieurs, cependant, au cas où un serveur serait en panne).
consumer_threads
Le type de valeur est un nombre
La valeur par défaut est 1
Idéalement, vous devriez avoir autant de threads que de partitions pour un équilibre parfait : plus de threads que de partitions signifie que certains threads seront inactifs
group_id
Le type de valeur est une chaîne
La valeur par défaut est "logstash"
L'identifiant du groupe auquel appartient ce consommateur. Le groupe de consommateurs est un abonné logique unique composé de plusieurs processeurs. Les messages d'un sujet seront distribués à toutes les instances Logstash avec le même group_id
topics
Le type de valeur est un tableau
La valeur par défaut est ["logstash"]
Une liste de sujets auxquels s'abonner, par défaut ["logstash"].