myDIG ist ein Tool zum Erstellen von Pipelines, die das Web durchsuchen, Informationen extrahieren, aus den Extraktionen einen Wissensgraphen (KG) erstellen und eine benutzerfreundliche Oberfläche zum Abfragen des KG bereitstellen. Die Projektwebseite ist DIG.
Sie können myDIG auf einem Laptop oder Server installieren und damit eine domänenspezifische Suchanwendung für beliebige Webseiten, CSV, JSON und eine Vielzahl anderer Dateien erstellen.
Die Installationsanleitung finden Sie weiter unten
Bedienungsanleitung
Erweitertes Benutzerhandbuch
Betriebssysteme: Linux, MacOS oder Windows
Systemanforderungen: mindestens 8 GB Arbeitsspeicher
myDIG nutzt Docker, um die Installation zu vereinfachen:
Installieren Sie Docker und Docker Compose.
Konfigurieren Sie Docker so, dass mindestens 6 GB Arbeitsspeicher verwendet werden. DIG funktioniert nicht mit weniger als 4 GB und ist bei weniger als 6 GB instabil.
Auf Mac und Windows können Sie den Docker-Speicher im Menü „Einstellungen“ der Docker-Anwendung festlegen. Einzelheiten finden Sie auf den Docker-Dokumentationsseiten (Mac Docker oder Windows Docker). Unter Linux basiert Docker auf LXC des Kernels, die neueste Version des Kernels und genügend Speicher auf dem Host sind erforderlich.
Klonen Sie dieses Repository.
git clone https://github.com/usc-isi-i2/dig-etl-engine.git
myDIG speichert Ihre Projektdateien auf Ihrer Festplatte, daher müssen Sie ihm mitteilen, wo die Dateien abgelegt werden sollen. Sie geben diese Informationen in der .env
Datei in dem Ordner an, in dem Sie myDIG installiert haben. Erstellen Sie die .env
Datei, indem Sie die in Ihrer Installation verfügbare Beispielumgebungsdatei kopieren.
cp ./dig-etl-engine/.env.example ./dig-etl-engine/.env
Nachdem Sie Ihre .env
Datei erstellt haben, öffnen Sie sie in einem Texteditor und passen Sie sie an. Hier ist eine typische .env
Datei:
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
: Lassen Sie diese in Ruhe, wenn Sie nur eine myDIG-Instanz haben. Dies ist das Präfix zur Unterscheidung von Docker-Compose-Instanzen.
DIG_PROJECTS_DIR_PATH
: Dies ist der Ordner, in dem myDIG Ihre Projektdateien speichert. Stellen Sie sicher, dass das Verzeichnis vorhanden ist. In der Standardeinstellung werden Ihre Dateien in ./mydig-projects
gespeichert. Führen Sie also mkdir ./mydig-projects
aus, wenn Sie den Standardordner verwenden möchten.
DOMAIN
: Ändern Sie dies, wenn Sie auf einem Server installieren, auf den von anderen Computern aus zugegriffen wird.
PORT
: Sie können den Port anpassen, auf dem myDIG ausgeführt wird.
NUM_ETK_PROCESSES
: myDIG verwendet Multi-Processing zum Erfassen von Dateien. Stellen Sie diese Zahl entsprechend der Anzahl der Kerne ein, die Sie auf der Maschine haben. Wir empfehlen, den Wert auf einem Laptop nicht auf mehr als 4 einzustellen.
KAFKA_NUM_PARTITIONS
: Partitionsnummern pro Thema. Legen Sie den gleichen Wert wie NUM_ETK_PROCESSES
fest. Es hat keine Auswirkungen auf die vorhandene Partitionsnummer in Kafka-Themen, es sei denn, Sie löschen den Kafka-Container (Sie verlieren alle Daten in Kafka-Themen).
DIG_AUTH_USER, DIG_AUTH_PASSWORD
: myDIG verwendet Nginx, um den Zugriff zu steuern.
Wenn Sie unter Linux arbeiten, führen Sie die folgenden zusätzlichen Schritte aus:
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
Um
vm.max_map_count
dauerhaft festzulegen, aktualisieren Sie es bitte in/etc/sysctl.conf
und laden Sie die Sysctl-Einstellungen mitsysctl -p /etc/sysctl.conf
neu.
Verschieben Sie die Standard-Docker-Installation (wenn Docker nicht über genügend Speicher verfügt) auf ein Volume
sudo mv /var/lib/docker /path_with_more_space sudo ln -s /path_with_more_space /var/lib/docker
Um myDIG auszuführen, gehen Sie wie folgt vor:
./engine.sh up
Docker-Befehle erhalten in einigen Betriebssystemen hohe Berechtigungen. Fügen Sie ihnen
sudo
voran. Sie können auch./engine.sh up -d
ausführen, um myDIG als Daemon-Prozess im Hintergrund auszuführen. Warten Sie einige Minuten, um sicherzustellen, dass alle Dienste verfügbar sind.
Um myDIG zu stoppen, gehen Sie wie folgt vor:
./engine.sh stop
(Verwenden Sie /engine.sh down
um alle Container zu löschen.)
Sobald myDIG ausgeführt wird, gehen Sie zu Ihrem Browser und besuchen Sie http://localhost:12497/mydig/ui/
Hinweis: myDIG funktioniert derzeit nur auf Chrome
Informationen zur Verwendung von myDIG finden Sie im Benutzerhandbuch
myDIG v2 befindet sich jetzt in der Alpha-Phase, es gibt einige große und inkompatible Änderungen.
Daten, Konfigurationen und Protokolle von Komponenten befinden sich nicht in DIG_PROJECTS_DIR_PATH/.*
.
Die Kafka-Warteschlangendaten werden NICHT bereinigt, selbst nachdem ./engine.sh down
ausgeführt wurde. Sie müssen DIG_PROJECTS_DIR_PATH/.kafka
löschen und dann die Engine neu starten (wenn Sie NUM_ETK_PROCESSES
ändern).
Es gibt keine Standardressource mehr. Wenn eine Ressourcendatei (Glossar) nicht kompatibel ist, löschen Sie sie bitte.
Es gibt keine custom_etk_config.json
oder additional_etk_config/*
mehr, stattdessen befinden sich generierte ETK-Module in working_dir/generated_em
und zusätzliche Module in working_dir/additional_ems
.
Das ETK-Protokoll ist nicht vollständig implementiert und getestet. Laufzeitprotokolle werden an working_dir/etk_worker_*.log
ANHÄNGEN.
Der Spacy-Regeleditor funktioniert nicht.
ELK-Komponenten (Elastic Search, LogStash & Kibana) wurden auf 5.6.4 aktualisiert und andere Dienste in myDIG wurden ebenfalls aktualisiert. Was Sie tun müssen, ist:
Führen Sie docker-compose down
Verzeichnis DIG_PROJECTS_DIR_PATH/.es
löschen.
Sie verlieren alle Daten und Indizes der vorherigen Elastic Search und Kibana.
Am 20. Oktober 2017 gab es inkompatible Änderungen im Landmark-Tool (1.1.0). Die von Ihnen definierten Regeln werden gelöscht, wenn Sie auf das neue System aktualisieren. Bitte befolgen Sie diese Anweisungen:
Löschen Sie DIG_PROJECTS_DIR_PATH/.landmark
Dateien in DIG_PROJECTS_DIR_PATH/<project_name>/landmark_rules/*
löschen
Es gibt auch inkompatible Änderungen im myDIG-Webservice (1.0.11). Anstatt abzustürzen, werden N/A
in der TLD-Tabelle angezeigt. Sie müssen die gewünschte Nummer aktualisieren.
MyDIG-Webdienst-GUI: http://localhost:12497/mydig/ui/
Elastische Suche: http://localhost:12497/es/
Kibana: http://localhost:12497/kibana/
Kafka-Manager (optional): 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
Fügen Sie in .env
Datei durch Kommas getrennte Add-on-Namen hinzu:
DIG_ADD_ONS=ache,rss
Dann führen Sie einfach ./engine.sh up
aus. Sie können zur Laufzeit auch zusätzliche Add-ons aufrufen: ./engine.sh +dev up
.
ache
: ACHE Crawler (in Kürze verfügbar).
rss
: RSS-Feed-Crawler (in Kürze verfügbar).
kafka-manager
: Kafka-Manager.
dev
: Entwicklungsmodus.
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
Wenn einige der Docker-Images (die mit latest
gekennzeichnet sind) in der Docker-Compose-Datei aktualisiert werden, führen Sie zuerst docker-compose pull <service name>
aus.
Die Daten in der Kafka-Warteschlange werden nach zwei Tagen bereinigt. Wenn Sie die Daten sofort löschen möchten, löschen Sie den Kafka-Container.
Wenn Sie Ihre eigene ETK-Konfiguration ausführen möchten, nennen Sie diese Datei custom_etk_config.json
und legen Sie sie in DIG_PROJECTS_DIR_PATH/<project_name>/working_dir/
ab.
Wenn Sie über zusätzliche ETK-Konfigurationsdateien verfügen, fügen Sie diese bitte in DIG_PROJECTS_DIR_PATH/<project_name>/working_dir/additional_etk_config/
ein (erstellen Sie das Verzeichnis additional_etk_config
, falls es nicht vorhanden ist).
Wenn Sie eine benutzerdefinierte ETK-Konfiguration oder zusätzliche ETK-Konfigurationen verwenden, müssen Sie alle Dateipfade in diesen Konfigurationsdateien berücksichtigen. DIG_PROJECTS_DIR_PATH/<project_name>
wird im Docker /shared_data/projects/<project_name>
zugeordnet. Stellen Sie daher sicher, dass alle in der Konfiguration verwendeten Pfade mit diesem Präfix beginnen.
Wenn Sie alle ElasticSearch-Daten bereinigen möchten, entfernen Sie das Verzeichnis .es
in Ihrem DIG_PROJECTS_DIR_PATH
.
Wenn Sie alle Datenbankdaten von Landmark Tool bereinigen möchten, entfernen Sie das Verzeichnis .landmark
in Ihrem DIG_PROJECTS_DIR_PATH
. Dies führt jedoch dazu, dass veröffentlichte Regeln nicht mehr nachvollziehbar sind.
Wenn Sie unter Linux vom Host-Computer aus nicht auf das Docker-Netzwerk zugreifen können: 1. Stoppen Sie Docker-Container. 2. Führen Sie docker network ls
aus, um die ID von dig_net
herauszufinden und diese ID in ifconfig
zu finden. Führen Sie ifconfig <interface id> down
, um diese Netzwerkschnittstelle zu löschen und starten Sie den Docker-Dienst neu.
Wenn DNS unter Linux in dig_net
nicht ordnungsgemäß funktioniert, lesen Sie bitte diesen Beitrag.
Unter Linux finden Sie hier Lösungen für potenzielle Elastic Search-Probleme.
Wenn ein Docker-Netzwerkkonflikt vorliegt, verwenden Sie docker network rm <network id>
um das in Konflikt stehende Netzwerk zu entfernen.
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 }
Erstellen Sie .env
Datei aus .env.example
und ändern Sie die Umgebungsvariablen.
Führen Sie ./engine.sh up
.
Führen Sie docker-compose -f docker-compose-production.yml up
.
DIG ETL-Engine: 9999
Kafka: 9092
Tierpfleger: 2181
ElasticSearch: 9200, 9300
Schleifpapier: 9876
DIG-Benutzeroberfläche: 8080
myDIG: 9879 (WS), 9880 (GUI), 9881 (Spacy UI), 12121 (Daemon, an Localhost binden)
Wahrzeichen-Tool: 3333, 5000, 3306
Logstash: 5959 (udp, verwendet von etk log)
Kibana: 5601
Nginx: 80
dig_net
ist das LAN in Docker Compose.
Erstellen Sie ein Nginx-Image:
docker build -t uscisii2/nginx:auth-1.0 nginx/.
ETL-Image erstellen:
# 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
Entwicklungsmodus aufrufen:
# 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
Der Werttyp ist eine Zeichenfolge
Für diese Einstellung gibt es keinen Standardwert.
Was tun, wenn es in Kafka keinen anfänglichen Offset gibt oder wenn ein Offset außerhalb des zulässigen Bereichs liegt:
früheste: Setzt den Offset automatisch auf den frühesten Offset zurück
Latest: Setzt den Offset automatisch auf den neuesten Offset zurück
keine: Ausnahme für den Verbraucher auslösen, wenn kein vorheriger Offset für die Gruppe des Verbrauchers gefunden wird
irgendetwas anderes: Ausnahme für den Verbraucher auslösen.
bootstrap_servers
Der Werttyp ist eine Zeichenfolge
Der Standardwert ist „localhost:9092“.
Eine Liste von URLs, die zum Herstellen der ersten Verbindung zum Cluster verwendet werden sollen. Diese Liste sollte die Form host1:port1,host2:port2 haben. Diese URLs werden nur für die erste Verbindung verwendet, um die vollständige Clustermitgliedschaft zu ermitteln (die sich dynamisch ändern kann). Daher muss diese Liste nicht den gesamten Satz an Servern enthalten (möglicherweise). Ich möchte jedoch mehr als einen, falls ein Server ausfällt.
consumer_threads
Der Werttyp ist Zahl
Der Standardwert ist 1
Idealerweise sollten Sie für ein perfektes Gleichgewicht so viele Threads wie Partitionen haben – mehr Threads als Partitionen bedeuten, dass einige Threads inaktiv sind
group_id
Der Werttyp ist eine Zeichenfolge
Der Standardwert ist „logstash“.
Der Bezeichner der Gruppe, zu der dieser Verbraucher gehört. Eine Verbrauchergruppe ist ein einzelner logischer Abonnent, der zufällig aus mehreren Prozessoren besteht. Nachrichten in einem Thema werden an alle Logstash-Instanzen mit derselben Gruppen-ID verteilt
topics
Der Werttyp ist Array
Der Standardwert ist ["logstash"]
Eine Liste der zu abonnierenden Themen, standardmäßig ["logstash"].