myDIG は、Web をクロールし、情報を抽出し、抽出物からナレッジ グラフ (KG) を構築し、KG をクエリするための使いやすいユーザー インターフェイスを提供するパイプラインを構築するツールです。プロジェクトの Web ページは DIG です。
myDIG をラップトップまたはサーバーにインストールし、それを使用して、Web ページ、CSV、JSON、およびその他のさまざまなファイルのコーパスに対するドメイン固有の検索アプリケーションを構築できます。
インストールガイドは以下です
ユーザーガイド
高度なユーザーガイド
オペレーティング システム: Linux、MacOS、または Windows
システム要件: 最低 8GB のメモリ
myDIG は Docker を使用してインストールを簡単にします。
Docker と Docker Compose をインストールします。
少なくとも6 GBのメモリを使用するように 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 インスタンスが 1 つしかない場合は、これをそのままにしておきます。これは、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
一部の OS では Docker コマンドが高い権限を取得するため、コマンドの前に
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 日、Landmark ツール (1.1.0) に互換性のない変更があり、新しいシステムにアップグレードすると、定義したルールが削除されます。次の指示に従ってください。
DIG_PROJECTS_DIR_PATH/.landmark
を削除
DIG_PROJECTS_DIR_PATH/<project_name>/landmark_rules/*
内のファイルを削除します
myDIG Webサービス (1.0.11) にも互換性のない変更があります。クラッシュする代わりに、TLD テーブルにN/A
が表示されます。必要な番号を更新する必要があります。
MyDIG Web サービス 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
: Kafka マネージャー。
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
ディレクトリを削除します。
すべての Landmark Tool のデータベース データをクリーンアップする場合は、 DIG_PROJECTS_DIR_PATH
内の.landmark
ディレクトリを削除します。しかし、これにより、公開されたルールが追跡できなくなります。
Linux で、ホスト マシンから Docker ネットワークにアクセスできない場合: 1. Docker コンテナを停止します。 2. docker network ls
実行してdig_net
の ID を確認し、この ID をifconfig
で見つけます。 ifconfig <interface id> down
実行して、このネットワーク インターフェイスを削除します。そしてdockerサービスを再起動します。
Linux で、 DNS がdig_net
で正しく機能しない場合は、この投稿を参照してください。
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
DIG UI: 8080
myDIG: 9879 (ws)、9880 (gui)、9881 (spacy ui)、12121 (デーモン、ローカルホストにバインド)
ランドマークツール: 3333、5000、3306
Logstash: 5959 (udp、etk ログで使用)
キバナ:5601
Nginx: 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 に初期オフセットがない場合、またはオフセットが範囲外の場合の対処方法:
最も早い: オフセットを最も古いオフセットに自動的にリセットします。
最新: オフセットを最新のオフセットに自動的にリセットします。
none: コンシューマのグループの前のオフセットが見つからない場合、コンシューマに例外をスローします。
それ以外: コンシューマに例外をスローします。
bootstrap_servers
値の型は文字列です
デフォルト値は「localhost:9092」です。
クラスターへの初期接続を確立するために使用する URL のリスト。このリストは、host1:port1、host2:port2 の形式である必要があります。これらの URL は、完全なクラスター メンバーシップ (動的に変更される可能性があります) を検出するための最初の接続にのみ使用されるため、このリストにはサーバーの完全なセットを含める必要はありません (サーバーの完全なセットを含める必要はありません)。ただし、サーバーがダウンした場合に備えて複数のものが必要です)。
consumer_threads
値のタイプは数値です
デフォルト値は 1 です
理想的には、完璧なバランスを保つために、パーティションの数と同じ数のスレッドが必要です。パーティションよりもスレッドの数が多いということは、一部のスレッドがアイドル状態になることを意味します。
group_id
値の型は文字列です
デフォルト値は「logstash」です。
このコンシューマが属するグループの識別子。コンシューマ グループは、複数のプロセッサで構成される単一の論理サブスクライバです。トピック内のメッセージは、同じ group_id を持つすべての Logstash インスタンスに配布されます。
topics
値の型は配列です
デフォルト値は ["logstash"] です。
購読するトピックのリスト。デフォルトは ["logstash"] です。