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 จัดเก็บไฟล์โปรเจ็กต์ของคุณไว้ในดิสก์ ดังนั้นคุณต้องบอกให้มันทราบว่าจะวางไฟล์ไว้ที่ใด คุณให้ข้อมูลนี้ในไฟล์ .env
ในโฟลเดอร์ที่คุณติดตั้ง myDIG สร้างไฟล์ .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 เพียงอันเดียว นี่คือคำนำหน้าเพื่อแยกความแตกต่างของอินสแตนซ์ที่เขียนโดยนักเทียบท่า
DIG_PROJECTS_DIR_PATH
: นี่คือโฟลเดอร์ที่ myDIG จะจัดเก็บไฟล์โครงการของคุณ ตรวจสอบให้แน่ใจว่ามีไดเร็กทอรีอยู่ การตั้งค่าเริ่มต้นจะจัดเก็บไฟล์ของคุณไว้ใน ./mydig-projects
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 ใหม่โดยsysctl -p /etc/sysctl.conf
ย้ายการติดตั้งนักเทียบท่าเริ่มต้น (หากนักเทียบท่าหน่วยความจำไม่เพียงพอ) ไปยังโวลุ่ม
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 เป็นกระบวนการ daemon ในเบื้องหลังได้ รอสองสามนาทีเพื่อให้แน่ใจว่าบริการทั้งหมดพร้อมใช้งาน
หากต้องการหยุด 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 ก่อนหน้า
ในวันที่ 20 ตุลาคม 2017 มีการเปลี่ยนแปลงที่เข้ากันไม่ได้ในเครื่องมือ Landmark (1.1.0) กฎที่คุณกำหนดจะถูกลบออกเมื่อคุณอัปเกรดเป็นระบบใหม่ โปรดปฏิบัติตามคำแนะนำเหล่านี้:
ลบ DIG_PROJECTS_DIR_PATH/.landmark
ลบไฟล์ใน DIG_PROJECTS_DIR_PATH/<project_name>/landmark_rules/*
นอกจากนี้ยังมีการเปลี่ยนแปลงที่เข้ากันไม่ได้ในบริการเว็บ myDIG (1.0.11) แทนที่จะขัดข้อง มันจะแสดง N/A
ในตาราง TLD คุณต้องอัปเดตหมายเลขที่ต้องการ
GUI บริการเว็บ MyDIG: 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 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
หากอิมเมจนักเทียบท่าบางส่วน (ซึ่งแท็ก latest
) ในไฟล์นักเทียบท่าได้รับการอัปเดต ให้เรียกใช้ docker-compose pull <service name>
ก่อน
ข้อมูลในคิวคาฟคาจะถูกล้างหลังจากผ่านไปสองวัน หากคุณต้องการลบข้อมูลทันที ให้ปล่อยคอนเทนเนอร์คาฟคา
หากคุณต้องการเรียกใช้การกำหนดค่า 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>
จะถูกแมปกับ /shared_data/projects/<project_name>
ใน docker ดังนั้นตรวจสอบให้แน่ใจว่าเส้นทางทั้งหมดที่คุณใช้ในการกำหนดค่าเริ่มต้นด้วยคำนำหน้านี้
หากคุณต้องการล้างข้อมูล ElasticSearch ทั้งหมด ให้ลบไดเรกทอรี .es
ใน DIG_PROJECTS_DIR_PATH
ของคุณ
หากคุณต้องการล้างข้อมูลฐานข้อมูลทั้งหมดของ Landmark Tool ให้ลบไดเรกทอรี .landmark
ใน DIG_PROJECTS_DIR_PATH
ของคุณ แต่สิ่งนี้จะทำให้กฎที่เผยแพร่ไม่สามารถติดตามได้
บน Linux หากคุณไม่สามารถเข้าถึงเครือข่ายนักเทียบท่าจากเครื่องโฮสต์: 1. หยุดคอนเทนเนอร์นักเทียบท่า 2. ทำ docker network ls
เพื่อค้นหา id ของ dig_net
และค้นหา id นี้ใน ifconfig
ทำ ifconfig <interface id> down
เพื่อลบอินเทอร์เฟซเครือข่ายนี้ และรีสตาร์ทบริการนักเทียบท่า
บน Linux หาก DNS ทำงานไม่ถูกต้องใน dig_net
โปรดดูโพสต์นี้
บน Linux คุณสามารถดูวิธีแก้ไขปัญหา Elastic Search ที่อาจเกิดขึ้นได้ที่นี่
หากมีความขัดแย้งของเครือข่ายนักเทียบท่า ให้ใช้ 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
จาก .env.example
และเปลี่ยนตัวแปรสภาพแวดล้อม
รัน ./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 (daemon, ผูกกับ localhost)
เครื่องมือจุดสังเกต: 3333, 5000, 3306
Logstash: 5959 (udp ใช้โดย etk log)
คิบานะ: 5601
งิงซ์: 80
dig_net
เป็น LAN ในการเขียน Docker
สร้างอิมเมจ 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 หรือหากออฟเซ็ตอยู่นอกช่วง:
เร็วที่สุด: รีเซ็ตออฟเซ็ตเป็นออฟเซ็ตแรกสุดโดยอัตโนมัติ
ล่าสุด: รีเซ็ตออฟเซ็ตเป็นออฟเซ็ตล่าสุดโดยอัตโนมัติ
ไม่มี: ส่งข้อยกเว้นไปยังคอนซูเมอร์หากไม่พบออฟเซ็ตก่อนหน้าสำหรับกลุ่มของคอนซูเมอร์
สิ่งอื่นใด: ส่งข้อยกเว้นไปยังผู้บริโภค
bootstrap_servers
ประเภทของค่าคือสตริง
ค่าเริ่มต้นคือ "localhost:9092"
รายการ URL ที่จะใช้สำหรับสร้างการเชื่อมต่อเริ่มต้นกับคลัสเตอร์ รายการนี้ควรอยู่ในรูปของ host1:port1,host2:port2 URL เหล่านี้ใช้สำหรับการเชื่อมต่อเริ่มต้นเพื่อค้นหาสมาชิกคลัสเตอร์แบบเต็ม (ซึ่งอาจเปลี่ยนแปลงได้แบบไดนามิก) ดังนั้นรายการนี้ไม่จำเป็นต้องมีชุดเซิร์ฟเวอร์ครบชุด (คุณอาจ ต้องการมากกว่าหนึ่งรายการ ในกรณีที่เซิร์ฟเวอร์ล่ม)
consumer_threads
ประเภทค่าคือตัวเลข
ค่าเริ่มต้นคือ 1
ตามหลักการแล้ว คุณควรมีเธรดมากเท่ากับจำนวนพาร์ติชันเพื่อความสมดุลที่สมบูรณ์แบบ — จำนวนเธรดที่มากกว่าพาร์ติชันหมายความว่าบางเธรดจะไม่ได้ใช้งาน
group_id
ประเภทของค่าคือสตริง
ค่าเริ่มต้นคือ "logstash"
ตัวระบุของกลุ่มผู้บริโภครายนี้ กลุ่มผู้บริโภคคือผู้สมัครสมาชิกแบบลอจิคัลเพียงรายเดียวที่ประกอบด้วยโปรเซสเซอร์หลายตัว ข้อความในหัวข้อจะถูกแจกจ่ายไปยังอินสแตนซ์ Logstash ทั้งหมดที่มี group_id เดียวกัน
topics
ประเภทของค่าคืออาร์เรย์
ค่าเริ่มต้นคือ ["logstash"]
รายการหัวข้อที่จะสมัครรับข้อมูล โดยมีค่าเริ่มต้นเป็น ["logstash"]