摘要:不過(guò)這并不是團(tuán)隊(duì)工作的全部。另外,系統(tǒng)面臨的另一個(gè)挑戰(zhàn)是資源隔離。最上層仍然是的計(jì)算層,而下層則是類似的存儲(chǔ)協(xié)處理器的架構(gòu)。另一個(gè)計(jì)劃中但是仍然沒(méi)有開(kāi)工的事情是,我們希望在協(xié)處理器層加入功能,讓數(shù)據(jù)可以通過(guò)網(wǎng)絡(luò)進(jìn)行模型的重分布操作。
前面兩期我們介紹了?TiDB 團(tuán)隊(duì)和?TiKV 團(tuán)隊(duì),頗受好評(píng),今天我司數(shù)據(jù)庫(kù)專家馬曉宇老師將為大家介紹 PingCAP 最具活力的團(tuán)隊(duì)——?AP(Analytical Product)?團(tuán)隊(duì),如果你對(duì)親手打造酷炫的大數(shù)據(jù)分析產(chǎn)品感興趣,就快快投個(gè)簡(jiǎn)歷來(lái)和我們聊聊吧~
大家都知道 TiDB 是一款定位于在線事務(wù)處理/在線分析處理( HTAP: Hybrid Transactional/Analytical Processing)的融合型數(shù)據(jù)庫(kù)產(chǎn)品,加強(qiáng)和補(bǔ)齊 HTAP 中的 AP 環(huán)節(jié)是這個(gè)團(tuán)隊(duì)的重要工作職責(zé)。
TiDB 的 Coprocessor(協(xié)處理器)架構(gòu)使得大量計(jì)算可以并行進(jìn)行,例如由協(xié)處理器進(jìn)行謂詞過(guò)濾,預(yù)聚合等等,這樣一來(lái)很多計(jì)算被眾多 TiKV 資源分擔(dān),并且匯聚到 TiDB 的計(jì)算將大大減少,由此雖然 TiDB 本身仍然是單機(jī),卻可以很大程度滿足 AP 需求。
不過(guò)這并不是 AP 團(tuán)隊(duì)工作的全部。
TiFlashTiFlash 是一個(gè)相對(duì)獨(dú)立完整的分析型數(shù)據(jù)庫(kù)產(chǎn)品。獨(dú)立,說(shuō)明歷史包袱會(huì)比較小,可以嘗試各種可能的設(shè)計(jì);同時(shí),我們也希望它盡可能完整,能承擔(dān)一個(gè)分析型數(shù)據(jù)庫(kù)應(yīng)有的職責(zé)。這個(gè)項(xiàng)目需要熟悉 C++,熟悉分布式系統(tǒng)的 Infra 工程師同學(xué)們?nèi)牖铩?/p> Why
也許您看了 TiDB / TiSpark 的架構(gòu),會(huì)有個(gè)疑問(wèn)。TiDB 仍然使用的是行格式存儲(chǔ),但似乎大多數(shù)分析型數(shù)據(jù)庫(kù)都是列式存儲(chǔ)喔?
沒(méi)錯(cuò)。這就是我們開(kāi)新坑的主要目的之一。
列式存儲(chǔ)能提供更高的壓縮比,增加 IO 效率(畢竟 IO 在很多時(shí)候是最慢的一環(huán)),也使引擎能只讀取需要的列,更進(jìn)一步加快讀取速度。但是列式存儲(chǔ)在 TP 場(chǎng)景下會(huì)使 IO 變得零散,如果使用了壓縮就會(huì)更麻煩。因此基本上交易型系統(tǒng)還是會(huì)使用行格式存儲(chǔ)的(就像 TiDB 現(xiàn)在這樣)。
另外,HTAP 系統(tǒng)面臨的另一個(gè)挑戰(zhàn)是資源隔離。當(dāng)所有計(jì)算任務(wù)都依賴于 TiKV 存儲(chǔ)的時(shí)候,我們很難有效地進(jìn)行資源隔離:不管如何處理,AP 任務(wù)都有可能影響 TP 的穩(wěn)定。因此,我們希望有一組獨(dú)立的資源提供 AP 服務(wù)。
Raft 和列存副本Multi-Raft 協(xié)議使我們有了另一種選擇:何不把列存當(dāng)做一個(gè) Raft Learner 副本來(lái)實(shí)現(xiàn)呢?Raft Learner 接入讓我們得以在對(duì) TP 端極低的消耗下,提供一致性的數(shù)據(jù)讀取,同時(shí)又兼顧了資源隔離。這大概算是一個(gè)相當(dāng)有創(chuàng)新的做法了 :)
其實(shí)您也可以認(rèn)為列存副本是某種奇特索引結(jié)構(gòu),因此計(jì)算層其實(shí)可以在行存和列存中根據(jù)代價(jià)進(jìn)行選擇。例如我們進(jìn)行兩表 Join,也許一張表可以通過(guò)索引過(guò)濾大部分?jǐn)?shù)據(jù),而另一邊則希望通過(guò)列存減少掃描代價(jià),那么我們也可以同時(shí)使用行存+索引和列存進(jìn)行 Join。
列存 + Raft 副本是一個(gè)正在進(jìn)行的任務(wù),為了使列存能夠支持快速的 MVCC 更新和刪除,我們專門開(kāi)發(fā)了新的存儲(chǔ)引擎,同時(shí)也在和 TiKV 組緊密合作對(duì)接 Raft 協(xié)議。
如上圖,這就是一個(gè) TiFlash + TiDB 集群。最上層仍然是 TiSpark + TiDB 的計(jì)算層,而下層則是類似 TiKV 的存儲(chǔ) + 協(xié)處理器的架構(gòu)。其中一部分存儲(chǔ)引擎節(jié)點(diǎn)將通過(guò) Raft 協(xié)議和 TP 區(qū)連接,實(shí)時(shí)同步數(shù)據(jù);而另一部分則作為獨(dú)立的寫入?yún)^(qū),支持純 AP 需求。
現(xiàn)在我們的列存引擎還只是初版,我們正在進(jìn)行更多的探索,嘗試不同的存儲(chǔ)格式和技術(shù),讓它變得更快,適合更多場(chǎng)景。而要支持獨(dú)立寫入,也代表 TiFlash 本身將會(huì)向一個(gè)完整的 MPP 數(shù)據(jù)庫(kù)演進(jìn),而這無(wú)疑需要耗費(fèi)大量人力??傊浅F诖魑煌瑢W(xué)的加盟。
TiFlash MPP Engine另一個(gè)計(jì)劃中但是仍然沒(méi)有開(kāi)工的事情是,我們希望在協(xié)處理器層加入 Exchange / Shuffle 功能,讓數(shù)據(jù)可以通過(guò)網(wǎng)絡(luò)進(jìn)行 MPP 模型的重分布操作。
如果我們?cè)趨f(xié)處理器層加入 Pipeline 模型的數(shù)據(jù)交換,計(jì)算層 TiDB 作為一個(gè)單節(jié)點(diǎn)服務(wù)器也可以享受到集群計(jì)算的加速。而 TiSpark 在運(yùn)行非長(zhǎng)時(shí)間 ETL 任務(wù)時(shí)也可以選擇下推計(jì)算到 MPP 計(jì)算節(jié)點(diǎn)以避免 Spark Shuffle 高容錯(cuò)模型帶來(lái)的消耗。
實(shí)際上要實(shí)現(xiàn)基于 Exchange 和重分布的 Query Engine 是非常龐大的一件事。幾乎大部分算子都需要重新改造,完全做到需要很久。不過(guò)好在我們的計(jì)算層各自都已經(jīng)實(shí)現(xiàn)了完備的算子集,這樣我們可以按照合理的進(jìn)度逐步構(gòu)建 MPP 引擎,逐步開(kāi)放更多可下推的算子。
與此同時(shí),在這個(gè)引擎上,我們也希望試驗(yàn)一些更新的計(jì)算模型,例如完整的向量化算子實(shí)現(xiàn),或者結(jié)合 JIT 進(jìn)行加速,甚至嘗試 GPU 等,都是預(yù)期中的任務(wù)。
TiSparkTiSpark 是我們組的另一個(gè)產(chǎn)品。TiSpark 是一款深度訂制的 Spark Connection Layer,將 Spark 平臺(tái)深度整合到現(xiàn)有的 TiDB 產(chǎn)品棧里。它借助了 Apache Spark 的計(jì)算平臺(tái),直接對(duì)接存儲(chǔ)層(TiKV 和 TiFlash)讀取數(shù)據(jù),并下推可能的計(jì)算以加速。
TiSpark 的定位是多重的:一方面在 TiFlash 還無(wú)法完整承擔(dān) MPP 引擎職責(zé)的當(dāng)下,它是我們?cè)诔?guī)模計(jì)算下的首選;另一方面,借助 Spark 我們將 TiDB 延伸到了大數(shù)據(jù)領(lǐng)域,配合 TiFlash,我們可以替代相當(dāng)一部分傳統(tǒng)上需要 Hadoop 集群的場(chǎng)景。
通過(guò)對(duì)接 Spark 的 Extension 接口,TiSpark 得以在不直接修改 Spark 源代碼的前提下,深度訂制 Spark SQL 的根本行為,包括加入算子,擴(kuò)充語(yǔ)法,修改執(zhí)行計(jì)劃等等,讓它看起來(lái)更像是一款 Spark 原生產(chǎn)品而非第三方擴(kuò)展。
由于直接對(duì)接了存儲(chǔ),我們也可以像傳統(tǒng)數(shù)據(jù)庫(kù)一樣利用好存儲(chǔ)的特點(diǎn),實(shí)現(xiàn)一些 Hadoop 體系無(wú)法完成的功能,例如 IndexJoin,Index only scan 等。另外,安全和審計(jì)體系,基于 Spark Streaming 的異步觸發(fā)器和看板,或者 PL/SQL 等,都是之后可能的選擇??傊?,這個(gè)項(xiàng)目還很初步,還有很多可以折騰的事情。
另外,TiSpark 暫時(shí)還是一個(gè)只讀的系統(tǒng),但是我們也準(zhǔn)備加入寫入和修改的支持(數(shù)據(jù)編碼,索引維護(hù),事務(wù)支持等等),這樣 TiSpark 也將成為一個(gè)能相對(duì)獨(dú)立使用的完整產(chǎn)品。
我們也期待您的加盟。如果您是大數(shù)據(jù)領(lǐng)域新手,這個(gè)項(xiàng)目可以讓你深入了解 Spark 的架構(gòu)和實(shí)現(xiàn)細(xì)節(jié);如果您是老鳥(niǎo),除了一起快樂(lè)寫代碼,還可以一起制定產(chǎn)品 Roadmap 也許也是您樂(lè)意做的事情;總之,這是一個(gè)老少咸宜的項(xiàng)目。
所以來(lái)聊聊看吧?這兩個(gè)項(xiàng)目是眼下 AP 團(tuán)隊(duì)正在折騰的東西,很多部分都還處在比較初期的階段,而且這里寫的都只是我們比較確定會(huì)開(kāi)展的工作,有一些想法因?yàn)槿肆Σ蛔憬?jīng)驗(yàn)不足我們只敢想?yún)s沒(méi)辦法寫在這里。如果有了各位同學(xué)的加盟,相信這些產(chǎn)品可以變得更完善,更野心勃勃。
加入我們吧!我們認(rèn)為優(yōu)秀的工程師或多或少有以下共同特質(zhì):
A Quick Learner
An Earnest Curiosity
Faith in Open Source
Self-driven? ??
Get Things Done
如果你符合以上特質(zhì),歡迎進(jìn)入招聘頁(yè)面查看目前開(kāi)放的工作機(jī)會(huì):
https://www.pingcap.com/recruit-cn/join/#positions
簡(jiǎn)歷投遞通道:[email protected]
實(shí)習(xí)生:公司的各項(xiàng)福利和學(xué)習(xí)資源對(duì)實(shí)習(xí)生全面開(kāi)放,更重要的是實(shí)習(xí)生還未畢業(yè)就有機(jī)會(huì)接觸工業(yè)級(jí)項(xiàng)目,而且實(shí)習(xí)期間表現(xiàn)優(yōu)異者將有機(jī)會(huì)獲得校招綠色通道特權(quán)。如果小伙伴們時(shí)間不夠充裕,也可以先從社區(qū) Contributor 做起,或許下一期?Talent Plan?的主角就是你!
伯樂(lè)推薦:如果你身邊有符合以上要求的小伙伴,也可以找我們聊一聊,推薦成功就有機(jī)會(huì)獲得伯樂(lè)推薦獎(jiǎng)勵(lì)(iPad、iPhone、MacBook Pro 等等)。伯樂(lè)推薦郵件格式:[伯樂(lè)推薦] 候選人姓名-職位名稱-推薦人姓名-推薦人手機(jī)號(hào)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/17941.html
摘要:所以很多對(duì)不太了解的小伙伴看完我們的招聘頁(yè)面,可能會(huì)覺(jué)得那些五沒(méi)花聽(tīng)八說(shuō)門過(guò)的研發(fā)類職位是特別神秘的存在吧招聘頁(yè)面上一小部分神秘部隊(duì)那么這些神秘團(tuán)隊(duì)到底是做什么的下面就簡(jiǎn)單的介紹一下這些研發(fā)團(tuán)隊(duì)是做什么的吧。 過(guò)去一年在 PingCAP 全力奔跑的同時(shí),越來(lái)越多的小伙伴開(kāi)始關(guān)注我們、了解我們,我們的團(tuán)隊(duì)也愈加龐大,我們也期待更多對(duì)我們感興趣的小伙伴加入我們,跟我們一起做點(diǎn)有意義的事情。...
摘要:負(fù)責(zé)構(gòu)建分布式壓力測(cè)試框架,穩(wěn)定性測(cè)試框架。但同時(shí),這些獨(dú)立的模塊最終會(huì)形成這一個(gè)整體。分布式一致性算法,現(xiàn)在無(wú)非就是兩類,和,我們選擇了。對(duì)各個(gè)模塊進(jìn)行詳細(xì)的測(cè)試,使用等對(duì)系統(tǒng)進(jìn)行注入測(cè)試。設(shè)計(jì)并實(shí)現(xiàn)性能回歸測(cè)試平臺(tái)。 上周我們推送了?TiDB 團(tuán)隊(duì)職位解讀文章,當(dāng)天就有很多簡(jiǎn)歷砸來(lái),我們深深感受到了小伙伴們的熱情~ 趁熱打鐵,今天我司首席架構(gòu)師唐劉老師將帶大家了解一下傳說(shuō)中「面試通...
閱讀 1486·2021-09-28 09:44
閱讀 2562·2021-09-28 09:36
閱讀 1249·2021-09-08 09:35
閱讀 2010·2019-08-29 13:50
閱讀 850·2019-08-29 13:29
閱讀 1165·2019-08-29 13:15
閱讀 1757·2019-08-29 13:00
閱讀 3033·2019-08-26 16:16