Alluxio技術內幕 如何百倍加速雲端元資料操作

2021-09-19 18:21:56 字數 2385 閱讀 4424

alluxio的主要功能之一是提供簡單而統一的介面,用來管理不同底層儲存系統內的檔案和目錄。即使底層儲存系統可能是具有不同介面型別的物件儲存,alluxio也可以充當中間層,並提供乙個統一的檔案介面**用程式與多個底層儲存系統進行互動。這在將應用程式從本地伺服器遷移到雲服務的場景中非常常見,本地部署的應用程式使用posix之類的檔案介面處理本地儲存,而雲儲存使用s3之類的物件儲存介面訪問資料。在應用程式和儲存系統之間使用alluxio可以節省大量開發時間,否則需要花費大量精力將應用程式從原始檔案介面更改為物件儲存介面。

與其他底層儲存系統相比,物件儲存通常是遠端部署的,訪問速度較慢。使用者在使用alluxio的檔案系統介面時,可能會無意間頻繁觸發對這些物件儲存的遠端訪問。當使用者遞迴地呼叫某些涉及大量檔案的元資料操作(ls或chmod / chgrp)時,由於會頻繁呼叫底層物件儲存介面,元資料訪問速度將會更慢。本文關注了最近在alluxio中針對加速這些元資料操作所做的一些優化。

最常用的元資料操作之一是liststatus操作或ls命令。使用者經常通過命令列以互動的方式使用這兩個命令。從使用者的角度來看,在互動過程中任何高延遲都是不可取的。此外,這些命令還用於許多分布式計算框架,如spark和mapreduce,因此效率的提高可以加速計算任務的執行。liststatus的選項之一是遞迴選項。使用recursive選項,使用者可以遞迴地查詢整個資料夾的元資料資訊。這通常會導致查詢很多的檔案和目錄,因此會非常耗時。

實驗結果表明,檔案系統主節點為了查詢元資料資訊,需要呼叫底層儲存系統介面,而事實上該過程是執行上述命令的瓶頸。對於將物件儲存作為其底層儲存進行部署來說,此問題更加嚴重。因為這些物件儲存通常是遠端部署的,因此liststatus等操作通常比在同一處部署的檔案系統(如hdfs)慢。提高liststatus遞迴操作效能的關鍵是減少對底層儲存的呼叫。

alluxio最近引入了兩個特性,改善了liststatus呼叫的效能。首先,alluxio v1.8開始利用一些物件儲存(如amazon s3)支援遞迴liststatus呼叫這一特性。通過一次api呼叫,alluxio可以獲得整個檔案和目錄列表及其元資料。此外,alluxio可以快取從這個遞迴呼叫中獲得的資訊以用於其他場合,如指紋生成和驗證。

此外,1.8.1版本的alluxio還包含了另一項優化:當由於從底層儲存系統載入元資料而在alluxio空間中建立了乙個檔案時,因為檔案是從底層儲存系統端開始建立的,因此檔案應該已經存在於底層儲存系統中了,alluxio將不會把檔案資訊持久化到底層儲存系統中。

聯合這兩種優化的效果是,對底層儲存系統的呼叫操作的時間複雜度將從o(n)減少至o(1),其中n代表被查詢的檔案數量。我們通過實驗評估了該優化的效果。我們建立乙個具有深層巢狀的目錄結構,每一層有10個或4個目錄,總共有10000個檔案。實驗在本地機器上部署了alluxio並將amazon s3作為底層儲存。通過對比alluxio 1.7.1版本和alluxio 1.8.0版本的效能,首次執行liststatus遞迴操作時效能有了一定的改進,執行時間能夠減少75%。第二次呼叫liststatus遞迴命令的執行時間則大大減少,時間從900秒減少到8秒。

alluxio 1.8.1版本則顯著提高了ls –r命令的首次執行耗時效能。聯合優化後第一次ls –r命令的時間從2000秒以上降低到20秒左右,隨後ls –r命令執行時間僅為7秒左右。下表總結了每次優化後遞迴執行liststatus的執行時間。

元資料操作是所有檔案系統的重要組成部分。其效能對於像alluxio這樣乙個經常管理幾個大型底層檔案系統的儲存系統來說更加關鍵。本文詳細介紹了我們最近在alluxio 1.8.1版本中所做的兩個優化,以顯著地提公升大規模遞迴載入元資料操作的效能。該優化改善了在命令列介面使用ls和du查詢alluxio檔案的使用者體驗。此外,這些優化還加快了乙個名為ufs sync的程序的執行,該程序旨在保持ufs和alluxio命名空間之間的檔案同步。

未來的工作

元資料管理是alluxio的關鍵部分,在本文中我們詳細介紹了最近為提高元資料載入速度所做的一些優化。與此同時,我們還在研究如何更有效地同步底層儲存系統元資料和儲存在alluxio master中的元資料。除了速度和效率之外,我們還致力於元資料管理的可擴充套件性。我們希望擴充套件元資料管理,以支援管理更大規模的檔案數量。本文中介紹的改進和未來的改進工作如下:

alluxio.atlassian.net/b

rowse/alluxio-3150

)在底層儲存系統中使用遞迴liststatus實現loadmetadata (alluxio-3205, https://

alluxio.atlassian.net/b

rowse/alluxio-3205

)減少在loadmetadata中與底層儲存系統互動的數量(alluxio-3300, https://

alluxio.atlassian.net/b

rowse/alluxio-3300

)alluxio.org/download/re

leases/alluxio-181-release

mysql 效能提公升百倍調優寶典

前言 全文中一共有常用的 事實上你如果花1 2周閱讀 理解 自己動手設一下後是需要這麼多引數的 76個引數,筆者把近10年裡3個億萬級專案的資料庫調優用此篇濃縮到了可能讀者只需要2周時間就可以掌握,同時我是按照 1.每乙個引數幹嗎?2.在某些典型硬體配置下的db上引數該設多少?3.設會怎麼樣?4.不...

FT雖漲20倍,Fcoin社群賦能數百倍恐仍未釋放

作者丨萊道君 丨萊道區塊鏈 laidaoblockchain 在半年不到時間裡,當幣安 火幣和ok傳統交易所平台幣迎來了超大漲幅的同時,以顛覆傳統交易所身份入局的fcoin,其平台幣ft,截止目前,已經由0.01美元附近 到0.2美元附近,低調 接近20倍。現如今fcoin改革的步伐漸漸步入正軌,儘...

戰疫期,釘釘如何扛起暴增百倍的流量?

人工擴容困境 效率低下 除卻以上困難,建立和運維如此巨大的集群規模還會帶來更多的技術挑戰。早在 2 月 2 日流量洪峰帶來之前,釘釘就通過阿里雲的資源編排服務 resource orchestration service,簡稱 ros 提高集群部署效率 幫助其快速擴容。而這款服務不負重托,幫助釘釘在...