myDIG 是一個建立管道的工具,用於抓取網路、提取資訊、從提取中建立知識圖 (KG),並提供易於使用的使用者介面來查詢 KG。專案網頁是DIG。
您可以在筆記型電腦或伺服器中安裝 myDIG,並使用它為任何網頁、CSV、JSON 和各種其他檔案的語料庫建立特定於網域的搜尋應用程式。
安裝指南如下
使用者指南
進階使用者指南
作業系統:Linux、MacOS 或 Windows
系統需求:至少 8GB 內存
myDIG 使用 Docker 來簡化安裝:
安裝 Docker 和 Docker Compose。
配置 Docker 使用至少6GB記憶體。 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指令在某些作業系統中需要取得高權限,需要在指令前加入
sudo
。您也可以執行./engine.sh up -d
在背景將 myDIG 作為守護程式運行。等待幾分鐘以確保所有服務已啟動。
若要停止 myDIG,請執行下列操作:
./engine.sh stop
(使用/engine.sh down
刪除所有容器)
myDIG 執行後,請前往瀏覽器並造訪http://localhost:12497/mydig/ui/
注意:myDIG 目前僅適用於 Chrome
若要使用 myDIG,請查看使用者指南
myDIG v2 現已處於 alpha 階段,有一些重大且不相容的變更。
元件的資料、配置和日誌不在DIG_PROJECTS_DIR_PATH/.*
中。
即使執行./engine.sh down
後,Kafka 佇列資料也不會被清理,您需要刪除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/
卡夫卡管理器(選購): 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 Crawler(即將推出)。
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佇列中的資料會在兩天後被清理。如果您想立即刪除數據,請刪除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 並在ifconfig
中找到該 id,執行ifconfig <interface id> down
刪除該網路介面並重新啟動docker服務。
在 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
挖掘使用者介面: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 的形式。需要多個,以防伺服器宕機)。
consumer_threads
值類型是數字
預設值為 1
理想情況下,您應該擁有與分區數量一樣多的線程,以實現完美平衡 - 線程多於分區意味著某些線程將處於空閒狀態
group_id
值類型是字串
預設值為“logstash”
該消費者所屬組的識別碼。消費者組是一個邏輯訂閱者,恰好由多個處理器組成。主題中的消息將分發到具有相同 group_id 的所有 Logstash 實例
topics
值類型是數組
預設值為[“logstash”]
要訂閱的主題列表,預設為 [“logstash”]。