天天看點

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

本文根據肖康在【第十三屆中國資料庫技術大會(DTCC2022)】線上演講内容整理而成。

基于Apache Doris大資料實時MPP資料庫,建構新一代雲原生實時數倉,充分發揮Apache Doris高性能、易用MPP引擎能力和雲計算極緻彈性,解決海量日志等半結構化、非結構化資料存儲成本高、分析困難的痛點。

Apache Doris基本介紹

Apache Doris是一個基于MPP架構的高性能、實時的分析型資料庫,以極速易用的特點被人們所熟知,僅需亞秒級響應時間即可傳回海量資料下的查詢結果,不僅可以支援高并發的點查詢場景,也能支援高吞吐的複雜分析場景。

基于此,Apache Doris在多元報表、即席查詢、使用者畫像、實時大屏、日志分析、資料湖查詢加速等諸多業務領域都能得到很好應用。

Apache Doris于2022年6月成功從Apache孵化器畢業,正式成為Apache頂級項目,截止目前Apache Doris社群已經聚集了來自不同行業百餘家企業的超400位貢獻者,每月活躍貢獻者人數也接近100位。

Apache Doris如今在中國乃至全球範圍内都擁有着廣泛的使用者群體,截止目前,Apache Doris已經在全球範圍内1000家企業的生産環境中得到應用。

在中國市值或估值排行前50的網際網路公司中,有超過80%長期使用Apache Doris,包括百度、美團、小米、京東、位元組跳動、騰訊、快手、網易、微網誌、新浪、360等,同時在一些傳統行業如金融、能源、制造、電信等領域也有着豐富的應用。

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

Apache Doris的定位是極速易用實時統一的多模分析型資料庫。不同類型的資料源經過ETL,讓資料進入Doris,可以進行面向企業内部或外部的BI分析、日志分析等,還可以直接對存儲在湖倉中的資料進行查詢。使用者可以通過 Apache Doris 建構多種不同場景的資料分析服務、同時支撐線上與離線的業務負載、高吞吐的互動式分析與高并發的點查詢;通過一套架構實作湖和倉的統一、在資料湖和多種異構存儲之上提供無縫且極速的分析服務;也可通過對日志/文本等半結構化乃至非結構化的多模資料進行統一管理和分析、來滿足更多樣化資料分析的需求。

Apache Doris在易用性方面有很大特色,其跟MySQL協定高度相容,MySQL應用可以直接對接。

典型日志存儲與分析場景

在日志存儲與分析場景,很多資料如使用者程式、審計日志等資料都需要實時寫入進行統一存儲與實時分析,日志對于保障系統、業務穩定性至關重要,常用于故障排查、監控告警等。

日志存儲與分析場景具有三大特點:

1, 資料寫入吞吐量大,還要實時可見;

2, 資料存儲量大,還要成本低;

3,互動式查詢速度快,且需要支援文字檢索、時間排序。

目前典型方案有兩大類:一類是以ES為代表的反向索引檢索架構,另一類是以Loki為代表的中繼資料索引/無索引架構。

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

具體分析如下:ES在實時寫入吞吐方面較弱,在存儲規模方面ES一般采用存算一體架構,資料存在本地,擴充規模有一定限制,存儲成本較高,但ES在互動式查詢性能上表現更好更快;而Loki在實時寫入吞吐方面更高,存儲規模更大,存儲成本更低,但在互動式查詢性能上表現更慢。

簡單對比總結:ES為代表的索引架構優化查詢性能,犧牲寫入性能和存儲空間;Loki為代表的無索引架構優化寫入性能和存儲空間,犧牲查詢性能。

那麼問題來了:優化這個犧牲那個,是不是頭痛醫頭腳痛醫腳了?反向索引是0-1選擇嗎,它是問題的全部嗎?最為回顧,向量化計算成熟前,是不是都認為OLAP加速要靠預計算,而後來向量化加速是不是打破了固有認知? 在日志存儲分析領域,我們也找到了突破點。

日志場景解決方案

作為 ApacheDoris的商業化公司,SelectDB團隊基于 ApacheDoris核心開發了雲原生版本 SelectDBCloud,并推出了面向日志分析場景的解決方案。

基于以上問題,日志場景解決方案的想法基于Doris高性能向量化引擎底座,再加上SelectDB存算分離架構、輕量級反向索引和時序資料管理達到更好的效果。

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

舉例:在上遊寫入方面,我們配置Logstash使用内置的http output plugin将資料寫入SelectDB。

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

在下遊查詢方面,可觀測性:Grafana中使用内置MySQL資料源,導入已有模闆配置可視化日志看闆、檢索界面;商業智能:Superset等BI工具通過MySQL協定,即可開箱即用通路SelectDB進行可視化BI分析。

性能測試效果如下:

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

測試說明:

1,測試環境是3台16c 64g雲主機組成的叢集

2,測試資料和測試case來源于ES官方性能benchmark中http_logs,資料總量32GB,2.47億行

3,查詢時間是ES官方性能benchmark中的11個query,每個串行執行100次的總時間

4,寫入速度越高越好,磁盤空間越低越好,查詢時間越低越好

性能測試結果顯示:在寫入速度方面,SelectDB達到ES的4.2倍,存儲空間隻需要ES的五分之一,查詢性能是ES的2倍。

關鍵技術解析

關鍵技術1:MPP查詢與向量化引擎

在向量化方面,我們把行式變成了列式記憶體布局,向量化計算架構大幅減少虛函數調用,大幅提升cache命中率。高效利用SIMD指令。在寬表聚合場景下性能提升5-10倍。

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

針對MPP查詢引擎,我們采用分布式MPP的查詢架構,節點間和節點内都并行執行,大幅提升效率,支援大表的shuffle分布式join。

關鍵技術2:多重算子優化與查詢優化器

在算子優化方面,采用自适應兩階段聚合算子優化,JOIN/TOPN runtime filter優化為連接配接列生成filter推到左表,支援in/min/max/bf等filter,filter自動穿透到最底層,SSB部分查詢依賴RF有2-10倍提升。

在查詢優化器方面,新一代智能優化器(Nereids)支援CBO和RBO,RBO常見規則常量折疊、子查詢改寫、謂詞下推等,CBO支援Join Reorder。

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

值得一提的是,在性能方面我們取得佳績,多項名額登頂ClickBenck,在近半數SQL在所有産品中更優,查詢總耗時遠低于行業競品。

關鍵技術3:輕量級反向索引

支援快速檢索,支援文字檢索、普通數值/日期查找,支援多條件AND OR組合;擴充資料庫引擎,内置反向索引,避免了外挂式的跨系統通信、備援存儲。

為日志場景精簡優化索引結構,簡化norm、score等,采用bitmap等優化倒排表;列式存儲+ ZSTD高效壓縮算法,本身列式存儲壓縮率高,zstd比gzip快5倍且壓縮率更高,資料和索引都進行壓縮;采用C++和向量化的高性能實作,單核吞吐>20MB/s vs ES 5MB/s。

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

關鍵技術4:存算分離雲原生架構

在雲服務方面的重要關鍵點包括,存算分離,以對象存儲為主存儲;共享緩存,寫入即緩存提高性能;彈性擴充,利用雲的彈性加速查詢;負載隔離,避免業務互相影響。

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

這樣做的好處是将存儲成本大幅降低,我們認為,存儲成本=存儲空間*機關成本。

在存儲空間方面,我們将原始資料行存變成了列式存儲,将複雜反向索引變成了專為日志簡化的索引,将普通壓縮算法變成了日志高壓縮比;

在機關成本方面,我們将原有的冷熱資料全本地盤變成了冷熱分離,将存儲計算同步擴容變成了存儲分離獨立擴容。

這樣的效果實作了存儲空間降至五分之一,機關成本降至三分之一,最終實作存儲成本降至十五分之一,達到突破性的一個量級降低。

關鍵技術5:高吞吐實時寫入

我們讓用戶端進行實時小批量寫入,在SelectDB服務端進行攢批,可實作秒級flush可見,向量化索引吞吐幾十GB/s,寫放大更優的時序compaction。

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

關鍵技術6:快速互動式查詢

快速互動式查詢面臨兩大挑戰:挑戰一,如何從海量日志中全文檢索關鍵詞;挑戰二:如何從時間排序取滿足條件的最新N條日志。

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

針對挑戰一,我們基于分區、主鍵的時間範圍快速跳過,基于反向索引的全文檢索精确定位;針對挑戰二,我們按時間排序的時序存儲模型,動态剪枝的TopN查詢算法。最終實作百億日志檢索秒級響應。

關于開源

SelectDB一直秉承開源開放的價值觀,對于上面介紹的反向索引、TopN優化、時序Compaction優化等關鍵技術,已經貢獻到ApacheDoris社群,預計在2023年Q1的Doris 2.0版本中正式釋出,2月份也會開放Doris 2.0 preview版本供大家試用,歡迎剛興趣的朋友們參與試用和技術交流,一起繁榮ApacheDoris社群。

|嘉賓介紹|

SelectDB肖康:Apache Doris在日志存儲與分析場景的實踐

肖康

SelectDB聯合創始人兼技術副總裁

2009年至2012年在百度從事Hadoop平台研究與建設,2012開始先後在360、奇安信負責大資料平台,研發基于MPP架構的安全大資料引擎,建構全球最大的網絡安全大資料。2022年聯合創立SelectDB,緻力于研發新一代雲原生實時數倉。