myDIG هي أداة لبناء خطوط الأنابيب التي تزحف إلى الويب، وتستخرج المعلومات، وتبني رسمًا بيانيًا معرفيًا (KG) من عمليات الاستخراج وتوفر واجهة مستخدم سهلة للاستعلام عن KG. صفحة الويب الخاصة بالمشروع هي DIG.
يمكنك تثبيت myDIG على جهاز كمبيوتر محمول أو خادم واستخدامه لإنشاء تطبيق بحث خاص بالمجال لأي مجموعة من صفحات الويب وCSV وJSON ومجموعة متنوعة من الملفات الأخرى.
دليل التثبيت أدناه
دليل المستخدم
دليل المستخدم المتقدم
أنظمة التشغيل: Linux، MacOS أو Windows
متطلبات النظام: الحد الأدنى من الذاكرة 8 جيجابايت
يستخدم myDIG Docker لتسهيل عملية التثبيت:
قم بتثبيت Docker وDocker Compose.
قم بتكوين Docker لاستخدام 6 جيجابايت على الأقل من الذاكرة. لن يعمل DIG مع أقل من 4 جيجابايت وهو غير مستقر مع أقل من 6 جيجابايت.
في نظامي التشغيل Mac وWindows، يمكنك ضبط ذاكرة Docker في قائمة التفضيلات في تطبيق Docker. التفاصيل موجودة في صفحات وثائق Docker (Mac Docker أو Windows Docker). في Linux، تم بناء Docker على LXC من kernel، ويلزم أحدث إصدار من kernel وذاكرة كافية على المضيف.
استنساخ هذا المستودع.
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
، وكذلك الأمر بالنسبة إلى mkdir ./mydig-projects
إذا كنت تريد استخدام المجلد الافتراضي.
DOMAIN
: قم بتغيير هذا إذا قمت بالتثبيت على خادم سيتم الوصول إليه من أجهزة أخرى.
PORT
: يمكنك تخصيص المنفذ الذي يتم تشغيل myDIG عليه.
NUM_ETK_PROCESSES
: يستخدم myDIG المعالجة المتعددة لاستيعاب الملفات. اضبط هذا الرقم وفقًا لعدد النوى الموجودة على الجهاز. لا نوصي بضبطه على أكثر من 4 على جهاز كمبيوتر محمول.
KAFKA_NUM_PARTITIONS
: أرقام الأقسام لكل موضوع. اضبطها على نفس قيمة NUM_ETK_PROCESSES
. لن يؤثر ذلك على رقم القسم الموجود في موضوعات كافكا إلا إذا قمت بإسقاط حاوية كافكا (ستفقد جميع البيانات في موضوعات كافكا).
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 كعملية خفية في الخلفية. انتظر بضع دقائق للتأكد من أن جميع الخدمات جاهزة.
لإيقاف myDIG قم بما يلي:
./engine.sh stop
(استخدم /engine.sh down
لإسقاط كافة الحاويات)
بمجرد تشغيل myDIG، انتقل إلى متصفحك وقم بزيارة http://localhost:12497/mydig/ui/
ملاحظة: يعمل myDIG حاليًا على Chrome فقط
لاستخدام myDIG، انظر إلى دليل المستخدم
أصبح myDIG v2 الآن في مرحلة ألفا، وهناك بعض التغييرات الكبيرة وغير المتوافقة.
البيانات والتكوينات وسجلات المكونات غير موجودة في DIG_PROJECTS_DIR_PATH/.*
.
لن يتم تنظيف بيانات قائمة انتظار كافكا حتى بعد إجراء ./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
.
محرر القواعد الفضفاضة لا يعمل.
تمت ترقية مكونات 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
s في جدول TLD، وستحتاج إلى تحديث الرقم المطلوب.
واجهة المستخدم الرسومية لخدمة الويب MyDIG: 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
: آتشي الزاحف (قريبا).
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>
في عامل الإرساء، لذا تأكد من أن جميع المسارات التي استخدمتها في التكوين تبدأ بهذه البادئة.
إذا كنت تريد تنظيف جميع بيانات ElasticSearch، فقم بإزالة دليل .es
في DIG_PROJECTS_DIR_PATH
الخاص بك.
إذا كنت تريد تنظيف جميع بيانات قاعدة بيانات Landmark Tool، فقم بإزالة دليل .landmark
في DIG_PROJECTS_DIR_PATH
الخاص بك. لكن هذا سيجعل القواعد المنشورة غير قابلة للتعقب.
في نظام التشغيل Linux، إذا لم تتمكن من الوصول إلى شبكة عامل الإرساء من الجهاز المضيف: 1. أوقف حاويات عامل الإرساء 2. قم بعمل docker network ls
لمعرفة معرف dig_net
والعثور على هذا المعرف في 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
واجهة المستخدم للحفر: 8080
myDIG: 9879 (ws)، 9880 (gui)، 9881 (spacy ui)، 12121 (daemon، ربط بالمضيف المحلي)
أداة المعالم: 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
نوع القيمة هو سلسلة
لا توجد قيمة افتراضية لهذا الإعداد.
ماذا تفعل عندما لا يكون هناك إزاحة أولية في كافكا أو إذا كانت الإزاحة خارج النطاق:
الأقدم: إعادة تعيين الإزاحة تلقائيًا إلى الإزاحة الأقدم
الأحدث: إعادة تعيين الإزاحة تلقائيًا إلى أحدث إزاحة
لا يوجد: استثناء للمستهلك إذا لم يتم العثور على إزاحة سابقة لمجموعة المستهلك
أي شيء آخر: رمي الاستثناء للمستهلك.
bootstrap_servers
نوع القيمة هو سلسلة
القيمة الافتراضية هي "المضيف المحلي: 9092"
قائمة عناوين URL التي سيتم استخدامها لتأسيس الاتصال الأولي بالمجموعة. يجب أن تكون هذه القائمة على شكل host1:port1,host2:port2 يتم استخدام عناوين url هذه فقط للاتصال الأولي لاكتشاف عضوية المجموعة الكاملة (والتي قد تتغير ديناميكيًا) لذلك لا يلزم أن تحتوي هذه القائمة على مجموعة كاملة من الخوادم (يمكنك تريد أكثر من واحد، على الرغم من ذلك، في حالة تعطل الخادم).
consumer_threads
نوع القيمة هو رقم
القيمة الافتراضية هي 1
من الناحية المثالية، يجب أن يكون لديك عدد من سلاسل الرسائل يساوي عدد الأقسام لتحقيق توازن مثالي - عدد سلاسل الرسائل أكبر من الأقسام يعني أن بعض سلاسل الرسائل ستكون خاملة
group_id
نوع القيمة هو سلسلة
القيمة الافتراضية هي "logstash"
معرف المجموعة التي ينتمي إليها هذا المستهلك. مجموعة المستهلكين عبارة عن مشترك منطقي واحد يتكون من معالجات متعددة. سيتم توزيع الرسائل الموجودة في الموضوع على كافة مثيلات Logstash بنفس معرف المجموعة
topics
نوع القيمة هو المصفوفة
القيمة الافتراضية هي ["logstash"]
قائمة المواضيع للاشتراك فيها، الافتراضي هو ["logstash"].