Alluxio(Tachyon) 作為京東計(jì)算框架的容錯(cuò)可插拔優(yōu)化組件

轉(zhuǎn)自:https://blog.csdn.net/maobaolong/article/details/79337538

京東大數(shù)據(jù)平臺(tái)

規(guī)模

集群規(guī)模?

服務(wù)器規(guī)模30000臺(tái)+答捕,離線(xiàn)集群總規(guī)模18000+ , 用戶(hù)6000+

計(jì)算能力?

離線(xiàn)數(shù)據(jù)日處理40PB+,日運(yùn)行Job數(shù)100萬(wàn)+

存儲(chǔ)能力?

總數(shù)據(jù)量400PB+佳窑,日增數(shù)據(jù)量500TB+

業(yè)務(wù)能力?

業(yè)務(wù)主題40+崖蜜,數(shù)據(jù)模型450+

大數(shù)據(jù)平臺(tái)架構(gòu)

Alluxio介紹

Alluxio(之前的Tachyon)。是世界上第一個(gè)以?xún)?nèi)存速度統(tǒng)一不同存儲(chǔ)系統(tǒng)的系統(tǒng)识埋。在大數(shù)據(jù)生態(tài)中树埠,Alluxio位于計(jì)算框架和各種存儲(chǔ)系統(tǒng)之間稽荧。此外年碘,Alluxio存儲(chǔ)為中心的架構(gòu)澈歉,使數(shù)據(jù)訪(fǎng)問(wèn)速度的數(shù)量級(jí)比現(xiàn)有解決方案快得多。

Alluxio社區(qū)的優(yōu)勢(shì)

Alluxio社區(qū)的以下優(yōu)勢(shì)使得Alluxio越來(lái)越多的被很多知名企業(yè)所應(yīng)用屿衅,也吸引越來(lái)越多的貢獻(xiàn)者埃难。

活躍開(kāi)源社區(qū)?

開(kāi)源是大勢(shì)所趨。800多Contributor涤久,1723次fork涡尘。6000多次PR。社區(qū)Maintainer活躍度高响迂,提出的PR很快就有回復(fù)

創(chuàng)始人為華人?

華人contributor特別多考抄,中文文檔資料特別多。加入門(mén)檻底蔗彤,還有新手教程川梅,對(duì)于新contributor非常友好。

CI完備?

alluxio-bot(PR title)幕与、 AmplabJenkins作為PR builder(License header\Checkstyle\findbugs\test)

Alluxio in JD

Alluxio在京東的應(yīng)用主要在JDPresto、Kylin镇防、HDFS啦鸣。本文主要介紹JDPresto在京東的應(yīng)用。

JDPresto on Alluxio

Alluxio作為可插拔的容錯(cuò)組件應(yīng)用于京東體系內(nèi)諸多計(jì)算框架来氧。

利用Alluxio優(yōu)秀的緩存能力提供對(duì)ADHOC诫给, 實(shí)時(shí)流計(jì)算天生的支撐香拉,降低集群對(duì)于網(wǎng)絡(luò)消耗的依賴(lài)。

JDPresto on Alluxio已經(jīng)帶來(lái)了10倍平均性能提升中狂。Alluxio作為可插拔的優(yōu)化組件凫碌,當(dāng)Alluxio服務(wù)不可用時(shí),JDPresto可以直接訪(fǎng)問(wèn)HDFS胃榕。我們的工作是擴(kuò)展Alluxio盛险,增強(qiáng)Alluxio和HDFS的一致性。

Alluxio已經(jīng)在我們的生產(chǎn)環(huán)境運(yùn)行1年多了勋又。

優(yōu)勢(shì)

可插拔

容錯(cuò)

增強(qiáng)本地性

架構(gòu)和流程介紹

下圖可以看出用Alluxio與不用Alluxio的Presto集群增加了隔離性和本地性

下圖可以看出Presto會(huì)優(yōu)先讀取本地的緩存苦掘,如果讀取Alluxio異常,則會(huì)直接讀HDFS

下圖是部署圖

下圖為使用JDPresto楔壤、JDPresto on alluxio鹤啡、 JDPresto混合模式的對(duì)比圖

下圖是測(cè)試5次Presto讀時(shí)間用Alluxio和不用Alluxio的對(duì)比

對(duì)比測(cè)試——sql查詢(xún)速度

下圖是在Presto的交互終端執(zhí)行sql查詢(xún)

下圖是在Presto的Web界面看到sql的執(zhí)行情況

通過(guò)上邊的查詢(xún)結(jié)果可以看出采用Alluxio進(jìn)行緩存,由于增加了本地性減少網(wǎng)絡(luò)消耗以及使用內(nèi)存進(jìn)行存儲(chǔ)減少I(mǎi)O蹲嚣,所以查詢(xún)sql速度提升顯著递瑰。需要說(shuō)明的是采用Alluxio進(jìn)行緩存,第一次查詢(xún)需要從底層文件系統(tǒng)讀取數(shù)據(jù)內(nèi)容并緩存到Alluxio的Worker中隙畜,并且當(dāng)時(shí)測(cè)試的版本Alluxio為1.4版本抖部,采用的是同步緩存,所以速度反而會(huì)慢禾蚕,1.5版本以后的Alluxio已經(jīng)采用異步緩存您朽,優(yōu)化了第一次讀取的速度。

性能壓測(cè)——轉(zhuǎn)發(fā)線(xiàn)上一天查詢(xún)請(qǐng)求

我們開(kāi)發(fā)了性能壓測(cè)工具换淆,轉(zhuǎn)發(fā)線(xiàn)上sql到兩個(gè)presto集群哗总,一個(gè)使用Alluxio,為測(cè)試倍试,另一個(gè)不使用Alluxio為對(duì)照讯屈。兩個(gè)Presto集群在同一個(gè)HDFS集群中。

通過(guò)上圖可以看出县习,紅色線(xiàn)(使用Alluxio)在40分鐘時(shí)已經(jīng)執(zhí)行完所有sql涮母,而綠色線(xiàn)在60分鐘也沒(méi)有執(zhí)行完。

我們的工作

為了讓Alluxio在JD更好的發(fā)揮其作用躁愿,我們?cè)贏(yíng)lluxio叛本、Presto以及on Yarn方面做的工作如下圖所示:

京東的貢獻(xiàn)

ItemCount

PMC1

Contributor6

PR53

Merged PR50

Merged Commit221

Additions / Deletions+4153 / -2254

新界面

基于ui-grid

支持排序、分頁(yè)彤钟、過(guò)濾

可以指定位置顯示文件或文件夾內(nèi)容

很遺憾来候,新界面Patch沒(méi)有合并到主分支了,需要的話(huà)逸雹,可以自行打PATCH营搅。ALLUXIO-2557

一致性檢查

啟動(dòng)檢查:在啟動(dòng)的時(shí)候進(jìn)行一致性檢查云挟,將不一致的文件或文件夾重新加載元數(shù)據(jù)

每次訪(fǎng)問(wèn)都檢查:每次訪(fǎng)問(wèn)文件或文件夾時(shí),都會(huì)與底層文件系統(tǒng)進(jìn)行比對(duì)转质,不一致則更新元數(shù)據(jù)园欣。已經(jīng)演變成目前的指紋(FingerPrint)功能。

基于水位的空間置換策略

當(dāng)Alluxio存儲(chǔ)空間不足時(shí)休蟹,需要采用一定的空間回收策略進(jìn)行回收沸枯。同步回收是舊版的回收實(shí)現(xiàn)。它當(dāng)客戶(hù)請(qǐng)求比當(dāng)前在worker上可用空間更多空間時(shí)啟動(dòng)回收程序釋放足夠的空間來(lái)滿(mǎn)足要求鸡挠。 這導(dǎo)致許多小的回收嘗試辉饱,并不高效。而采用基于高低水位的異步空間回收器拣展,當(dāng)空間空閑達(dá)到高水位時(shí)彭沼,進(jìn)行空間釋放,釋放到空間空閑達(dá)到低水位時(shí)停止釋放空間备埃。

JVM暫停監(jiān)視器

這是一個(gè)監(jiān)視JVM暫停情況的服務(wù)姓惑。該服務(wù)建立一個(gè)簡(jiǎn)單的線(xiàn)程。在此線(xiàn)程中按脚,在循環(huán)中運(yùn)行sleep一段時(shí)間方法于毙,如果sleep花費(fèi)的時(shí)間比傳遞給sleep方法的時(shí)間長(zhǎng),就意味著JVM或者宿主機(jī)已經(jīng)出現(xiàn)了停頓處理現(xiàn)象辅搬,可能會(huì)導(dǎo)致其它問(wèn)題唯沮,如果這種停頓被監(jiān)測(cè)出來(lái)達(dá)到一定的閾值,線(xiàn)程會(huì)打印相應(yīng)級(jí)別的消息堪遂。還可以把額外sleep的時(shí)間進(jìn)行metrics統(tǒng)計(jì)介蛉,外部的監(jiān)控系統(tǒng)可以監(jiān)控Alluxio的健康狀態(tài)以及進(jìn)行報(bào)警。

Shell命令

由于現(xiàn)有的Shell命令不能滿(mǎn)足我們的需求溶褪,于是改進(jìn)了現(xiàn)有的命令以及實(shí)現(xiàn)了一些新的實(shí)用的shell命令币旧。

整合CopyFromLocal、CopyToLocal猿妈、Cp

ls命令增加?-h?參數(shù)顯示帶單位的文件大小吹菱,默認(rèn)顯示字節(jié)大小,與標(biāo)準(zhǔn)的文件系統(tǒng)命令實(shí)用習(xí)慣一致彭则。

修改bin/alluxio鳍刷,支持-debug參數(shù)開(kāi)啟的時(shí)候,增加ALLUXIO_USER_DEBUG_JAVA_OPTS環(huán)境變量的值到JVM參數(shù)中俯抖,該環(huán)境變量可以定位成遠(yuǎn)程調(diào)試參數(shù)输瓜,例如ALLUXIO_SHELL_DEBUG_JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5603"

修改load命令,增加--local參數(shù),如果該文件已經(jīng)存在在A(yíng)lluxio中前痘,設(shè)置了--local選項(xiàng),并且有本地worker担忧,則數(shù)據(jù)將移動(dòng)到該worker上芹缔。原有的邏輯如果其它worker已經(jīng)存在該文件,則不會(huì)將文件load在本地worker瓶盛。

修改rm命令最欠,增加-alluxioOnly參數(shù)只刪除Alluxio的元數(shù)據(jù)和緩存數(shù)據(jù),并不會(huì)刪除底層文件系統(tǒng)內(nèi)容惩猫。

動(dòng)態(tài)修改日志級(jí)別

日志庫(kù)將日志分為5 個(gè)級(jí)別芝硬,分別為DEBUG、INFO轧房、WARN拌阴、ERROR 和FATAL。這5 個(gè)級(jí)別對(duì)應(yīng)的日志信息重要程度不同奶镶,它們的重要程度由低到高依次為DEBUG < INFO < WARN < ERROR < FATAL迟赃。日志輸出規(guī)則為:只輸出級(jí)別不低于設(shè)定級(jí)別的日志信息。比如厂镇,級(jí)別設(shè)定為INFO纤壁,則INFO、WARN捺信、ERROR和FATAL 級(jí)別的日志信息都會(huì)被輸出酌媒,但級(jí)別比INFO 低的DEBUG 則不會(huì)被輸出。

我們有時(shí)希望在不重啟服務(wù)的情況下動(dòng)態(tài)設(shè)置某個(gè)Logger的日志級(jí)別迄靠。

所以秒咨,我們實(shí)現(xiàn)了Alluxio shell的一個(gè)logLevel命令,可以在特定實(shí)例上獲取或更改特定類(lèi)的日志級(jí)別梨水。

語(yǔ)法是alluxio logLevel --logName = NAME [--target = ] [--level = LEVEL]拭荤,其中l(wèi)ogName表示日志的名稱(chēng),target列出了需要設(shè)定的Alluxio master或worker列表 疫诽。 如果提供了參數(shù)level舅世,則命令更改日志級(jí)別,否則將獲取并顯示當(dāng)前日志級(jí)別奇徒。

例如雏亚,以下命令將foo.Bar類(lèi)的日志級(jí)別在master和192.168.100.100:30000的worker上設(shè)置為調(diào)試級(jí)別。

alluxio logLevel --loggerName = foo.Bar --target = master摩钙,192.168.100.100:30000--level = DEBUG

1

以下命令獲取foo.Bar類(lèi)的所有worker的日志級(jí)別

alluxio logLevel --loggerName = foo.Bar --target = workers

1

問(wèn)題修復(fù)

修改了若干問(wèn)題罢低,不一一列舉。

未來(lái)工作

跟蹤Alluxio社區(qū)PATCH,向Alluxio提高代碼

完善壓測(cè)工具

完善監(jiān)控和預(yù)警

穩(wěn)定性提升

可調(diào)試支持

擴(kuò)展其他框架使用

Fix Bug

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末网持,一起剝皮案震驚了整個(gè)濱河市宜岛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌功舀,老刑警劉巖萍倡,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異辟汰,居然都是意外死亡列敲,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)帖汞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)戴而,“玉大人,你說(shuō)我怎么就攤上這事翩蘸∷猓” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵催首,是天一觀(guān)的道長(zhǎng)扁眯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)翅帜,這世上最難降的妖魔是什么姻檀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮涝滴,結(jié)果婚禮上绣版,老公的妹妹穿的比我還像新娘。我一直安慰自己歼疮,他們只是感情好杂抽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著韩脏,像睡著了一般缩麸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赡矢,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天杭朱,我揣著相機(jī)與錄音,去河邊找鬼吹散。 笑死弧械,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的空民。 我是一名探鬼主播刃唐,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了画饥?” 一聲冷哼從身側(cè)響起衔瓮,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抖甘,沒(méi)想到半個(gè)月后报辱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡单山,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了幅疼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片米奸。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖爽篷,靈堂內(nèi)的尸體忽然破棺而出悴晰,到底是詐尸還是另有隱情,我是刑警寧澤逐工,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布铡溪,位于F島的核電站,受9級(jí)特大地震影響泪喊,放射性物質(zhì)發(fā)生泄漏棕硫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一袒啼、第九天 我趴在偏房一處隱蔽的房頂上張望哈扮。 院中可真熱鬧,春花似錦蚓再、人聲如沸滑肉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)靶庙。三九已至,卻和暖如春娃属,著一層夾襖步出監(jiān)牢的瞬間六荒,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工矾端, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恬吕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓须床,卻偏偏與公主長(zhǎng)得像铐料,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理钠惩,服務(wù)發(fā)現(xiàn)柒凉,斷路器,智...
    卡卡羅2017閱讀 134,628評(píng)論 18 139
  • Zookeeper用于集群主備切換篓跛。 YARN讓集群具備更好的擴(kuò)展性膝捞。 Spark沒(méi)有存儲(chǔ)能力。 Spark的Ma...
    Yobhel閱讀 7,255評(píng)論 0 34
  • 該論文來(lái)自Berkeley實(shí)驗(yàn)室愧沟,英文標(biāo)題為:Resilient Distributed Datasets: A ...
    九七學(xué)姐閱讀 1,771評(píng)論 0 3
  • 1 出國(guó)沐寺,一個(gè)炸彈般的決定 我一直這樣覺(jué)的林艘,黃健翔做足球解說(shuō)員是上天刻意安排的,他在剛生下來(lái)時(shí)怎么也無(wú)法想到自己會(huì)...
    林舍爾閱讀 341評(píng)論 0 0
  • 文/亦雨蘭軒 人生只若初見(jiàn)混坞,意綿綿狐援。四月平和天氣,淚漣漣究孕。 擦不掉啥酱, 強(qiáng)歡笑, 惹誰(shuí)憐厨诸?自此陰陽(yáng)思念镶殷,分緣淺。
    亦雨蘭軒閱讀 401評(píng)論 12 5