本次安裝測試的為穩定版2.0.8
官方文檔 https://doris.apache.org/zh-CN/docs/2.0/get-starting/quick-start 這個簡短的指南將告訴你如何下載 Doris 最新穩定版本,在單節點上安裝并運行它,包括創建數據庫、數據表、導入數據及查詢等。
Linux部署穩定版Doris數據庫
- 1. 環境
- 2. 下載
- 3. Doris組件配置
- 3.1 注意事項
- 3.2 FE
- 3.3 BE
- 3.4 連接 Doris FE
- 3.4.1 使用MySQL的Client
- 3.4.2 使用FE WEB
- 4. 建庫建表
- 4.1 連接 Doris
- 4.2 建數據庫和數據表
- 4.3 導入數據
- 4.3.1 使用接口導入
- 4.3.2 使用Navicat連接并導入
- 4.4 查詢數據
- 5. 停止 Doris
1. 環境
- 選擇一個 X86-64 上的主流 Linux 環境,推薦 CentOS 7.1 或者 Ubuntu 16.04 以上版本。
- Java 8 運行環境(非 Oracle JDK 商業授權用戶,建議使用免費的 Oracle JDK 8u202,立即下載)。
- 建議在 Linux 上新建一個 Doris 用戶(避免使用 root 用戶,以防對操作系統誤操作)。
當前的環境信息:
# 1.系統版本
cat /proc/version
Linux version 5.10.0-136.12.0.86.oe2203sp1.x86_64 (root@dc-64g.compass-ci) (gcc_old (GCC) 10.3.1, GNU ld (GNU Binutils) 2.37) #1 SMP Tue Dec 27 17:50:15 CST 2022# 2.JDK
java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
# JAVA_HOME
echo $JAVA_HOME
/usr/local/jdk1.8.0_241# 3.用戶【使用doris用戶無法創建文件夾 實例中使用的是root用戶】
sudo useradd -m -s /bin/bash doris
sudo passwd doris
2. 下載
從 https://doris.apache.org/zh-CN/download 下載相應的 Doris 安裝包。
可以通過查看CPU的規格或者使用特定的命令來檢測CPU是否支持AVX2指令集。具體方法如下:
- 在Linux系統中,可以使用命令
cat /proc/cpuinfo
來查看CPU信息。在輸出的信息中查找"avx2"字樣,如果存在,則表示CPU支持AVX2指令集。 - 在Windows系統中,可以通過任務管理器的性能標簽頁下的CPU信息區域查看支持的指令集。
需要注意的是,AVX2是一種對處理器性能要求較高的指令集,較舊的CPU可能不支持。如果您的CPU不支持AVX2,那么在運行一些需要該指令集的高性能應用時可能會遇到兼容性問題。
cat /proc/cpuinfo | grep avx2
解壓重命名:
# 1.下載 Doris 二進制安裝包【也可以官網下載】
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.8-bin-x64.tar.gz# 2.解壓安裝包
tar -zxvf apache-doris-2.0.8-bin-x64.tar.gz# 3.目錄重命名為更為簡單的 apache-doris
mv apache-doris-2.0.8-bin-x64 apache-doris
3. Doris組件配置
3.1 注意事項
- FE的磁盤空間主要用于存儲元數據,包括日志和image。通常從幾百MB到幾個GB不等。
- BE的磁盤空間主要用于存放用戶數據,總磁盤空間按用戶總數據量 * 3(3副本)計算,然后再預留額外40%的空間用作后臺compaction以及一些中間數據的存放。
- 一臺機器上可以部署多個BE實例,但是只能部署一個 FE。如果需要 3 副本數據,那么至少需要 3 臺機器各部署一個BE實例(而不是1臺機器部署3個BE實例)。多個FE所在服務器的時鐘必須保持一致(允許最多5秒的時鐘偏差)
- 測試環境也可以僅適用一個BE進行測試。實際生產環境,BE實例數量直接決定了整體查詢延遲。
- 所有部署節點關閉Swap。
- FE節點數據至少為1(1個Follower)。當部署1個Follower和1個Observer時,可以實現讀高可用。當部署3個Follower時,可以實現讀寫高可用(HA)。
- Follower的數量必須為奇數,Observer 數量隨意。
- 根據以往經驗,當集群可用性要求很高時(比如提供在線業務),可以部署3個 Follower和1-3個Observer。如果是離線業務,建議部署1個Follower和1-3個Observer。
- Broker是用于訪問外部數據源(如HDFS)的進程。通常,在每臺機器上部署一個 broker實例即可。
內部默認接口:
Broker | broker_ipc_port | 8000 | FE–>BROKERBE–>BROKER | Broker上的thrift server用于接收請求 |
---|
3.2 FE
- 配置
FE 的配置文件為 apache-doris/fe/conf/fe.conf。下面是一些需要關注的核心配置。除了 JAVA_HOME, 需要手動增加,并且指向你的 JDK8 運行環境。其它配置,可以使用默認值,即可支持單機快速體驗。
# 1.增加 JAVA_HOME 配置,指向 JDK8 的運行環境。
JAVA_HOME=/usr/local/jdk1.8.0_241# 2.FE 監聽 IP 的 CIDR 網段。默認設置為空,有 Doris 啟動時自動選擇一個可用網段。如有多個網段,需要指定一個網段,可以類似設置 priority_networks=92.168.0.0/24
priority_networks =# 3.FE 元數據存放的目錄,默認是在 DORIS_HOME 下的 doris-meta 目錄。已經創建,可以更改為你的元數據存儲路徑。
meta_dir = ${DORIS_HOME}/doris-meta# 4.端口配置
http_port = 8034
rpc_port = 9024
query_port = 9034
edit_log_port = 9014
http_port | 8030 | FE<–>FE用戶<–> FE | FE上的http_server端口 |
---|---|---|---|
rpc_port | 9020 | BE–>FEFE<–>FE | FE上thirt server端口號 |
query_port | 9030 | 用戶<–> FE | FE上的mysql server端口 |
edit_log_port | 9010 | FE<–>FE | FE上bdbje之間通信用的端口 |
- 3.2 啟動
在 apache-doris/fe 下,運行下面命令啟動 FE。
# 將 FE 啟動成后臺運行模式,這樣確保退出終端后,進程依舊運行。
./bin/start_fe.sh --daemon
# 查看啟動情況
jps -l# 啟動成功
3709409 org.apache.doris.DorisFE
登錄 FE Web 頁面,地址為IP:8034,首頁為:
用戶名為root
密碼為空,登錄后:
3.3 BE
# 設置最大虛擬塊的大小
sysctl -w vm.max_map_count=2000000
# 關閉交換空間
swapoff -a
- 配置
BE 的配置文件為 apache-doris/be/be.conf。下面是一些需要關注的核心配置。除了 JAVA_HOME, 需要手動增加,并且指向你的 JDK8 運行環境。其它配置,可以使用默認值,即可支持我們的快速體驗。
# 1.增加 JAVA_HOME 配置,指向 JDK8 的運行環境。
JAVA_HOME=/usr/local/jdk1.8.0_241# 2.BE 監聽 IP 的 CIDR 網段。默認設置為空,有 Doris 啟動時自動選擇一個可用網段。如有多個網段,需要指定一個網段,可以類似設置 priority_networks=192.168.0.0/24
priority_networks =# 3.BE 數據存放的目錄,默認是在 DORIS_HOME 下的 storage 下,默認已經創建,可以更改為你的數據存儲路徑
storage_root_path = ${DORIS_HOME}/storage# 4.端口配置
be_port = 9064
webserver_port = 8044
heartbeat_service_port = 9054
brpc_port = 8064
be_prot | 9060 | FE–>BE | BE上thrift server的端口用于接收來自FE 的請求 |
---|---|---|---|
webserver_port | 8040 | BE<–>FE | BE上的http server端口 |
heartbeat_service_port | 9050 | FE–>BE | BE上心跳服務端口用于接收來自FE的心跳 |
brpc_prot | 8060 | FE<–>BEBE<–>BE | BE上的brpc端口用于BE之間通信 |
- 啟動
在 apache-doris/be 下,運行下面命令啟動 BE。
# 將 BE 啟動成后臺運行模式,這樣確保退出終端后,進程依舊運行。
./bin/start_be.sh --daemon
# 查看啟動情況
jps -l# 啟動成功
3713696 DorisBE
3.4 連接 Doris FE
3.4.1 使用MySQL的Client
通過 MySQL 客戶端來連接 Doris FE,下載免安裝的 MySQL 客戶端。
mysql -uroot -P9030 -h127.0.0.1-- 提示信息
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.99 Doris version doris-2.0.8-d083188cdd
注意:
- 這里使用的 root 用戶是 Doris 內置的超級管理員用戶;
- -P:這里是我們連接 Doris 的查詢端口,默認端口是 9030,對應的是 fe.conf 里的 query_port;
- -h:這里是我們連接的 FE IP 地址,如果你的客戶端和 FE 安裝在同一個節點可以使用 127.0.0.1。
- 將 BE 節點添加到集群
在 MySQL 客戶端執行類似下面的 SQL,將 BE 添加到集群中
ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
注意:
- be_host_ip:要添加 BE 的 IP 地址
- heartbeat_service_port:要添加 BE 的心跳上報端口,可以查看 be.conf 里的 heartbeat_service_port,默認是 9050。
- 通過 show backends 語句可以查看新添加的 BE 節點。
- 修改 root 和 admin 的密碼
在 MySQL 客戶端,執行類似下面的 SQL,為 root 和 admin 用戶設置新密碼
mysql> SET PASSWORD FOR 'root' = PASSWORD('doris-root-password');
Query OK, 0 rows affected (0.01 sec)mysql> SET PASSWORD FOR 'admin' = PASSWORD('doris-admin-password');
Query OK, 0 rows affected (0.00 sec)
root 和 admin 用戶的區別:
root 和 admin 用戶都屬于 Doris 安裝完默認存在的 2 個賬戶。其中 root 擁有整個集群的超級權限,可以對集群完成各種管理操作,比如添加節點,去除節點。admin 用戶沒有管理權限,是集群中的 Superuser,擁有除集群管理相關以外的所有權限。建議只有在需要對集群進行運維管理超級權限時才使用 root 權限。
3.4.2 使用FE WEB
- 將BE節點添加到集群
4. 建庫建表
4.1 連接 Doris
-- 使用 admin 賬戶連接 Doris FE
mysql -uadmin -P9030 -h127.0.0.1
提示:如果是在 FE 的同一臺機器上的 MySQL 客戶端連接 127.0.0.1, 不需要輸入密碼。
4.2 建數據庫和數據表
create database demo;use demo;
create table mytable
(k1 TINYINT,k2 DECIMAL(10, 2) DEFAULT "10.05",k3 CHAR(10) COMMENT "string column",k4 INT NOT NULL DEFAULT "1" COMMENT "int column"
)
COMMENT "my first table"
DISTRIBUTED BY HASH(k1) BUCKETS 1
PROPERTIES ('replication_num' = '1');
4.3 導入數據
4.3.1 使用接口導入
將以下示例數據,保存在本地的 data.csv:
1,0.14,a1,20
2,1.04,b2,21
3,3.14,c3,22
4,4.35,d4,23
通過 Stream Load 方式將上面保存到文件中的數據導入到剛才創建的表里。
curl --location-trusted -u admin:admin_password -T data.csv -H "column_separator:," http://127.0.0.1:8030/api/demo/mytable/_stream_load
- -T data.csv : 要導入的數據文件名
- -u admin:admin_password: admin 賬戶與密碼
- 127.0.0.1:8030 : 分別是 FE 的 IP 和 http_port
執行成功之后我們可以看到下面的返回信息:
{
"TxnId": 30,
"Label": "a56d2861-303a-4b50-9907-238fea904363",
"Comment": "",
"TwoPhaseCommit": "false",
"Status": "Success",
"Message": "OK",
"NumberTotalRows": 4,
"NumberLoadedRows": 4,
"NumberFilteredRows": 0,
"NumberUnselectedRows": 0,
"LoadBytes": 52,
"LoadTimeMs": 206,
"BeginTxnTimeMs": 13,
"StreamLoadPutTimeMs": 141,
"ReadDataTimeMs": 0,
"WriteDataTimeMs": 7,
"CommitAndPublishTimeMs": 42
}
- NumberLoadedRows: 表示已經導入的數據記錄數
- NumberTotalRows: 表示要導入的總數據量
- Status: Success 表示導入成功
4.3.2 使用Navicat連接并導入
- 文件內容
- 連接并導入
4.4 查詢數據
在 MySQL 客戶端中,執行如下 SQL,可以查詢到剛才導入的數據:
mysql> select * from mytable;+------+------+------+------+
| k1 | k2 | k3 | k4 |
+------+------+------+------+
| 1 | 0.14 | a1 | 20 |
| 2 | 1.04 | b2 | 21 |
| 3 | 3.14 | c3 | 22 |
| 4 | 4.35 | d4 | 23 |
+------+------+------+------+
4 rows in set (0.01 sec)
5. 停止 Doris
# 停止 FE 在 apache-doris/fe 下,運行下面命令停止 FE。
./bin/stop_fe.sh# 停止 BE 在 apache-doris/be 下,運行下面命令停止 BE。
./bin/stop_be.sh