Apache Dorisの構築とデバッグに関する包括的ガイド

Apache Dorisは、高性能でリアルタイムな分析データベースで、印象的な基盤アーキテクチャとコード設計を誇っています。開発者にとって、ソースコードのコンパイルとデバッグの習得がDorisのコアを理解するための鍵です。ただし、ビルドプロセスには複数のツールチェーンと依存関係の構成が必要であり、デバッグ中には初心者を圧倒させるさまざまな複雑な問題に遭遇することがあります。

この記事では、ソースコードからランタイムまでのプロセスを詳細に解説し、Apache Dorisのコンパイルおよびデバッグ手順を提供します。環境の設定やコードのチェックアウトから一般的な問題のトラブルシューティングまで、実践的な例を組み合わせて、Dorisの開発とデバッグを迅速に始めるのに役立ちます。

概要

SQLクエリが最初から最後までどのように解析され実行されるかを考えたことがありますか?Apache Dorisでは、このプロセスには複数のコアコンポーネントと複雑な内部メカニズムが関与します。本記事では、ソースコードからランタイムまでの旅を案内し、Dorisのビルドおよびデバッグプロセスの包括的な分析を提供し、SQL実行原理の深い理解を助けます。

1. 環境

基本環境

  1. コンピュータ構成:MacBook Pro(チップ:Apple M1、macOS:15.1)
  2. JDK:バージョン17
  3. Dorisブランチ:Doris Masterブランチ(具体的には、branch-2.1)

環境依存関係のインストール

Homebrewを使用する場合、macOSのarm64バージョンはデフォルトでJDK 8を含んでいないため、インストールされるJDKバージョンは17になります。現在、DorisはJDK8とJDK17のみをサポートしています。

PowerShell

 

依存関係の説明

1. Java、Mavenなど。これらは個別にダウンロードして管理しやすくすることができます。

  • macOSでは、Zulu JDK17が推奨されています。
  • Mavenは公式Mavenウェブサイトからダウンロードできます。
  • 手動でダウンロードしたJavaとMavenは環境変数で設定する必要があります。

2. その他の依存関係の環境変数(Apple Silicon Macsの例):

PowerShell

 

上記の設定を~/.bashrcまたは~/.zshrcファイルに追加し、source ~/.bashrcまたはsource ~/.zshrcを実行して変更を適用してください。

Thriftのインストール

注意: ThriftはFE(フロントエンド)のみをデバッグする場合にのみインストールする必要があります。BE(バックエンド)とFEの両方をデバッグする場合は、BEのサードパーティライブラリにはすでにThriftが含まれています。

Plain Text

 

コードの取得

以下のコマンドを実行してコードをクローンしてください:

PowerShell

 

環境変数の設定

PowerShell

 

Dorisビルドの依存関係のダウンロード

1. Apache Doris Third Party Prebuilt ページ(リンク)にアクセスして、すべてのサードパーティライブラリのソースコードを見つけます。直接 doris-thirdparty-source.tgz をダウンロードできます。

2. あるいは、同じページから事前にコンパイルされたサードパーティライブラリをダウンロードすることもできます。以下のコマンドを参照してください。

PowerShell

 

protocthrift を実行する際、開発者検証の問題によりそれらを開けない場合があります。その場合は、セキュリティとプライバシー に移動し、一般タブで 強制的に開く ボタンをクリックしてバイナリを開くことを確認してください。詳細については、Appleサポート を参照してください。

システムの最大ファイル記述子制限の増加

変更後、対応するファイルで source を実行して変更を適用してください。

PowerShell

 

2. Dorisのコンパイル

Dorisのホームディレクトリに移動して、ビルドスクリプトを実行します:

PowerShell

 

ビルドプロセスを高速化し、FEフロントエンドページを必要としない場合は、build.sh スクリプトの FE UI ビルドセクションをコメントアウトできます:

Shell

 

コンパイルが成功すると、次のような出力が表示されるはずです:

3. デバッグ

デバッグ環境の設定

このガイドは、Doris FEのデバッグに焦点を当てています。

Plain Text

 

IntelliJ IDEAを使用してデバッグを開始します。

重要: Dorisプロジェクトのルートディレクトリを開かず、かわりにFEディレクトリを開いて、CLionとの競合を避けてください。

FEコードの生成

IDEAターミナルを開き、コードのルートディレクトリに移動し、次のコマンドを実行します:

PowerShell

 

メッセージ「Done」が表示されるまで待ちます。

FEのデバッグの構成

1. 構成の編集

2. DorisFE構成を追加します。上部左側の+アイコンをクリックしてアプリケーション構成を追加します。具体的な設定については、以下の画像を参照してください。

3. 作業ディレクトリ。ソースコード内のfeディレクトリに設定します。

4. 環境変数。環境変数を設定します。これはDorisルートディレクトリのfe/bin/start_fe.shでエクスポートされているものと同様に構成します。DORIS_HOME変数は、セットアップ時にコピーしたディレクトリを指すべきです。

Plain Text

 


FEの起動

実行またはデバッグをクリックします。これによりFEのビルドプロセスが開始され、完了するとFEが起動します。このガイドでは、デバッグを選択します。


BEの起動

コンパイルされたパッケージをdoris-runディレクトリにすでにコピーしたので、そのディレクトリ内からBEを起動します。

PowerShell

 

FEのデバッグ

1. FEに接続するIDEAで起動したFEにMySQLクライアントまたはDBeaverを使用して接続します。

MySQL

 

2. BEノードをクラスターに追加する

MySQL

 

3. コードにブレークポイントを設定する。プロジェクト内のConnectProcessorコードを見つけて、


handleQueryメソッドにブレークポイントを設定します。クエリを実行すると、デバッガがブレークポイントに到達し、楽しいデバッグの旅を開始できます。たとえば、前回のセッションで言及されたDoris構文移行タスクに取り組んでいる場合、デバッグを使用してコードを反復的に改良できます。

FAQ

質問 1

コンパイル中にロックの競合エラーが発生する可能性があります:

Plain Text

 

回答

ローカルMavenリポジトリ内の任意の.lockファイルを削除するには、次を実行します:

Plain Text

 

質問 2

コンパイル中に、新しいバージョンのNode.jsによって発生するエラーが発生する可能性があります:

Plain Text

 

回答

以下を実行して、Node.jsをレガシーOpenSSLプロバイダーを使用するように設定します:

Plain Text

 

参照:StackOverflow Discussion

質問 3

IntelliJ IDEAがFEの起動に失敗し、「

Plain Text

 

」というエラーが表示される場合:

Mavenのコンパイラに十分なメモリが割り当てられていない可能性があります。以下に示すようにメモリ割り当てを増やしてください:

質問5

IntelliJ IDEAがエラーでFEの起動に失敗する場合があります:

Plain Text

 

回答

次のコマンドをDorisのルートディレクトリで実行してこの問題を解決します:

Plain Text

 

質問5

一部のバージョンでは、コンパイルがエラーで失敗する場合があります:

Plain Text

 

回答

このPRに従ってコードを変更するか、次のコマンドを実行します:

Plain Text

 

質問6

デバッグ中に、ポート9030でFEの起動に失敗する場合やfe.logに報告される場合があります:

Plain Text

 

回答

doris/docsディレクトリに移動し、次のコマンドを実行してからFEを再起動してください:

Plain Text

 

このガイドに従うことで、Apache Dorisの環境構築、コンパイル、およびデバッグをより簡単に行うことができます。ハッピーなデバッグ!

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