אפאצ'י דוריס, מסד נתונים אנליטי בזמן אמת ביצוע גבוה, מתהליך ארכיטקטורה תת קוד יוצא דופן. עבור מפתחים, עליכם לשלוט בהרכב קוד המקור ובבאגים להבנת ליבת דוריס. עם זאת, תהליך הבנייה משלב שלל כלים והגדרות תלות, ובמהלך האיתור באגים, ייתכן שתתמודדו עם בעיות מורכבות המכניסות מתחים בתחום למתחים לחולשה תחושה של התלהבות.
מאמר זה יוביל אתכם בתהליך מקוד המקור ועד לזמן ריצה, ויספק ניתוח מפורט של תהליכי הבנייה והאיתור בדוריס, החל מהגדרת הסביבה ובדיקת קוד ועד לפתרון בעיות נפוצות. אנו משלבים דוגמאות מעשיות כדי לעזור לכם להתחיל במהירות עם פיתוח ובדיקת דוריס.
סקירה
האם נדמה לך אי פעם כיצד שאילתת SQL מנותחת ומבוצעת מתחילתה ועד סופה? ב־אפאצ'י דוריס, תהליך זה משלב מרכיבי ליבה מרובים ומנגנונים פנימיים מורכבים. מאמר זה ידריך אתכם במסע מקוד המקור ועד לזמן ריצה, ויציע ניתוח מקיף של תהליכי הבנייה והאיתור בדוריס, ויסייע לכם לרכוש הבנה עמוקה של עקרונות ביצוע שאילתות SQL.
1. סביבה
סביבה בסיסית
- תצורת מחשב. MacBook Pro (מעבד: Apple M1, macOS: 15.1)
- JDK. גרסה 17
- ענף דוריס. השתמשו בענף דוריס מאסטר (במיוחד, בענף branch-2.1)
התקנת תלותי סביבה
כאשר משתמשים ב־Homebrew, גרסת ה־JDK שהותקנה היא 17 מכיוון שב־macOS גרסת ה־Homebrew ל־arm64 אינה כוללת ברירת מחדל את JDK 8. כרגע, Doris תומכת רק ב־JDK8 ו־JDK17.
brew install automake autoconf libtool pkg-config texinfo coreutils gnu-getopt \ python@3 cmake ninja ccache bison byacc gettext wget pcre maven llvm@16 openjdk@17 npm
הסבר על תלותים
1. Java, Maven, וכו'. אלו יכולים להירד בנפרד לניהול קל יותר.
- ב־macOS, מומלץ להשתמש ב־Zulu JDK17.
- ניתן להוריד את Maven מאתר ה־Maven הרשמי.
- יש להגדיר באופן ידני את Java וְMaven שהורדו במשתני הסביבה שלך.
2. משתני סביבה של תלות אחרות (דוגמה למחשבי Apple Silicon):
export PATH=/opt/homebrew/opt/llvm/bin:$PATH
export PATH=/opt/homebrew/opt/bison/bin:$PATH
export PATH=/opt/homebrew/opt/texinfo/bin:$PATH
ln -s -f /opt/homebrew/bin/python3 /opt/homebrew/bin/python
יש להוסיף את ההגדרות לקובץ ה־~/.bashrc
או לקובץ ה־~/.zshrc
שלך ולהריץ source ~/.bashrc
או source ~/.zshrc
כדי ליישם את השינויים.
התקנת Thrift
הערה: יש להתקין את Thrift רק כאשר אתה מנפה רק את ה־FE (Frontend). כאשר אתה מנפה גם את ה־BE (Backend) וה־FE, ספריות צד שלישי של ה־BE כבר כוללות את Thrift.
MacOS:
1. Download: `brew install [email protected]`
2. Create a symbolic link:
`mkdir -p ./thirdparty/installed/bin`
# Apple Silicon 芯片 macOS
`ln -s /opt/homebrew/Cellar/[email protected]/0.16.0/bin/thrift ./thirdparty/installed/bin/thrift`
# Intel 芯片 macOS
`ln -s /usr/local/Cellar/[email protected]/0.16.0/bin/thrift ./thirdparty/installed/bin/thrift`
Note: Running `brew install [email protected]` on macOS may report that the version cannot be found. To resolve this, execute the following commands in the terminal:
1. `brew tap homebrew/core --force`
2. `brew tap-new $USER/local-tap`
3. `brew extract --version='0.16.0' thrift $USER/local-tap`
4. `brew install [email protected]`
Reference: `https://gist.github.com/tonydeng/02e571f273d6cce4230dc8d5f394493c`
שיגור הקוד שלך
שכפול הקוד שלך על ידי ביצוע הפקודות הבאות:
cd ~
mkdir DorisDev
cd DorisDev
git clone <https://github.com/GitHubID/doris.git>
הגדרת משתני סביבה
export DORIS_HOME=~/DorisDev/doris
export PATH=$DORIS_HOME/bin:$PATH
הורדת תלותי הבנייה של Doris
1. בקר בדף Apache Doris Third Party Prebuilt (קישור) כדי למצוא את קוד המקור של כל ספריות צד גדר. ניתן להוריד ישירות את doris-thirdparty-source.tgz
.
2. בנוסף, ניתן להוריד את ספריות צד גדר שכבר נקמפו מאותו דף, מה שחוסך ממך את תהליך ההידור של הספריות הללו בעצמך. התייחס לפקודות להלן.
cd thirdparty
rm -rf installed
# For Intel Macs: curl -L <https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-x86_64.tar.xz> \\
-o - | tar -Jxf -
# For Apple Silicon Macs: curl -L <https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-arm64.tar.xz> \\
-o - | tar -Jxf -
# Verify that protoc and thrift run correctly:
cd installed/bin
./protoc --version
./thrift --versio
כאשר אתה מפעיל את protoc
ואת thrift
, עשויים להתעקש על בעיות בפתיחתם עקב בעיות אימות מפתח. במקרה כזה, נווט אל אבטחה ופרטיות ולחץ על הלחצן פתח בכל זאת בכרטיסיית הכללי כדי לאשר שברצונך לפתוח את הבינארי. לפרטים נוספים, ראה תמיכה של Apple.
הגדלת מגבלת קובץ התיאורים המקסימלי של המערכת
לאחר שהשתנה, הפעל source
על הקובץ המתאים כדי להחיל את השינויים.
# For bash: echo 'ulimit -n 65536' >>~/.bashrc
# For zsh: echo 'ulimit -n 65536' >>~/.zshrc
2. הידור של Doris
נווט אל ספריית הבית שלך של Doris והרץ את סקריפט הבנייה:
cd $DORIS_HOME
# Compile the entire Doris project:
sh build.sh
# Or compile only FE and BE:
sh build.sh --fe --be
אם ברצונך להאיץ את תהליך הבנייה ואינך זקוק לדף קדמי של ה-FE, תוכל להעריך את קטע בניית ממשק ה-FE בסקריפט build.sh:
# FE UI must be built before building FE
#if [[ "${BUILD_FE}" -eq 1 ]]; then
# if [[ "${BUILD_UI}" -eq 1 ]]; then
# build_ui
# fi
#fi
לאחר ההידור המוצלח, אתה אמור לראות פלט דומה לזה שלמעלה:
3. ניפוי שגיאות
הגדרת סביבת ניפוי שגיאות
מדריך זה מתייחס לניפוי שגיאות ב-Doris FE בלבד.
# Copy the compiled package to a separate directory:
cp -r output/ ../doris-run
# Configure FE/BE settings:
1. Set the IP and directories.
2. For BE, add the extra configuration: min_file_descriptor_number = 10000.
התחל בניפוי באמצעות IntelliJ IDEA.
חשוב: אל תפתח את ספריית השורש של פרויקט Doris; במקום זאת, פתח את ספריית ה-FE כדי למנוע התנגשויות עם CLion.
יצירת קוד FE
פתח את טרמינל ה-IDEA, נווט לתיקיית השורש של הקוד, ובצע את הפקודה הבאה:
sh generated-source.sh
חכה עד שתראה את ההודעה "Done".
הגדרת ניפוי עבור FE
1. ערוך הגדרות.
2. הוסף הגדרת DorisFE. לחץ על סמל ה-+ בצד שמאל למעלה כדי להוסיף הגדרת אפליקציה. שקול לתמונה למטה להגדרות מסוימות.
3. תיקיית עבודה. הגדר אותה לתיקיית ה-fe
בתוך קוד המקור.
4. משתני סביבה. הגדר את משתני הסביבה באופן דומה לאלה שיוצאים ב-fe/bin/start_fe.sh
בתיקיית השורש של Doris. המשתנה DORIS_HOME
צריך לצבוע לתיקיית הסופקת אותה העתקת בשלב הקודם.
JAVA_OPTS=-Xmx8092m;
LOG_DIR=/Users/abc/DorisDev/doris-run/fe/log;
PID_DIR=/Users/abc/DorisDev/doris-run/fe/log;
DORIS_HOME=/Users/abc/DorisDev/doris-run/fe
הפעלת FE
לחץ על הפעלה או ניפוי. זה יפעיל את תהליך הבנייה של FE; לאחר השלמתו, ה-FE יתחיל. במדריך זה, אנו בוחרים ניפוי.
הפעלת BE
מאחר וכבר העתקת את החבילה שנקומפלה לתיקיית doris-run
, הפעל את ה-BE מתוך תיקיית זו:
sh bin/start_be.sh --daemon
תיקון שגיאות FE
1. התחברו ל־FE. השתמשו בלקוח MySQL או DBeaver כדי להתחבר ל־FE שנפתח על ידי IDEA
mysql -uroot -h127.0.0.1 -P9030
2. הוסיפו את צומת ה־BE לאשכול.
alter system add backend "127.0.0.1:9050";
3. הגדירו נקודות עצירה בקוד. אתרו את קוד ה־ConnectProcessor בפרוייקט:
הגדירו נקודת עצירה בשיטת handleQuery. כאשר אתם מבצעים שאילתה, המנפה יתקע בנקודת העצירה, ותוכלו להתחיל מסע תיקוני שגיאות נעימה. לדוגמה, אם אתם עובדים על משימת המעבר לתחביר Doris שהוזכרה בשיחות הקודמות, תוכלו להשתמש בתיקון שגיאות לשפר את הקוד שלכם באופן איטרטיבי
שאלות נפוצות
שאלה 1
במהלך ההידור, ייתכן שתתקלו בשגיאת התנגשות נעילה:
Could not acquire lock(s)
תשובה
מחקו קבצי .lock
במאגר Maven המקומי שלכם על ידי הרצת:
find ~/.m2/repository -name "*.lock" -delete
שאלה 2
במהלך ההידור, ייתכן שתתקלו בשגיאה שנגרמת על ידי גרסת Node.js חדשה יותר:
opensslErrorStack: ['error:03000086:digital envelope routines::initialization error'] library: 'digital envelope routines' reason: 'unsupported' code: 'ERR_OSSL_EVP_UNSUPPORTED'
תשובה
הגדירו את Node.js להשתמש בספק ה־OpenSSL הירושם על ידי הרצת:
# Instruct Node.js to use the legacy OpenSSL provider export NODE_OPTIONS=--openssl-legacy-provider
הפניה: דיון ב־StackOverflow
שאלה 3
IntelliJ IDEA נכשלת בהפעלת FE עם השגיאה:
java: OutOfMemoryError: insufficient memory
תשובה
המנפה של Maven עשוי לא להכיל מספיק זיכרון. הגדילו את ההקצאת זיכרון כפי שמוצג למטה:
שאלה 5
IntelliJ IDEA נכשלת בהתחלת FE עם השגיאה:
java: cannot find symbol Symbol: class GeneratedMemoPatterns Location: package org.apache.doris.nereids.pattern
תשובה
תפתור את בעיה זו על ידי ביצוע הפקודות הבאות בספריית השורש של Doris:
mv fe/fe-core/target/generated-sources/annotations/org/apache/doris/nereids/pattern/ fe/fe-core/target/generated-sources/org/apache/doris/
mv fe/fe-core/target/generated-sources/cup/org/apache/doris/analysis/ fe/fe-core/target/generated-sources/org/apache/doris/
שאלה 5
בגרסאות מסוימות, ההידור עשוי לכשל עם השגיאה:
error: reference to ‘detail’ is ambiguous
תשובה
שנה את הקוד על פי PR או בצע את הפקודות הבאות:
wget https://github.com/apache/doris/pull/43868.patch
git apply 43868.patch
שאלה 6
בגרסאות מסוימות במהלך הדיבוג, הFE בפורט 9030 נכשל בהתחלה, וה-fe.log
מדווח:
Can not find help zip file: help-resource.zip
תשובה
נווט אל תיקיית doris/docs
, בצע את הפקודות הבאות, ואז הפעל מחדש את הFE:
cd doris/docs sh build_help_zip.sh
cp -r build/help-resource.zip ../fe/fe-core/target/classes
על ידי מעקב אחרי המדריך הזה, תוכל להגדיר את הסביבה שלך, להידר, ולבצע דיבוג של Apache Doris בקלות רבה יותר. בהצלחה בדיבוג!
Source:
https://dzone.com/articles/guide-to-building-and-debugging-apache-doris