Alluxio這個項目是有歷史的,是12年下祭起源于UC Berkeley AmPLad,坐騎這個項目名字叫Tachyon,16年早期更名為Alluxio,這個名字的解釋就是ALL是所有,還有光照的意思,通過這個項目對數據的存儲和訪問有統一性,而且能夠對數據有所提升,這是目標。
顧榮:謝謝主持人的介紹,我叫顧榮,我是來自南京大學。Alluxio這個項目是有歷史的,是12年下祭起源于UC Berkeley AmPLad,坐騎這個項目名字叫Tachyon,16年早期更名為Alluxio,這個名字的解釋就是ALL是所有,還有光照的意思,通過這個項目對數據的存儲和訪問有統一性,而且能夠對數據有所提升,這是目標。項目2013年開源,現在最新版本是1.4.0。值得一提的是Alluxio這個數據統計可以看到,它的貢獻者、數量其實是整個大數據開源項目增長非??斓?,目前我們有來自一百多個組織,我本人也是13年6月份加入,快四年了,也在很多的公司得到了使用,使用規模也非常大,我們南大實驗室一直對這個項目貢獻了很多源碼和相關的其他文檔工作。Alluxio這個項目在全球已經被很多知名的IT企業使用,比如百度、去哪兒、巴克萊銀行也在用。我們回顧一下為什么需要Alluxio這個項目,意義在哪。很多的人都知道BIG DATA,隨著我們很多應用對大數據處理需求越來越多,特點也變得越來越多,所以網上也出現了很多的引擎,比如Spark這樣的,我們知道大數據要處理,第一步要解決大數據的存儲問題,全下來我們才好進行后續的相關的根據需求進行處理,出現了開源的或者商業的,其實里面云計算貢獻了很多的工作,比如SAMZA等等。首先計算層和存儲層系統都會帶來問題,問題是這樣的,整個計算的引擎跟人對接的時候需要寫很多東西,我們對接的時候都需要重新組建一次,這個是非常復雜的,而且不利于引用的遷移,Alluxio想做的工作是這個項目介于傳統的存儲層和計算云之間,我們向下統一的各種各樣的存儲,往上統一的接口可以由不同的計算引擎,不同的APP進行訪問,這樣我們就可以將所有的數據訪問成一個統一的接口組織起來,這里還有一個特點,為什么剛剛提到云計算,我們充分應用了計算,我們是分布式的,我們可以向上提供訪問性的突破。
Alluxio這個項目我們在介紹它后面之前先簡單的看一下最近時間關于Alluxio一些報道或者我們一些發展動向,首先我們被收購了,后來我們和收購公司下面做了一些對接,有一些可以作為Alluxio的底層存儲系統,華為存儲團隊也聯合發布了一些系統,首先我們跟華為的團隊來聯合做一些工作。那么這個會議大家也應該聽過,北京新加坡都有開,在17年1月3號的發展趨勢上第六條下發了存儲和計算進行結耦,這是特別重要的發展方向,特別的提到了一個項目,Alluxio在其中起到了非常重要的作用。
那么我們總結一下我們技術的特點,首先第一Alluxio技術特點是將計算和數據共同安置,這里計算和數據共同安置是這個數據放在本地的里面,底層的文件系統可以不和計算一起安置,因為里面已經部署好了,沒有辦法控制它和計算進行安置,一起安置的好處就是我們可以提供內層的訪問速度,而不是靠網絡,第二個特點是提供統一的命名空間,從而虛擬化底層不同的存儲系統,Alluxio的文件系統空間是一個目錄,對你們所有的數據操作就像訪問系統一樣,比如模擬AB是你不需要管的,舉例子,我們可以用Alluxio建一個目錄,像A、B子目錄,你可以統一的管理,這樣我寫的應用不管怎么變,也不管底層的文件系統怎么變,這個之間不需要改接口。
第三個是橫向擴展的系統架構,Alluxio是一個分布式文件系統,我們可以針對你應用的數據訪問量的增長很好的加緊部署,不需要重新做復雜的配置。第四個強調Alluxio對于系統整體提升是一個軟件層的解決方案,跟剛剛提過的一樣,我不需要對硬件有什么特別的要求或者依賴,我們可以更靈活的去選擇自己硬件的配置跟負載情況,也可以很靈活的選擇上層的計算軟件的一些模型計算方式,根據應用來進行決定。系統優勢總結起來有三點,第一個是Unificetion,根據上面的應用可以訪問底層各種各樣的數據,第二個好處是Performance為,我們可以通過這個把分布式內存用好,應用數據訪問的特點提供內存級的訪問速度,可以帶來多個數量級以上的性能提升,第三是Flexibility,我們結耦以后就可以應用數據開發和底層軟件結合,喜歡使用什么就用什么,計算和存儲的選擇變得獨立,可以根據需要而進行。
下面我介紹Alluxio典型的三個應用場景,第一個是計算和存儲分離,現在已經是一個方向和思路,我們有底層的云存儲和上面的云計算,各個組件,最主要的是可以滿足不同的計算和存儲硬件的需求,可以靈活的配置,動態的擴展,而且能夠獨立的部署擴展選擇等等,通常這些數據都是放在傳統的文件系統中的,可以通過大數據計算框架來進行分析,這個是比較靈活的,但是最大的限制是什么?就是計算和存儲分離以后,計算需要大數據的時候通常需要引擎訪問的,需要通過IO甚至網絡訪問的,這會帶來新的瓶頸,我們看這么一個例子,步入Spark是一個低延遲的很高速度的引擎,但是底層的存儲我們在云上,每次你計算的再快,但是每次大數據都很慢,最后會使整個計算過程變慢,有了Alluxio以后會怎么樣?底層確實還是很慢,但是Alluxio的部署我剛剛說過,跟計算是在一起的,放了Alluxio以后我們看一下這個圖,前面載入的時候比較慢,以后每一次訪問的速度都很快,就會加速遠程存儲的作用,實際的案例是百度的信息,百度的項目分析是每天要查詢大量的用戶日志,用他們百度的日志獲得他們的商業產品,百度的底層有自己的存儲系統,在我們這里面他是用了兩百個節點的部署,2PB的數據量,很大,這些數據其實并不是在項目經理所在的單位機房里面的,是分散在全國各個機房里面的,每次查的時候就需要跨機房,跨數據中心訪問,我們知道計算引擎再快,但是數據傳輸花的時間已經很長了,通過Alluxio可以在設計本地的機房里進行,就可以用Alluxio做一個熱數據的緩存,最終使得他們的存儲的時間由原來每次的15分鐘縮到30秒之內,所以這個提升還是比較明顯的。
我們介紹第二個應用場景,我們在大數據的處理當中,很多工作現在變得流水線化,比如我們拿一些微博或者社交網絡的數據,我們通常需要這個數據進行一些清洗和抽取,完了以后還需要對它選擇一些簡單的查詢,查詢完以后我們才會對它算法進行新的分析,我們還需要對它進行圖分析,看看它的連接關系等等,還需要通過一定的圖計算,整個過程我們稱為流水線,增長過程其實就是數據不斷的從前往后推移的過程,計算引擎現在做得很快,當組成一個流水線以后他們需要不斷的交換數據,需要共享一些數據,這個時候性能往往就會被倒賣。比如Spark到Mapreduce到Spark,這樣就很麻煩,我們看這個過程底層的數據共享就會延遲整個計算處理流程的時間,我們看一下加了Alluxio以后,我們可以第一次緩存以后放到里面,而且Spark為后面的操作都可以很快的進行,后面每次的操作都通過Alluxio進行,都可以很快的完成共享,你可以放到這里面。實際的案例是巴克萊銀行,他們每天也是一樣的,有很多的數據分析師需要對他們用戶的數據,一些用戶的取款存款,相關的交易額數據進行分析,他們分析是用來風控和模型的,對用戶進行用戶畫像,它的數據是很多的,分布的去粘然后再進行處理,但是有一個問題,很多的分析師一起粘這些數據,所以模型的過程很快,因為你都是一些簡單的模型,通常幾秒鐘就可以做完,大部分時間都花在把數據拿到本地來的路上,Alluxio就這些這個問題,你只需要拿一下第一個數據,這是一個文件系統,下面再用的時候就直接到分布組件系統里,而不需要對那么多的數據一條一條的記錄,還會發生矛盾爭搶,從而使得他們幾秒鐘就可以算完,所以這個還是非常明顯的提升,六個節點。
應用場景三的目標是統一不同存儲的數據訪問,我們知道現在很多的領域里,由于各個群主的特性,有遠程訪問的優勢,所以它也可以跟好多的系統做整合,一個行業的公司里通?,F在會有很多的存儲系統在里面,那么這個缺點也是顯而易見的,我很難統一的對它進行管理,這個管理包括很多的方面,第一,權限進行統一管理,第二,數據進行API開發,不需要換底層存儲系統就需要重新開發一套應用,這個也是帶來的問題,總結起來,怎么樣能夠從不同的文件數據系統里面訪問數據,用一套API來做,這是API在里面的作用,我們看Alluxio向上可以提供統一的API訪問接口的,往下我們看用StorageB以后是沒有問題的,加了A以后并不會到上面去,只需要跟F進行對接,后面的數據都可以通過它來訪問,通過S的嫁接有一些應用,并不會進行代碼的更改,這個案例是我們去哪兒網做的,需要實時機器學習算法服務他們的線上廣告,大家可以看到如果我們不用Alluxio就可以看到數據來回的進行倒騰,來回的復制共享,有了Alluxio,缺點是你的代碼工作量變大,背后帶來的運行也會變多,有了Alluxio以后我們統一了,代碼的工具量很小,而且大家可以看到峰值的時候可以快15到300倍的性能。
我們總結今天講的內容,第一個是Alluxio這個項目已經被很多領先的企業所使用,剛剛介紹過至少三個,它的核心在于提供內存速度數據訪問的、跨計算框架、跨存儲系統的統一中間層的存儲平臺,這個項目也是世界第一個能夠同時進行各種工作的項目,我個人認為它可以很好的向現有的大數據生態系統和現有的云計算開放系統做一個整合的一塊開源軟件,我們開源項目也是非常的快,歡迎大家能夠加入到我們的開發利,用戶提供一些反饋。謝謝大家,下面我們把時間交給我的同事常城,還是要練一練,讓大家看看系統是怎樣的。
長城:我簡單做一個自我介紹,我叫常城,2015年畢業與清華大學計算機系,后來成立了公司以后就加入了Alluxio公司,我是在大三暑假的時候參加了暑期科研,加入了現在的Alluxio項目,我已經在這個項目做了四年的時間,今天我主要展示兩個方面的內容,第一個方面是如何利用Alluxio作為一個統一的命名空間去管理不同的底層文件系統這個Demo我們會用Alluxio管理一下阿里云的OSS,第二點如何利用Alluxio作為一個內存緩存,從而加速Alluxio對遠程文件系統的遠程訪問。首先我們使用一個工具在我的本機啟動一臺集權,AlluxioMarg(音)是公司開發的為了方便管理集群的Alluxio工具,現在我們就登錄到了這個界面,我們為了要創建一個新的集群,我們給集群命名,當然我們可以選擇亞馬遜的或者谷歌的,下面我們配置一下你的設置,主要是關于一些SSH的設置,在這里我們來配置一下,我們直接使用本地的文件系統,直接使用,此外我們需要Alluxio去訪問OSS,所以需要配置一些OSS的選項,我已經預先設置了這些選項,直接復制過來,現在這一步是檢測本地漏的設置,已經pass了,下一步就開始從遠程拉一個包,并且自動的根據你上面配置,這個會耗費一些時間,右下角可以看到進度,我們進去以后可以看看說明我們集群已經啟動,但是文件系統沒有任何的文件,我們可以首先跑一個測試,接下來我們展示一下文件系統命令行的基本功能,首先我們可以通過命令行展示一下目前Alluxio里面的數據,這是剛剛所跑生成的數據,我們可以通過命令名把本地的文件放到Alluxio的內存中,我們直接從這里就可以看到文件已經被放進來了,但是這個文件目前還只在Alluxio的內存中,我們通過Alluxio的命令行把這個文件放到一個底層的文件系統中,接下來我希望能把一個遠程的OSSbrack放到現有的Alluxio空間里,為了做到這一點首先我在Alluxio里面建立一個目錄,目的是把OSS的brack放到這個里面?,F在OSSBrack已經被掛在了目錄上,我們從這里可以看到這就是OSS的底,我們可以看到OSSbrack所有的文件,這里面有三個文件,第一個是一百K,第二個10兆,第三個1兆,如果我們使用Alluxio秘密行,我們就可以看到最后這三個文件都是在OSSbrack當中的,并沒有在本地的Alluxio內存中,而前面的文件是在我們的本地文件系統中,也就是講了Alluxio同時管理多個底層的文件系統,現在如果我希望在10兆的推特數據搜索一些關鍵詞,比如我搜索一個關鍵詞,首先需要把10兆的數據從OSSbrack拉到本地,需要很長的時間,我們可以驗證一下,取決于會場的網絡,現在可以看到它總共是花了9秒8,因為現在的數據并沒有在Alluxio當中,我們可以看到現在我們可以把這個數據讓Alluxio拉到Alluxio的內存中,現在就可以看到這個數據已經是這樣了,如果我們重新跑一下上面的搜索命令行,按道理現在是從本地的內存中應該會看得非常多,可以看到它只用的1.1秒,相比于剛剛的9.8秒有九十倍的性能提升,同樣你可以搜索其他的關鍵詞,如果你擔心上面的結果已經被系統緩存了,如果你搜索一個新的關鍵詞,你可以看到它也是性能會得到很大的提升,我就不跑Spack了,也是一樣的,謝謝大家。