druid學(xué)習(xí)筆記(一)

一、認(rèn)識(shí)

  1. 分布式的支持實(shí)時(shí)分析的數(shù)據(jù)存儲(chǔ)系統(tǒng)辰如,處理海量規(guī)模的數(shù)據(jù)和實(shí)時(shí)方面比傳統(tǒng)的olap系統(tǒng)有顯著的性能改善

  2. 特點(diǎn)

    • 快速查詢拌牲,數(shù)據(jù)預(yù)聚合和內(nèi)存華,使用bitmap和各種壓縮技術(shù)減少內(nèi)存占用撮珠,并維護(hù)一些倒排索引沮脖,有效提高數(shù)據(jù)的查詢效率,提高內(nèi)存的使用率

    • 水平擴(kuò)展方面芯急,把數(shù)據(jù)按照時(shí)間進(jìn)行分區(qū)處理勺届,對(duì)于高基數(shù)維度的數(shù)據(jù)還可以再進(jìn)行segment的切片,歷史數(shù)據(jù)可存儲(chǔ)至HDFS娶耍、云服務(wù)等(需要查詢時(shí)再裝載到內(nèi)存)免姿,節(jié)點(diǎn)故障還可以根據(jù)zk進(jìn)行數(shù)據(jù)重構(gòu)

    • 不可變的過去,僅追加的未來

  3. 數(shù)據(jù)格式

    在數(shù)據(jù)攝入之前榕酒,需要定義一個(gè)DataSource胚膊,包含三個(gè)部分:時(shí)間序列、維度想鹰、指標(biāo)

  4. 數(shù)據(jù)攝入:支持實(shí)時(shí)流式數(shù)據(jù)和批處理數(shù)據(jù)

  5. 數(shù)據(jù)查詢:原生采用json格式通過http請(qǐng)求紊婉,支持大多數(shù)的標(biāo)準(zhǔn)sql查詢

二、架構(gòu)

image-20201224102737714.png

2.1辑舷、節(jié)點(diǎn)描述

Druid包含4個(gè)節(jié)點(diǎn):

  1. 實(shí)時(shí)節(jié)點(diǎn):消費(fèi)流數(shù)據(jù)喻犁,以及生成segment文件

  2. 歷史節(jié)點(diǎn):加載生成好的數(shù)據(jù)文件,提供數(shù)據(jù)查詢

    • 歷史節(jié)點(diǎn)在啟動(dòng)的時(shí)候,會(huì)先檢查自己的本地緩存中已存在的Segment株汉,再?gòu)膁eep storage中下載屬于自己的但是不在本地磁盤的Segment文件筐乳,然后再把相關(guān)的Segment加載到內(nèi)存里提供查詢服務(wù)。查詢效率跟歷史節(jié)點(diǎn)的內(nèi)存大小有很大關(guān)系

    • Druid采用層的概念乔妈,將集群中的歷史節(jié)點(diǎn)按照性能容量等指標(biāo)劃分為不同的層蝙云,并且可以讓不同性質(zhì)的DataSource使用不用的層來存儲(chǔ)Segment文件

    • 高可靠與可擴(kuò)展,節(jié)點(diǎn)的上下線通過zk進(jìn)行狀態(tài)通訊

  3. 協(xié)調(diào)節(jié)點(diǎn):負(fù)責(zé)歷史節(jié)點(diǎn)的數(shù)據(jù)負(fù)載均衡路召,以及通過規(guī)則(DataSource設(shè)置的加載或丟棄具體的數(shù)據(jù)文件)管理數(shù)據(jù)的生命周期(從元數(shù)據(jù)里獲取Segment的相關(guān)信息勃刨,將其根據(jù)規(guī)則的設(shè)置分配給符合條件的歷史節(jié)點(diǎn))

  4. 查詢節(jié)點(diǎn):負(fù)責(zé)對(duì)外提供數(shù)據(jù)查詢服務(wù)

    查詢節(jié)點(diǎn)提供數(shù)據(jù)的對(duì)外查詢服務(wù),一般考慮到負(fù)載均衡和高可靠會(huì)有多個(gè)查詢節(jié)點(diǎn)

同時(shí)Druid依賴3個(gè)外部節(jié)點(diǎn):

  1. 深度存儲(chǔ):存放生成的segment文件股淡,提供給歷史節(jié)點(diǎn)進(jìn)行下載身隐,存儲(chǔ)介質(zhì)可以是本地硬盤、云服務(wù)唯灵、HDFS等

  2. 元數(shù)據(jù)存儲(chǔ):存儲(chǔ)segment文件的相關(guān)信息

  3. 分布式協(xié)調(diào)服務(wù):提供一致性的協(xié)調(diào)服務(wù)組件贾铝,一般是Zookeeper

2.3、節(jié)點(diǎn)之間的工作聯(lián)系

Druid類LSM-tree架構(gòu)的實(shí)時(shí)節(jié)點(diǎn)埠帕,在消費(fèi)實(shí)時(shí)流數(shù)據(jù)的時(shí)候垢揩,不會(huì)將數(shù)據(jù)寫入到WAL,而是將實(shí)時(shí)流數(shù)據(jù)寫入到堆內(nèi)存緩沖區(qū)里(相當(dāng)于HBase的Memstore)敛瓷,當(dāng)條件滿足后叁巨,會(huì)將數(shù)據(jù)flush到磁盤中生成一個(gè)數(shù)據(jù)塊(Segment Split),同時(shí)會(huì)在周期性時(shí)間內(nèi)將同一時(shí)間段內(nèi)的數(shù)據(jù)塊合并成一個(gè)大的數(shù)據(jù)塊Segment(相當(dāng)于HBase的Compact)呐籽,然后再上傳到Deep Storage中

當(dāng)歷史節(jié)點(diǎn)加載到了Segment后锋勺,會(huì)通過協(xié)調(diào)服務(wù)聲明從此時(shí)開始負(fù)責(zé)該Segment的讀取服務(wù),當(dāng)實(shí)時(shí)節(jié)點(diǎn)收到該聲明后也會(huì)立即向集群聲明不再負(fù)責(zé)對(duì)該Segment的查詢服務(wù)狡蝶。

對(duì)全局?jǐn)?shù)據(jù)來說庶橱,查詢節(jié)點(diǎn)會(huì)從實(shí)時(shí)節(jié)點(diǎn)(少量當(dāng)前數(shù)據(jù))和歷史節(jié)點(diǎn)(大量歷史數(shù)據(jù))分別查詢后再做一個(gè)結(jié)果的合并,最后再返回

2.2贪惹、存儲(chǔ)

采用了LSM-tree(日志結(jié)構(gòu)合并樹)的方法進(jìn)行數(shù)據(jù)存儲(chǔ)

對(duì)比\樹結(jié)構(gòu) 二叉查找樹 B+樹 日志結(jié)構(gòu)合并樹
特點(diǎn) 二叉有序樹悬包,保證左邊節(jié)點(diǎn)一定小于根節(jié)點(diǎn) 樹的內(nèi)部節(jié)點(diǎn)(索引節(jié)點(diǎn))只保存鍵,葉子節(jié)點(diǎn)保存值馍乙,并且有指向相鄰節(jié)點(diǎn)的指針 使用了兩種樹的數(shù)據(jù)結(jié)構(gòu)來進(jìn)行數(shù)據(jù)存儲(chǔ)布近,C0樹負(fù)責(zé)新的數(shù)據(jù)的插入更新和讀請(qǐng)求,存放在內(nèi)存緩存中丝格,C1樹由C0樹的數(shù)據(jù)刷寫到磁盤中生成撑瞧,特點(diǎn)是有序且不可更改(類似HBase的數(shù)據(jù)寫入與合并過程)
查找效率 log2N-logN,跟樹的高度显蝌、平衡性相關(guān) 所有葉子節(jié)點(diǎn)與根節(jié)點(diǎn)的距離相同预伺,任何查詢的效率很相似 存在內(nèi)存中的數(shù)據(jù)提供快速讀寫更新订咸,刷到磁盤中的數(shù)據(jù)使用布隆布隆過濾器進(jìn)行讀取
優(yōu)點(diǎn) 實(shí)現(xiàn)簡(jiǎn)單,樹平衡的狀態(tài)下能達(dá)到log2N的查找效率 樹的高度較低酬诀,查找效率高脏嚷,與二叉樹相比,樹的更新操作直接從葉子節(jié)點(diǎn)開始瞒御,以較小的代價(jià)實(shí)現(xiàn)自平衡 利于海量數(shù)據(jù)的快速寫入父叙,海量數(shù)據(jù)中快速讀取某條數(shù)據(jù)
缺點(diǎn) 極端非平衡狀態(tài)下,樹的查找效率達(dá)到logN肴裙,相當(dāng)于順序查找趾唱, 隨著數(shù)據(jù)的不斷插入,葉子節(jié)點(diǎn)會(huì)發(fā)生分裂蜻懦,導(dǎo)致邏輯上原本連續(xù)的數(shù)據(jù)會(huì)存在不同的物理磁盤位置上甜癞,在做范圍查詢時(shí)會(huì)導(dǎo)致較高的IO 不適合大范圍的數(shù)據(jù)量查詢,不適合更新刪除操作頻繁的場(chǎng)景

B樹和B+樹的操作詳解

2.4宛乃、數(shù)據(jù)結(jié)構(gòu)

  1. DataSource:類似于mysql的表悠咱,包含時(shí)間字段(默認(rèn)使用utc格式且精確到毫秒級(jí)別,這個(gè)時(shí)間字段是聚合與查詢的重要維度)征炼、數(shù)據(jù)維度析既、指標(biāo),DataSource是一個(gè)邏輯概念


    image-20201224200600479.png
  2. Segment:Segment是數(shù)據(jù)的物理存儲(chǔ)格式柒室,Druid通過Segment對(duì)數(shù)據(jù)進(jìn)行了橫縱向的數(shù)據(jù)切割。橫向指的是按照設(shè)定的時(shí)間粒度進(jìn)行將數(shù)據(jù)劃分到不同Segment的操作逗宜,這一設(shè)計(jì)使得Druid在查詢時(shí)不必再進(jìn)行明細(xì)數(shù)據(jù)的范圍掃描雄右,只需對(duì)所在時(shí)間范圍內(nèi)的數(shù)據(jù)塊進(jìn)行讀取操作,提高了數(shù)據(jù)的查詢效率纺讲;縱向指的是Druid使用了Bitmap等壓縮技術(shù)對(duì)數(shù)據(jù)塊進(jìn)行了壓縮

    sequenceDiagram
        participant 實(shí)時(shí)節(jié)點(diǎn)
        participant 元數(shù)據(jù)管理
        participant 深度存儲(chǔ)
        participant 協(xié)調(diào)節(jié)點(diǎn)
        participant 歷史節(jié)點(diǎn)
        participant zk
        實(shí)時(shí)節(jié)點(diǎn)-->>元數(shù)據(jù)管理: 消費(fèi)實(shí)時(shí)數(shù)據(jù)生成Segment的元信息
        實(shí)時(shí)節(jié)點(diǎn)->>深度存儲(chǔ): 傳輸實(shí)時(shí)消費(fèi)生成的Segment文件
        元數(shù)據(jù)管理-->>協(xié)調(diào)節(jié)點(diǎn): 
        協(xié)調(diào)節(jié)點(diǎn)-->>元數(shù)據(jù)管理: 協(xié)調(diào)節(jié)點(diǎn)得知Segment元信息
        協(xié)調(diào)節(jié)點(diǎn)-->>zk: 根據(jù)規(guī)則分配給符合條件的歷史節(jié)點(diǎn)
        zk-->>協(xié)調(diào)節(jié)點(diǎn): 
        歷史節(jié)點(diǎn)->>深度存儲(chǔ): 從存儲(chǔ)系統(tǒng)里下載指定的Segment
        zk-->>歷史節(jié)點(diǎn): 獲取對(duì)應(yīng)Segment的下載指令
        歷史節(jié)點(diǎn)-->>zk: 通過zk聲明其提供該Segment的查詢服務(wù)
        實(shí)時(shí)節(jié)點(diǎn)-->>zk: 通過zk聲明不再提供該Segment的查詢服務(wù)
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末擂仍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子熬甚,更是在濱河造成了極大的恐慌逢渔,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乡括,死亡現(xiàn)場(chǎng)離奇詭異肃廓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)诲泌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門盲赊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敷扫,你說我怎么就攤上這事哀蘑。” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵绘迁,是天一觀的道長(zhǎng)合溺。 經(jīng)常有香客問我,道長(zhǎng)缀台,這世上最難降的妖魔是什么棠赛? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮将硝,結(jié)果婚禮上恭朗,老公的妹妹穿的比我還像新娘。我一直安慰自己依疼,他們只是感情好痰腮,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著律罢,像睡著了一般膀值。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上误辑,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天沧踏,我揣著相機(jī)與錄音,去河邊找鬼巾钉。 笑死翘狱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的砰苍。 我是一名探鬼主播潦匈,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼赚导!你這毒婦竟也來了茬缩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤吼旧,失蹤者是張志新(化名)和其女友劉穎凰锡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體圈暗,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掂为,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了员串。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菩掏。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖昵济,靈堂內(nèi)的尸體忽然破棺而出智绸,到底是詐尸還是另有隱情野揪,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布瞧栗,位于F島的核電站斯稳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏迹恐。R本人自食惡果不足惜挣惰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望殴边。 院中可真熱鬧憎茂,春花似錦、人聲如沸锤岸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽是偷。三九已至拳氢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛋铆,已是汗流浹背馋评。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刺啦,地道東北人留特。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像玛瘸,于是被迫代替她去往敵國(guó)和親蜕青。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于名字的來歷 Pinot團(tuán)隊(duì)的Team Lead Kishore解釋說: 1捧韵,團(tuán)隊(duì)的人都喜歡黑皮諾市咆。 2汉操,黑皮諾...
    mikeliuy閱讀 1,414評(píng)論 0 1
  • 什么是Druid Druid是一個(gè)高效的數(shù)據(jù)查詢系統(tǒng)再来,主要解決的是對(duì)于大量的基于時(shí)序的數(shù)據(jù)進(jìn)行聚合查詢。數(shù)據(jù)可以實(shí)...
    Hanze2111閱讀 55,761評(píng)論 5 29
  • #refer1:http://www.cnblogs.com/xd502djj/p/6408979.html#re...
    liuzx32閱讀 1,903評(píng)論 0 1
  • 作者: 康凱森 日期: 2017-11-02 分類:OLAP What is Druid Why Druid Dr...
    茂盛哥哥閱讀 941評(píng)論 0 0
  • Broker是Druid中一種類型的節(jié)點(diǎn)磷瘤,在分布式集群部署環(huán)境中芒篷,它用來路由查詢。它能夠知曉ZK中存儲(chǔ)的關(guān)于seg...
    PowerMe閱讀 1,380評(píng)論 5 2