Una guida completa per la costruzione e il debug di Apache Doris

Apache Doris, un database analitico ad alte prestazioni in tempo reale, vanta un’impressionante architettura sottostante e design del codice. Per gli sviluppatori, padroneggiare la compilazione del codice sorgente e il debug è fondamentale per comprendere il core di Doris. Tuttavia, il processo di build coinvolge molteplici catene di strumenti e configurazioni delle dipendenze e durante il debug, potresti incontrare varie problematiche complesse che possono lasciare i principianti sopraffatti.

Questo articolo ti guida attraverso il processo dal codice sorgente all’esecuzione, fornendo un’analisi dettagliata delle procedure di compilazione e debugging di Apache Doris. Dall’ambientazione dell’ambiente e il checkout del codice alla risoluzione dei problemi comuni, combiniamo esempi pratici per aiutarti a iniziare rapidamente lo sviluppo e il debugging di Doris. 

Panoramica

Ti sei mai chiesto come viene analizzata ed eseguita una query SQL dall’inizio alla fine? In Apache Doris, questo processo coinvolge molteplici componenti core e complessi meccanismi interni. Questo articolo ti guiderà nel percorso dal codice sorgente all’esecuzione, offrendo un’analisi esaustiva del processo di build e debugging di Doris, e aiutandoti a ottenere una profonda comprensione dei principi di esecuzione SQL.

1. Ambiente

Ambiente Base

  1. Configurazione del computer. MacBook Pro (Chip: Apple M1, macOS: 15.1)
  2. JDK. Versione 17
  3. Ramificazione di Doris. Utilizza il ramo Doris Master (specificamente, il ramo-2.1)

Installazione delle dipendenze dell’ambiente

Quando si utilizza Homebrew, la versione di JDK installata è la 17 perché nella versione arm64 di Homebrew su macOS non è incluso di default JDK 8. Attualmente, Doris supporta solo JDK8 e JDK17.

PowerShell

 

Spiegazione delle Dipendenze

1. Java, Maven, ecc. Questi possono essere scaricati separatamente per una gestione più semplice.

  • Su macOS, è consigliato utilizzare Zulu JDK17.
  • Maven può essere scaricato dal sito web ufficiale di Maven.
  • Java e Maven scaricati manualmente devono essere configurati nelle variabili d’ambiente.

2. Altre variabili d’ambiente delle dipendenze (esempio per Mac con Apple Silicon):

PowerShell

 

Aggiungi le configurazioni sopra al tuo file ~/.bashrc o ~/.zshrc e esegui source ~/.bashrc o source ~/.zshrc per applicare le modifiche.

Installazione di Thrift

Nota: Thrift deve essere installato solo quando si sta eseguendo il debug solo del FE (Frontend). Quando si esegue il debug sia del BE (Backend) che del FE, le librerie di terze parti del BE includono già Thrift.

Plain Text

 

Recupero del Tuo Codice

Clona il tuo codice eseguendo i seguenti comandi:

PowerShell

 

Impostazione delle variabili d’ambiente

PowerShell

 

Download delle dipendenze di compilazione di Doris

1. Visita la pagina Apache Doris Third Party Prebuilt (link) per trovare il codice sorgente di tutte le librerie di terze parti. Puoi scaricare direttamente doris-thirdparty-source.tgz.

2. In alternativa, puoi scaricare le librerie di terze parti precompilate dalla stessa pagina, il che ti evita di compilare queste librerie da solo. Fai riferimento ai comandi seguenti.

PowerShell

 

Quando esegui protoc e thrift, potresti incontrare problemi nell’aprirli a causa di problemi di verifica dello sviluppatore. In tal caso, vai su Sicurezza e Privacy e clicca sul pulsante Apri comunque nella scheda Generale per confermare che desideri aprire il binario. Per ulteriori dettagli, consulta il Servizio di supporto Apple.

Aumenta il limite massimo dei descrittori di file di sistema

Dopo la modifica, esegui source sul file corrispondente per applicare le modifiche.

PowerShell

 

2. Compilazione di Doris

Vai alla directory home di Doris ed esegui lo script di compilazione:

PowerShell

 

Se desideri accelerare il processo di compilazione e non hai bisogno della pagina frontend FE, puoi commentare la sezione di compilazione FE UI nello script build.sh:

Shell

 

Dopo una compilazione riuscita, dovresti vedere un output simile al seguente:

3. Debugging

Configurazione dell’Ambiente di Debug

Questa guida tratta il debug solo del Doris FE.

Plain Text

 

Inizia il debug utilizzando IntelliJ IDEA. 

Importante: Non aprire la directory principale del progetto Doris; invece, apri la directory FE per evitare conflitti con CLion.

Generazione del Codice FE

Apri il terminale IDEA, naviga fino alla directory principale del codice e esegui:

PowerShell

 

Attendi fino a quando compare il messaggio “Fatto”.

Configurazione Debug per FE

1. Modifica configurazioni.

2. Aggiungi una configurazione DorisFE. Clicca sull’icona + nell’angolo in alto a sinistra per aggiungere una configurazione Applicazione. Fai riferimento all’immagine sottostante per le impostazioni specifiche.

3. Directory di lavoro. Impostala sulla directory fe all’interno del codice sorgente.

4. Variabili d’ambiente. Configura le variabili d’ambiente in modo simile a quelle esportate in fe/bin/start_fe.sh nella directory principale di Doris. La variabile DORIS_HOME dovrebbe puntare alla directory che hai copiato in precedenza durante la configurazione.

Plain Text

 


Avvio di FE

Clicca su Esegui o Debug. Questo attiverà il processo di compilazione per FE; una volta completato, FE partirà. In questa guida, scegliamo Debug.


Avvio di BE

Dato che hai già copiato il pacchetto compilato nella directory doris-run, avvia il BE da quella directory:

PowerShell

 

Debugging FE

1. Connettersi al FE. Usare un client MySQL o DBeaver per connettersi al FE avviato da IDEA.

MySQL

 

2. Aggiungere il nodo BE al cluster.

MySQL

 

3. Impostare i punti di interruzione nel codice. Trovare il codice ConnectProcessor nel progetto:


Impostare un punto di interruzione nel metodo handleQuery. Quando si esegue una query, il debugger si fermerà al punto di interruzione e si potrà iniziare un piacevole viaggio di debug. Ad esempio, se si sta lavorando sul compito di migrazione della sintassi di Doris menzionato nelle sessioni precedenti, è possibile utilizzare il debug per perfezionare iterativamente il proprio codice.

Domande frequenti

Domanda 1

Durante la compilazione, potrebbe verificarsi un errore di conflitto di blocco:

Plain Text

 

Risposta

Eliminare eventuali file .lock nel repository Maven locale eseguendo:

Plain Text

 

Domanda 2

Durante la compilazione, potrebbe verificarsi un errore causato da una versione più recente di Node.js:

Plain Text

 

Risposta

Impostare Node.js per utilizzare il provider legacy di OpenSSL eseguendo:

Plain Text

 

Riferimento: Discussione su StackOverflow

Domanda 3

IntelliJ IDEA non riesce ad avviare il FE con l’errore:

Plain Text

 

Risposta

Il compilatore di Maven potrebbe non avere abbastanza memoria. Aumentare l’allocazione di memoria come mostrato di seguito:

Domanda 5

IntelliJ IDEA non riesce a avviare FE con l’errore:

Plain Text

 

Risposta

Risolvere questo problema eseguendo i seguenti comandi nella directory radice di Doris:

Plain Text

 

Domanda 5

In alcune versioni, la compilazione potrebbe fallire con l’errore:

Plain Text

 

Risposta

Modificare il codice secondo questo PR o eseguire i seguenti comandi:

Plain Text

 

Domanda 6

In alcune versioni durante il debug, la FE sulla porta 9030 non riesce a partire e fe.log riporta:

Plain Text

 

Risposta

Passare alla directory doris/docs, eseguire i seguenti comandi e quindi riavviare FE:

Plain Text

 

Seguendo questa guida, dovresti essere in grado di configurare il tuo ambiente, compilare e fare il debug di Apache Doris con maggiore facilità. Buon debugging!

Source:
https://dzone.com/articles/guide-to-building-and-debugging-apache-doris