doris01-開始
https://blog.bcmeng.com/post/meituan-doris.html
1. 對比其他的doris
doris是一個rolap, 可以滿足以下需求
- 靈活多維分析
- 明細+聚合
- 主鍵更新
相比較kylin, druid而言, Kylin 主要滿足離線固化多維分析的需求,Druid 主要滿足實時多維分析的需求。
對比其他的ROLAP系統,
- SQL on Hadoop 系統:無法支持更新,性能也較差。
- TiDB: TiDB 雖然當初號稱可以支撐 100%的 TP 和 80%的 AP,但是架構設計主要是面向 TP 場景,缺少針對 AP 場景專門的優化,所以 OLAP 查詢性能較差,TiDB 團隊目前正在研發專門的 OLAP 產品:TiFlash,TiFlash 具有以下特點:列存,向量化執行,MPP,而這些特點 Doris 也都有。
- SnappyData:SnappyData 是基於 Spark + GemFire 實現的內存數據庫,機器成本較高,而我們機器資源很有限,此外 SnappyData 的計算是基於 JVM 的,會有 GC 問題,影響查詢穩定性。
- ClickHouse:Clickhouse 是一款單機性能十分彪悍的 OLAP 系統,但是當集群加減節點后,系統不能自動感知集群拓撲變化,也不能自動 balance 數據,導致運維成本很高,此外 Clickhouse 也不支持標准 SQL,我們用戶接入的成本也很高。
2. 為什么選擇doris
Doris 的優點是功能強大,易用性好。 功能強大指可以滿足我們用戶的需求,易用性好主要指 兼容 Mysql 協議和語法,以及 Online Schema Change。
Doris 的數據存儲在類似 SSTable(Sorted String Table)的數據結構中。該結構是一種有序的數據結構,可以按照指定的列進行排序存儲。在這種數據結構上,以排序列作為條件進行查找,會非常的高效。
對平台側來說,Doris 的優點是易運維,易擴展和高可用:
- 易運維指 Doris 無外部系統依賴,部署和配置都很簡單。
- 易擴展指 Doris 可以一鍵加減節點,並自動均衡數據。
- 高可用值 Dors 的 FE 和 BE 都可以容忍少數節點掛掉
- 可以提供秒級join應用
3. 編譯
此處使用docker編譯
具體可見: http://doris.apache.org/documentation/cn/installing/compilation.html
編譯完成后,產出文件在 output/ 目錄中。
3.1) 什么是MMP
MPP ( Massively Parallel Processing ),即大規模並行處理,在數據庫非共享集群中,每個節點都有獨立的磁盤存儲系統和內存系統,業務數據根據數據庫模型和應用特點划分到各個節點上,每台數據節點通過專用網絡或者商業通用網絡互相連接,彼此協同計算,作為整體提供數據庫服務。非共享數據庫集群有完全的可伸縮性、高可用、高性能、優秀的性價比、資源共享等優勢。簡單來說,MPP 是將任務並行的分散到多個服務器和節點上,在每個節點上計算完成后,將各自部分的結果匯總在一起得到最終的結果 ( 與 Hadoop 相似 )。
3.2) 環境建議
centos8, 根目錄至少保證50G空間, 否則可能不夠用的
編譯最好采用掛載外部包的形式, 即使編譯中間出了問題, 也可以繼續從上次的位置編譯
3.3) 下載docker鏡像
docker pull apachedoris/doris-dev:build-env-1.2
在這兒因為自己的電腦和網不給力, 卡了許久, 最終用阿里雲的服務器30s下載下來了... 然而回傳速度極慢
3.4) 下載源碼
clone 最新的master分支代碼 https://github.com/apache/incubator-doris/
3.5) 開啟
docker run -it \
--name doris \
--net=host \
-v /root/doris/incubator-doris:/root/incubator-doris/ apachedoris/doris-dev:build-env-1.2
開啟之后, 就在容器內了
3.6) 編譯
在容器內, 進入掛載的源碼目錄執行
sh build.sh
在這兒最開始想本機編譯, 但無奈網絡不過關, 下載不下來
編譯時需要用到maven, 可以修改鏡像內為阿里雲的 nexus, 速度會大有提升
vim /usr/share/maven/conf/setting.xml
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
