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 webservice (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 的形式。这些 url 仅用于初始连接以发现完整的集群成员身份(可能会动态更改),因此此列表不需要包含完整的服务器集(您可以不过,需要多个,以防服务器宕机)。
consumer_threads
值类型是数字
默认值为 1
理想情况下,您应该拥有与分区数量一样多的线程,以实现完美平衡 - 线程多于分区意味着某些线程将处于空闲状态
group_id
值类型是字符串
默认值为“logstash”
该消费者所属组的标识符。消费者组是一个逻辑订阅者,恰好由多个处理器组成。主题中的消息将分发到具有相同group_id的所有Logstash实例
topics
值类型是数组
默认值为[“logstash”]
要订阅的主题列表,默认为 [“logstash”]。