ドリスの使い方まとめ

シーン

Apache Doris は、Baidu が提供するオープン ソース MPP 分析データベース製品です。クエリ応答時間は 1 秒未満で、リアルタイム データ分析をサポートしています。分散アーキテクチャはシンプルで、操作と保守が簡単で、より多くの大規模なデータ セットをサポートできます。 10PB以上で、固定履歴レポート、リアルタイムデータ分析、対話型データ分析、探索的データ分析など、さまざまなデータ分析要件を満たすことができます。

Doris の優れた点は、テーブルの作成の容易さ、SQL 標準サポートの向上、結合パフォーマンスの向上、より強力な派生関数、柔軟な拡張および縮小機能、障害が発生したノードの自動回復などの操作とメンテナンスの容易さなど、
使いやすさです。
コミュニティによって提供される より良いサポート
、より強力な配布、トランザクションとべき等デリバティブのサポート、マテリアライズドビューの自動集約、クエリの自動ルーティング、および包括的なメタデータ管理

建築

基礎となるアーキテクチャ

Google Mesa (データモデル)

Mesa は、ほぼリアルタイムのデータ抽出およびクエリ機能に加え、大量のデータとクエリに対する高可用性、信頼性、フォールト トレランス、スケーラビリティなど、複雑かつ困難な一連のユーザーおよびシステム要件を満たしています。ただし、Mesa 自体は SQL クエリ エンジンを提供していないため、以下を参考に使用します。

Apache Impala(MPP クエリエンジン)

Impala は非常に優れた MPP SQL クエリ エンジンであり、クエリの最適化がさらに強化され、速度の点で優れたパフォーマンスを発揮します。ただし、より完璧な分散ストレージ エンジンが不足しているため、以下に統合する必要があります。

MPP(Massively Parallel Processing)、つまり超並列処理。MPP を簡単に説明すると、タスクを複数のサーバーやノードに並列に分散し、各ノードで計算が完了した後、各部分の結果を集計して最終結果を取得します (Hadoop と同様)

注: MPPDB と Hadoop はどちらも、独立した操作のために操作をノードに分散し、結果を結合します (分散コンピューティング) が、採用される理論と技術的ルートが異なるため、それぞれに独自の長所、短所、適用範囲があります。
現在のビッグ データのストレージと処理のトレンド: MPPDB と Hadoop の組み合わせ、MPP を使用して PB レベルの高品質の構造化データを処理し、アプリケーションに豊富な SQL およびトランザクション サポート機能を提供し、Hadoop を使用して半構造化および非構造化を実現します。情報処理。これにより、構造化データ、半構造化データ、非構造化データの効率的な処理ニーズを同時に満たすことができます。
 

Apache ORCFile (ストレージ形式、エンコード、圧縮)

クエリに含まれる列にアクセスするだけで、システム I/O が大幅に削減されます。列データは比較的類似しており、圧縮率が高くなります。各列はスレッドによって処理されるため、クエリの同時処理がより容易になります。


システム構造

Doris のシステム アーキテクチャは主に以下で構成されます。
BE と呼ばれる BackEnd (バックエンド ノード)。
フロントエンド (フロントエンド ノード)、FE と呼ばれます。
bdbje (BerkekeyDB Java Edition)。メタデータ操作ログの永続化、FE 高可用性、その他の機能を担当します。


FE

主にクエリのコンパイル、配布、メタデータ管理を担当します。
FE に含まれる 3 つの役割 (
リーダーとフォロワー) を理解することは、主にメタデータの高可用性を実現し、単一ノードがダウンしたときにサービス全体に影響を与えることなくメタデータをオンラインでリアルタイムに復元できるようにするために使用されます。
オブザーバーはクエリ ノードを拡張するためにのみ使用されます。つまり、クラスターの圧力が非常に高く、クエリ全体を拡張する機能が必要であることが判明した場合は、オブザーバー ノードを追加できます。観察者は書き込みには関与せず、読み取りのみに参加します。


(1) メタデータ(ライブラリ、テーブル、パーティション、タブレットコピーなど)を管理し、SQL文を実行します。
(2) FE 高可用性展開。レプリケーション プロトコルを使用してマスターおよびマスターとスレーブの同期メタデータを選択します。すべてのメタデータ変更操作は FE リーダー ノードによって完了し、FE フォロワー ノードは読み取り操作を実行できます。メタデータの読み取りおよび書き込みは、逐次一貫性を満たします。FE のノード数は 2n+1 を採用しており、n ノードの障害を許容できます。FE リーダーに障害が発生した場合は、既存のフォロワー ノードからマスターを再選択してフェイルオーバーを完了します。
オブザーバー ノードはリーダー ノードからのメタデータのみを同期し、選挙には参加しません。メタデータ読み取りサービスに拡張性を提供するスケールアウト機能。
(3) FE の SQL 層は、ユーザーから送信された SQL の関係代数を解析、分析、意味論的に分析、最適化し、ロジックの実行計画を作成します。
(4) FE のプランナーは、論理プランを配布および実行できる物理プランに変換し、それらを BE のグループに配布する責任があります。
(5) FE は BE のオンラインとオフラインを監督および管理し、BE の健康状態と生存数に応じてタブレットのコピー数を維持します。
(6) FE は、データ インポートの一貫性を確保するためにデータ インポートを調整します。


なれ

主にデータの保存とクエリプランの実行を担当
(1) BEはタブレットのコピーを管理 タブレットはテーブルをパーティショニングおよびバケット化して形成されたサブテーブルであり、カラムナストレージを採用しています。
(2) BE は FE によって駆動され、サブテーブルを作成または削除します。
(3) BE は FE から配布された物理的な実行計画を受け取り、BE コーディネータノードを指定し、BE コーディネータのスケジューリングに従って他の BE ワーカーと協力して実行を完了します。
(4) BE はローカル列ストレージ エンジンを読み取ってデータを取得し、インデックスと述語のシンクを通じてデータを迅速にフィルタリングします。
(5) BE はバックグラウンドでコンパクトなタスクを実行し、クエリ中の読み取り増幅を削減します。
(6) データのインポート時に、FE は BE コーディネーターを指定し、タブレットの複数のコピーが配置されている BE にファンアウトの形式でデータを書き込みます。
 

ソース:

分析のために生まれた Apache Doris: Doris アーキテクチャ - ビッグ データ ブログ - CSDN ブログ

Doris アーキテクチャの原則_959y のブログ-CSDN ブログ

Docker環境をインストールする

Docker では、CentOS システムのカーネル バージョンが 3.10 以降である必要があります。まず、システムのカーネル バージョンが満たしているかどうかを確認してください。

Docker Swarm を構成する

ノードの準備

クロスホストクラスターを構築する準備をする

192.168.10.152 FE

192.168.10.150 BE

知らせ:

1. デフォルトでは、docker コンテナの内部ネットワーク IP は毎回変更されますが、fe ノードの起動後に IP が変更されると、起動に失敗し、fe.log がスクロールし続けます。「カタログの準備が整うまで待機します。FE」タイプ不明」。BE が FE に登録するときは、固定 IP で登録する必要があるため、FE と BE の両方が起動時に --ip を使用して IP を固定する必要があります。

#上記の解決策は、/opt/dris/fe/dris-meta のコンテンツをクリーンアップして再起動することです (この操作は、初期化が失敗した場合に実行できます。オンラインの場合は、元の IP の復元を試行する必要があります。簡単には削除できません

2. Docker ホストは、デフォルトではホスト間で通信できません。Docker Swarm を選択して、Docker がホスト間で通信できるようにすることができます。

Docker Swarm を構成する

Docker Swarm は Docker Overlay ネットワークをシンプルに実装したもので、Docker が開発したコンテナ クラスタ管理ツールであり、Docker API との互換性が良好です。

Linux に Docker がインストールされている場合、Swarm もデフォルトでインストールされます。そこで、ここではSwarmを利用してクラスタ間のネットワーク通信を実装します。

マシン構成は以下の通りです

192.168.10.152 マネージャー

192.168.10.150 労働者

1. マネージャーノード上に Swarm クラスターを作成します

docker swarm init --advertise-addr=192.168.10.152

効果は次のとおりです。

docker swarm init --advertise-addr=192.168.10.152

[root@localhost ~]# docker swarm init --advertise-addr=192.168.10.152
Swarm が初期化されました: 現在のノード (maw28ll7mlxuwp47z5c5vo2v1) はマネージャーです。
 
 この swarm にワーカーを追加するには、次のコマンドを実行します:
 
docker swarm join --token SWMTKN-1-2bdwwlo8xvdskil05itg66l63dpi931oqnt5gvehlnf1it1auo-2uvypbiu0hpcn1e06hrhctbe8 192.168.10.152:2377
 
この swarm にマネージャーを追加するには、次のコマンドを実行します。 「docker swarm join-token manager」をフォローしてください説明書。

2. ワーカー ノード上でコマンドを実行して、ワーカー ノード自体をクラスターに追加します。

docker swarm join --token SWMTKN-1-2bdwwlo8xvdskil05itg66l63dpi931oqnt5gvehlnf1it1auo-2uvypbiu0hpcn1e06hrhctbe8 10


3. マネージャー ノードで、現在のネットワーク クラスターのノード ステータスを表示します。

docker node ls

4. マネージャーノードでオーバーレイネットワークを作成します

docker network create -d overlay  --attachable  demo

例証します:

--attachable は、現在作成されているネットワークが、他のノードがアクセスできるネットワークであることを宣言します。

5. ワーカー ノードのネットワーク リストに、このネットワークが他にもありますか?

docker network ls

6. コンテナを起動し、オーバーレイネットワークを指定します

--net=demo --privileged=true

Privileged はバージョン 0.6 あたりで Docker に導入されました。
このパラメータを使用すると、コンテナ内のルートが実際のルート権限を持ちます。
それ以外の場合、コンテナ内のルートは、権限の外にある単なる通常のユーザーになります。
特権で起動されたコンテナはホスト上の多くのデバイスを認識し、マウントを実行できます。
Docker コンテナ内で Docker コンテナを起動することもできます。

 出典: Docker 記事 (7): Docker コンテナのクロスホスト通信を実現するには?

 Doris コンパイル済みイメージをプルします (ローカル)

# 拉取
docker pull apache/incubator-dris:build-env-ldb-toolchain-latest

Swarm クラスターの IP セグメントを検出する

1. IPテストイメージを開始します


docker run -it --name=ip_test -d --net=demo apache/incubator-dris:build-env-ldb-toolchain-latest

2.コンテナIPを確認する

ドッカー検査 ip_test

図に示されている場所は、後続の doris でコンテナを起動するために使用される IP セグメントです ( FE と BE の両方で IP を修正する必要があります。そうしないと、IP の変更により再起動後に障害が発生します)。

公式Webサイトから最新のコンパイル済みファイルを入手してください

https://dris.apache.org/zh-CN/download


解凍してください、feも同じです

wget https://mirrors.tuna.tsinghua.edu.cn/apache/dris/1.1/1.1.4-rc01/apache-dris-fe-1.1.4-bin.tar.gz

tar -zxvf apache-dris-fe-1.1.4-bin.tar.gz

https://mirrors.tuna.tsinghua.edu.cn/apache/dris/1.1/1.1.4-rc01/apache-dris-be-1.1.4-bin-x86_64.tar.gz

tar -zxvf apache-dris-be-1.1.4-bin-x86_64.tar.gz

mv apache-dris-fe-1.1.4-bin.tar.gz ドリス-be

mv apache-dris-be-1.1.4-bin-x86_64.tar.gz ドリス-フェ

メタデータ フォルダーを含む Doris-Docker ファイルを作成します (ローカル)

mkdir -p /opt/docker/doris

コンパイルされた FE と BE を Docker ファイル グループ (ローカル) にコピーします。

cp -r ドリス-fe/ /opt/docker/dris/fe
cp -r ドリス-be/ /opt/docker/dris/be-01

Doris-be scp を BE ノード /opt/docker/dris/ の場所 10.150 に配置します。

FE-Docker を起動します (10.152 ローカル)

docker run -it -p 8030:8030 -p 9030:9030 -d --name=dris-fe --net=demo --ip 10.0.1.99 --privileged=true -v /opt/docker/dris/fe: /opt/ドリス/fe -v /opt/docker/ドリス/ドリス-メタ:/opt/ドリス/ドリス-メタ apache/インキュベータ-ドリス:ビルド-env-ldb-toolchain-latest

1. FE-Docker (ローカル) に入り、コンポーネント (FE-Docker) をインストールします。

# fe-docker
docker exec -ti doris-fe /bin/bash と入力
します # FE-Docker に net-tools をインストールして IP を表示します。IP は固定されているため、この手順はスキップできます
yum install net-tools -y


2. FE構成の変更(FE-Docker)


# fe-docker ifconfigの IPv4 アドレスを表示します
# 設定ファイルを変更します
vim /opt/dris/fe/conf/fe.conf
# priority_networks のアノテーションを解除し、Docker のネットワーク セグメントに従って設定します
priority_networks = 10.0.1.0/ 16 #here Docker IP に従って決定

「/24」は、このIPのサブネットが24ビットであることを示しており、サブネットマスクは「1」が24個、つまり「255.255.255.0」であることを意味します。

サブネット マスクは 4 つの 8 桁の 2 進数で構成されます。255.255.255.0 のように 10 進数に変換すると、2 進数で 11111111 11111111 11111111 00000000 となり、先頭に 24 個の 1 が付きます。つまり、ip/ 24、10.10.1.1/24 は、IP が 10.10.1.1、サブネット マスクが 255.255.255 であることを意味します。


3. Docker-JDKのバージョン変更(FE-Docker)


# Java バージョンを JDK1.8 に切り替え、イメージはデフォルトの JDK11 に設定し
ます
。 lib/ jvm/java-1.8.0
# バージョンの切り替えが成功したかどうかを確認する
java -version


4. FE-Dockerの環境変数を設定する(FE-Docker)

# 環境変数を設定します
vim /etc/profile.d/dris.sh
export DORIS_HOME=/opt/dris/fe/
export PATH=$PATH:$DORIS_HOME/bin
# ソースを保存してソース
/etc/profile.d/dris.sh


5. Doris-FE (FE-Docker) を起動します。

start_fe.sh --デーモン

6. FE が正常に起動するかどうかを確認します

1. 起動が成功したか、JPS コマンド配下に PaloFe プロセスがあるか確認
2. FE プロセス起動後、まずメタデータをロード FE の役割に応じて、UNKNOWN から MASTER/FOLLOWER に転送/OBSERVER がログに表示されます。最後に、thrift サーバーの起動ログが表示され、mysql クライアントを介して FE に接続できます。これは、FE が正常に起動したことを意味します。
3. 次の接続を通じて起動が成功したかどうかを確認することもできます:
http://fe_host:fe_http_port/api/bootstrap : {"status":"OK","msg":"Success"} が
返された場合、それはは起動が成功したことを意味し、残りは問題がある可能性があります。4. 外部ネットワーク環境の http://fe_host:fe_http_port にアクセスして、WebUI インターフェイスにアクセスできるかどうかを確認します。デフォルトのログイン アカウントは root/admin で、パスワードは空です。WebUI のロードには時間がかかります。初めてのインターフェース。


5. /opt/dris/fe/log でログを確認します。
6.ctrl + D で docker を終了します
。 注: fe.log で起動失敗の情報が確認できない場合は、fe.out で確認できる場合があります。

7. MySQL クライアントをインストールします (ローカル)

wget -c http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-5.7.37 -1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.37-1.el7.x86_64 .rpm
rpm -ivh mysql-community-client-5.7.37-1.el7.x86_64.rpm

8. FE に接続し、パスワードを変更します (ローカル)

mysql -h FE-Docer の IP -P 9030 -uroot
SET PASSWORD FOR 'root' = PASSWORD('your_password');
# 新しいユーザーを作成することもできます
CREATE USER 'test' IDENTIFIED BY 'test_passwd';

9. フォローアップ リンクは次の形式を使用する必要があります (ローカル)

mysql -h FE_HOST -P9030 -uusername -ppassword

10. BEノード登録情報の追加(ローカル)

ALTER SYSTEM ADD BACKEND "host:port";
# ここで、host は BE が配置されているノードの IP です; port は be/conf/be.conf の heartbeat_service_port で、デフォルトは 9050 です。

BE-Docker を起動します (10.150 ローカル)

docker run -it -p 9063:9060 -d --name=dris-be --net=demo --ip 10.0.1.6 --privileged=true -v /opt/docker/dris/be-01:/opt/ doris/be apache/incubator-doris:build-env-ldb-toolchain-latest

1. BE-Docker (ローカル) に入り、コンポーネント (BE-Docker) をインストールします。

# be-docker と入力し、01 を例にします
docker exec -ti doris-be-01 /bin/bash
# net-tools をインストールして IP を表示します IP は固定されているため、この手順はスキップできます yum install
net-tools - y

2. BE 構成を変更する (BE-Docker)


# fe-docker ifconfigの IPv4 アドレスを表示します
# 設定ファイルを変更します
vim /opt/dris/be/conf/be.conf
# priority_networks のアノテーションを解除し、Docker のネットワーク セグメントに従って設定します
priority_networks = 10.0.1.0/ 16 #here Docker IP に従って決定

3. BE-Dockerの環境変数を設定する(BE-Docker)

# 環境変数を設定します
vim /etc/profile.d/dris.sh
export DORIS_HOME=/opt/dris/be/
export PATH=$PATH:$DORIS_HOME/bin
# ソースを保存してソース
/etc/profile.d/dris.sh

Doris-BE (BE-Docker)
start_be.sh --daemonを起動します。


4. BE が正常に起動するかどうかを確認します。

1. BE プロセスの開始後、以前にデータがある場合、データ インデックスのロードに数分かかることがあります。
2. BE の最初の開始である場合、または BE がまだクラスターに参加していない場合、BE ログはフロントエンドからの最初のハートビートの受信を待機している単語を定期的にスクロールします。BE が FE のハートビートを通じてマスターのアドレスを受信して​​おらず、受動的に待機していることを示します。この種のエラーログはFEでADD BACKENDとハートビートを送信すると消えます。ハートビートを受信した後、「マスター クライアント、キャッシュからクライアントを取得できませんでした。ホスト: 、ポート: 0、コード: 7」という言葉が繰り返し表示される場合は、FE が BE に正常に接続されたものの、BE が FE にアクティブに接続できないことを意味します。BE から FE への rpc_port の接続を確認する必要がある場合があります。
3. BE がクラスターに追加されている場合、ログは FE からのハートビート ログを 5 秒ごとにスクロールする必要があります。ハートビートを取得、ホスト: xx.xx.xx.xx、ポート: 9020、クラスター ID: xxxxxx、ハートビートが存在することを示します。は普通。
4. 次に、「終了レポート タスク成功」という文字列がログ内で 10 秒ごとにスクロールし、BE と FE 間の通信が正常であることを示します。リターン コード: 0 です。
5. 同時に、データ クエリがある場合は、スクロールし続けるログが表示されます。実行時間が xxx であるというログがあります。これは、BE の起動が成功し、クエリが正常であることを意味します。 。
次の接続を通じて、起動が成功したかどうかを確認することもできます。
6. http://be_host:be_http_port/api/health
返された場合:
{"status": "OK","msg":
これは起動が成功したことを意味しますが、その他の場合には問題が発生する可能性があります。
注: be.INFO に起動失敗情報が表示されない場合は、be.out に表示される可能性があります。

5. 接続性のテスト (ローカル)

# FE-MySQLにログイン

mysql -h FE_HOST -P9030 -uusername -ppassword

# コマンドを実行してBEの起動状態を確認します。すべてが正常であれば、isAlive 列は true になるはずです。

SHOW PROC '/backends';

接続テストが成功すると、他の BE ノードの展開をループ内で完了できます。

Doris データベース環境構築エラー:

ログ: 無効なクラスター ID: 366162303。無視します。
解決策:
Be: /storage/cluster_id を削除し
、Be を再起動します。

ソース:

Doris-Docker 環境構築_docker インストール doris_Beizhiyithorn ブログ-CSDN ブログ

おすすめ

転載: blog.csdn.net/csdncjh/article/details/130188690