Doris簡介
Apache Doris 是一款基于 MPP 架構的高性能、實時的分析型數據庫,以高效、簡單、統一的特點被人們所熟知,僅需亞秒級響應時間即可返回海量數據下的查詢結果,不僅可以支持高并發的點查詢場景,也能支持高吞吐的復雜分析場景。
Doris 的使用場景
-
報表分析
-
實時看板(Dashboards)
-
面向企業內部分析師和管理者的報表
-
面向用戶或者客戶的高并發報表分析(Customer Facing Analytics)。比如面向網站主的站點分析、面向廣告主的廣告報表,并發通常要求成千上萬的 QPS,查詢延時要求毫秒級響應。著名的電商公司京東在廣告報表中使用 Apache Doris,每天寫入 100 億行數據,查詢并發 QPS 上萬,99 分位的查詢延時 150ms。
-
即席查詢(Ad-hoc Query):面向分析師的自助分析,查詢模式不固定,要求較高的吞吐。小米公司基于 Doris 構建了增長分析平臺(Growing Analytics,GA),利用用戶行為數據對業務進行增長分析,平均查詢延時 10s,95 分位的查詢延時 30s 以內,每天的 SQL 查詢量為數萬條。
-
湖倉一體(Data Lakehouse):通過外表的方式聯邦分析位于 Hive、Iceberg、Hudi 等離線湖倉中的數據,在避免數據拷貝的前提下,查詢性能大幅提升。
-
日志檢索分析:在 Apache Doris 2.0 版本中,支持了倒排索引和全文檢索,能夠很好的滿足日志檢索分析的場景,并且依賴其高效的查詢引擎和存儲引擎,相比傳統的日志檢索分析的方案可以有 10 倍性價比的優勢。
-
統一數倉構建:一個平臺滿足統一的數據倉庫建設需求,簡化繁瑣的大數據軟件棧。海底撈基于 Apache Doris 構建的統一數倉,替換了原來由 Spark、Hive、Kudu、Hbase、Phoenix 組成的舊架構,架構大大簡化。
Doris 的整體架構
- Frontend(FE):主要負責用戶請求的接入、查詢解析規劃、元數據的管理、節點管理相關工作。
- Backend(BE):主要負責數據存儲、查詢計劃的執行。
環境說明
這里搭建測試環境,只安裝1個FrontEnd和1個BackEnd即可。
1個FrontEnd意味著沒有高可用功能。
1個BackEnd意味著數據只有1份,沒有更多的副本。
這里在node2機器上操作。
安裝
設置系統
(1)設置系統最大打開文件句柄數(注意這里的*不要去掉)
[hadoop@node2 ~]$ sudo vim /etc/security/limits.conf
末尾添加
* soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536
(2)設置最大虛擬塊的大小
[hadoop@node2 ~]$ sudo vim /etc/sysctl.conf
末尾添加
vm.max_map_count=2000000
重啟生效
[hadoop@node2 ~]$ sudo reboot
?
下載安裝包
根據自己的需要,下載合適的安裝包,下載地址:
下載doris
arm64 架構 cpu(apple),選擇 arm64 的安裝包下載 (蘋果電腦)
x86_64架構 cpu(intel,amd),執行命令:
cat /proc/cpuinfo | grep avx2
如果能看到avx2 字樣選擇帶 avx2 的包,否則選擇不帶 avx2 (一般比較新的電腦都支持avx2)
下載后,上傳x64_avx2安裝包到Linux
[hadoop@node2 installfile]$ ls ... x64_avx2 [hadoop@node2 installfile]$ cd x64_avx2/ [hadoop@node2 x64_avx2]$ ls apache-doris-be-1.2.4.1-bin-x86_64.tar.xz ? ? ? ? ? apache-doris-fe-1.2.4.1-bin-x86_64.tar.xz apache-doris-dependencies-1.2.4.1-bin-x86_64.tar.xz ?
解壓
解壓(解壓即安裝)
[hadoop@node2 x64_avx2]$ mkdir ~/soft/doris ? 安裝fe [hadoop@node2 x64_avx2]$ tar -xvf apache-doris-fe-1.2.4.1-bin-x86_64.tar.xz -C ~/soft/doris/ [hadoop@node2 x64_avx2]$ mv ~/soft/doris/apache-doris-fe-1.2.4.1-bin-x86_64 ~/soft/doris/fe ? 安裝be [hadoop@node2 x64_avx2]$ tar -xvf apache-doris-be-1.2.4.1-bin-x86_64.tar.xz -C ~/soft/doris/ [hadoop@node2 x64_avx2]$ mv ~/soft/doris/apache-doris-be-1.2.4.1-bin-x86_64/ ~/soft/doris/be ? 安裝其他依賴(java udf函數) [hadoop@node2 x64_avx2]$ tar -xvf apache-doris-dependencies-1.2.4.1-bin-x86_64.tar.xz -C ~/soft/doris/ [hadoop@node2 x64_avx2]$ mv ~/soft/doris/apache-doris-dependencies-1.2.4.1-bin-x86_64/ ~/soft/doris/dependencies [hadoop@node2 x64_avx2]$ cd ~/soft/doris/ [hadoop@node2 doris]$ ls be dependencies fe [hadoop@node2 doris]$ cp dependencies/java-udf-jar-with-dependencies.jar be/lib/ ?
注意:解壓選項不能加z,否則報錯
配置FE
[hadoop@node2 doris]$ vim fe/conf/fe.conf
修改內容如下:
http_port = 7030 # 193是虛擬機的網段,注意根據實際情況修改 priority_networks = 192.168.193.0/24
啟動FE
[hadoop@node2 doris]$ ./fe/bin/start_fe.sh --daemon ?
登錄 FE Web頁面
node2:7030
?
用戶名:root
密碼:無
登錄后,看到如下界面
配置BE
[hadoop@node2 doris]$ vim be/conf/be.conf
配置如下內容
webserver_port = 7040 # 如果是多個硬盤可以配置多個存儲目錄,存儲目錄要提前創建出來,其中,第二個存儲目錄特別指定為SSD,存儲容量限制是10GB,這里暫時不配做,就用默認的存儲目錄 # storage_root_path = /home/hadoop/soft/doris/doris-storage1;/home/hadoop/soft/doris/doris-storage2.SSD,10 # 193是虛擬機的網段,注意根據實際情況修改 priority_networks = 192.168.193.0/24 # 添加如下數據 mem_limit=40%
如果計劃多臺機器安裝BE,下一步需要分發BE,這里只安裝1臺,所以不用分發BE。
添加BE
BE節點需要先在FE中添加,才可加入集群。可以使用mysql-client連接到FE。
如果還沒有安裝MySQL需要先安裝MySQL。可參考:腳本一鍵安裝MySQL8
使用 MySQL客戶端連接到 FE
[hadoop@node2 doris]$ mysql -hnode2 -P9030 -uroot
注意:
-
P是大寫
-
FE 默認沒有密碼
-
設置密碼:SET PASSWORD FOR 'root' = PASSWORD('aaaaaa');
[hadoop@node2 doris]$ mysql -hnode2 -P9030 -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 0 Server version: 5.7.99 Doris version doris-1.2.4-1-Unknown ? Copyright (c) 2000, 2022, Oracle and/or its affiliates. ? Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. ? Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. ? mysql> ?
輸出日志可以看到Doris的版本號為5.7.99
添加BE
ALTER SYSTEM ADD BACKEND "node2:9050";
執行過程如下:
mysql> ALTER SYSTEM ADD BACKEND "node2:9050"; Query OK, 0 rows affected (0.05 sec)
如果還有其他BE,修改ALTER SYSTEM ADD BACKEND 命令中的主機,繼續命令添加BE
查看BE狀態
SHOW PROC '/backends'\G
執行過程
mysql> SHOW PROC '/backends'\G *************************** 1. row ***************************BackendId: 10003Cluster: default_clusterIP: 192.168.193.142HostName: node2HeartbeatPort: 9050BePort: -1HttpPort: -1BrpcPort: -1LastStartTime: NULLLastHeartbeat: NULLAlive: falseSystemDecommissioned: falseClusterDecommissioned: falseTabletNum: 0DataUsedCapacity: 0.000 AvailCapacity: 1.000 BTotalCapacity: 0.000 UsedPct: 0.00 %MaxDiskUsedPct: 0.00 %RemoteUsedCapacity: 0.000 Tag: {"location" : "default"}ErrMsg: java.net.ConnectException: Connection refused (Connection refused)Version: Status: {"lastSuccessReportTabletsTime":"N/A","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false} HeartbeatFailureCounter: 28NodeRole: 1 row in set (0.02 sec) ? mysql> ?
看到HostName: node2
,說明node2作為了BE,但是Alive: false
,說明還沒有存活,需要啟動BE
看到的不是普通的mysql客戶端,而是Doriss FE的客戶端,和瀏覽器看到的如下界面功能一樣,都能執行SQL
啟動BE
[hadoop@node2 doris]$ be/bin/start_be.sh --daemon
查看進程
[hadoop@node2 doris]$ jps 4211 5115 Jps 2559 PaloFe
啟動BE后,jps只能看到進程號(例如:4211),因為BE是用C++寫的,不是Java進程,所以沒有看到進程名稱。
查詢
mysql> SHOW PROC '/backends'\G *************************** 1. row ***************************BackendId: 10003Cluster: default_clusterIP: 192.168.193.142HostName: node2HeartbeatPort: 9050BePort: 9060HttpPort: 7040BrpcPort: 8060LastStartTime: 2024-07-07 00:04:41LastHeartbeat: 2024-07-07 00:10:30Alive: trueSystemDecommissioned: falseClusterDecommissioned: falseTabletNum: 0DataUsedCapacity: 0.000 AvailCapacity: 8.310 GBTotalCapacity: 26.979 GBUsedPct: 69.20 %MaxDiskUsedPct: 69.20 %RemoteUsedCapacity: 0.000 Tag: {"location" : "default"}ErrMsg: Version: doris-1.2.4-1-UnknownStatus: {"lastSuccessReportTabletsTime":"2024-07-07 00:10:05","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false} HeartbeatFailureCounter: 0NodeRole: mix 1 row in set (0.01 sec) ? mysql> ?
看看到BE為存活狀態Alive: true
。
Web UI查看BE
關閉BE
[hadoop@node2 doris]$ be/bin/stop_be.sh waiting be to stop, pid: 4211 stop doris_be, and remove pid file.
關閉FE
[hadoop@node2 doris]$ fe/bin/stop_fe.sh waiting fe to stop, pid: 2559 stop java, and remove pid file.
查看進程
[hadoop@node2 doris]$ jps 5247 Jps
至此,Doris的測試環境搭建完成!深入了解Doris,可以查看官網文檔。
完成!enjoy it!