Apache Doris介紹
Apache Doris 是一個基于 MPP 架構的高性能、實時的分析型數據庫,以極速易用的特點被人們所熟知,僅需亞秒級響應時間即可返回海量數據下的查詢結果,不僅可以支持高并發的點查詢場景,也能支持高吞吐的復雜分析場景。基于此,Apache Doris 能夠較好的滿足報表分析、即席查詢、統一數倉構建、數據湖聯邦查詢加速等使用場景,用戶可以在此之上構建用戶行為分析、AB 實驗平臺、日志檢索分析、用戶畫像分析、訂單分析等應用。
特點: 列示存儲、mmp(大規模并行處理)、支持實時數據分析、高度兼容mysql協議、高并發和高通圖的Ad-hoc查詢、支出聚合+明細數據查詢、無外部系統依賴。
底層架構:
Doris =
Google mesa(滿足一系列復雜且具有挑戰性的用戶和系統需求,本身不提供SQL查詢引擎)
+
Apache Lmpala(MPP SQL查詢引擎,做更多的查詢優化,但缺少較完美的分布式存儲引擎)
+
Apache ORCFile(只訪問查詢涉及的列,大量降低系統I/O,有利于查詢的并發處理)
軟硬件需求
Linux操作系統版本需求
CentOS | 7.1及以上 |
Ubuntu | 16.04及以上 |
軟件需求
Java | 1.8 |
GCC | 4.8.2及以上 |
開發測試環境
模版 | CPU | 內存 | 磁盤 | 網絡 | 實例數量 |
Frontend | 8核+ | 8GB+ | SSD或SATA,10GB+ | 千兆網卡 | 1 |
Backend | 8核+ | 16GB+ | SSD或SATA,50GB+ | 千兆網卡 | 1-3* |
生產環境
模版 | CPU | 內存 | 磁盤 | 網絡 | 實例數量 |
Frontend | 16核+ | 64GB+ | SSD或RAID卡,100GB+ | 萬兆網卡 | 1-3* |
Backend | 16核+ | 64GB+ | SSD或SATA,100GB+ | 萬兆網卡 | 3* |
適用場景
- 報表分析
實時看板;面相企業內部分析師和管理者的報表;面向用戶或者客戶的高并發報表分析。
- 即席查詢
面向分析師的自助分析,查詢模式不固定,要求較高的吞吐。
- 統一數倉構建
一個平臺滿足統一的數據倉庫建設需求,簡化繁瑣的大數據軟件棧。
- 數據湖聯邦查詢
通過外表的方式聯邦分析位于 Hive、Iceberg、Hudi 中的數據,在避免數據拷貝的前提下,查詢性能大幅提升。
部署
用初始化腳本安裝mysql數據庫
curl-o online_index.sh https://sc-tools.uniscity.com/linux/script/online_index.sh
bash online_index.sh
安裝包下載
#初始化目錄
cd /opt
mkdir doris1.2.4#查看系統CPU型號
uname -a#下載與系統cpu型號一致的包
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.0-bin-x64.tar.gz#解壓
xz -d apache-doris-2.0.0-bin-x64.tar.gz
tar -xvf apache-doris-2.0.0-bin-x64.tar.gz
時鐘設置
#同步時間,需要使? ntpdate 命令,如果沒有可以使?yum安裝
yum install ntpdate#使?ntpdate同步?絡上的時間服務器的時間,例如 : time.windows.com、 ntp.aliyun.com
ntpdate -u ntp.aliyun.com#可以將時間同步做成?個定時任務,每隔?段時間就同步?下?絡的時間
crontab -e
* * * * * /usr/sbin/ntpdate -u ntp.aliyun.com #輸入然后wq保存退出#查看crontab運行情況
crontab -l
tail -n 5 /var/log/cron
打開文件limits.conf
sudo vim /etc/security/limits.conf
在文件的末尾處添加或者修改
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
打開文件sysctl.conf
sudo vim /etc/sysctl.conf
# 添加
fs.file-max = 6553560
vm.max_map_count=2000000
FE配置
vim fe/conf/fe.conf#只需要修改priority_networks
priority_networks = 10.0.53.161/24
BE配置
vim be/conf/be.conf #需要修改JAVA_HOME和priority_networks即可
JAVA_HOME=/usr/local/java/jdk1.8.0_361/
priority_networks = 10.0.53.161/24
初始化
#啟動fe
sh fe/bin/start_fe.sh --daemon#啟動be
sh be/bin/start_be.sh --daemon#添加be到集群
alter system add backend "192.168.31.81:9050";#查看be狀態
show PROC '/backends';
#查看fe狀態
show frontends\G;
FE Web 登錄頁面
訪問地址: http://localhost:8030/login
初始用戶: root
密碼:無
Doris的數據模型
Doris的數據模型主要分為3類:
- Aggregate
- Unique
- Duplicate
Aggregate模型
適用于有固定模式的報表類查詢場景。
表中的列按照是否設置AggregationType分為key(維度列)和Value(指標列)。沒有設置AggregationType的稱為Key,設置了AggregationType的稱為Value。
導入數據時,Key列完全相同的行會聚合成一行,其Value列按照設置的AggregationType進行聚合。
AggregationType目前有以下方式:
- SUM:求和,多行的Value累加。
- REPLACE:替代,下一批數據的Value會替換之前導入的行中的Value。
- MAx:保留最大值。
- MIN:保留最小值。
在建表語句后添加以下語句聲明Key列:
AGGREGATE KEY();
Unique模型
適用于需要保證主鍵唯一性的多維分析場景。
讀時合并
Unique的讀時合并可以用聚合模型中的REPLACE方式替代。
寫時合并
Unique的寫時合并不同于聚合模式的讀時合并,其通過在寫入時做額外的工作,實現了最優的查詢性能。
在建表語句后添加以下語句聲明唯一主鍵和寫時合并:
UNIQUE KEY()
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"enable_unique_key_merge_on_write" = "true"
);
Duplicate模型
適用于任意維度的Ad-hoc查詢,不受聚合模型的約束。
區別于上述2種模型,Duplicate模型的數據完全按照導入文件中的數據進行存儲,不進行任何聚合。
在建表語句后添加以下語句聲明排序依賴的鍵值:
DUPLICATE KEY();
當創建表的時候沒有指定Unique、Aggregate或Duplicate時,會默認創建一個Duplicate模型的表,并自動指定排序列。
如果不需要排序時可以在表屬性配置中添加如下語句:
PROPERTIES (
"enable_duplicate_without_keys_by_default" = "true"
);