主持人:歡迎各位還繼續(xù)留在我們今天Apache的會場,這次我們很有幸有很多來自于Apache社區(qū)的實(shí)際的開發(fā)者,跟大家能夠有面對面的機(jī)會,來講講他們在實(shí)際項(xiàng)目操作當(dāng)中所遇到的一些問題,所以下午的部分,我們每一場都留點(diǎn)時(shí)間讓大家提一些很實(shí)際的技術(shù)問題。
我們今天有Hadoop項(xiàng)目的,有CloudStack等等團(tuán)隊(duì)的成員,今天第一場比較有趣,是由一個(gè)團(tuán)隊(duì),Apache的一個(gè)團(tuán)隊(duì)來講講OpenOffice進(jìn)入到Apache社區(qū)之后不同的情況,以及在中國的發(fā)展,首先有請Peter Junge。
劉順風(fēng):謝謝Peter先生介紹了Apache的歷史以及未來的展望,我是IBM中國開發(fā)中心的經(jīng)理,我的團(tuán)隊(duì)成員也參與Apache OpenOffice開發(fā)的過程中。
今天我用很短的時(shí)間,介紹一下在這樣大的開源社區(qū)里面,我們來自北京的志愿者們都做了出了哪些貢獻(xiàn),這是非常有趣的話題,開源離我們非常近,因?yàn)槲覀兊闹驹刚邆兙驮谏磉叀?/p>
首先問大家有多少人用過OpenOffice這個(gè)產(chǎn)品?很高興看到這么多人都舉手,有多少人去社區(qū)轉(zhuǎn)過?看看有什么問題能夠得到解答,或者有什么事情能夠幫下忙??磥磉@個(gè)人就少了很多。我其實(shí)今天的目的就是希望能夠吸引更多的人來參與我們社區(qū)開發(fā),成為我們社區(qū)的一員,一起來推動這個(gè)開源項(xiàng)目的發(fā)展。
大家可以看到,其實(shí)非常近的,就在我們身邊,就在這個(gè)軟件園里面,其實(shí)我粗略算了一下,大約有三十多個(gè)來自北京的志愿者,在這個(gè)社區(qū)里面工作,而且他們起了非常關(guān)鍵的作用,他們有來自于很多公司或者個(gè)人的供應(yīng)者,比如Peter,他也在北京,我也把他算了進(jìn)去。
這些來自北京的志愿者,在Apache OpenOffice發(fā)展過程中,尤其是當(dāng)它去年從一個(gè)Oracle脫離加入Apache這個(gè)過程起的非常核心的作用,他們的工作從開發(fā)測試到后面的用戶界面的設(shè)計(jì),到翻譯等等,很多的工作,甚至是產(chǎn)品推廣都起了很大的作用。
從OpenOffice加入Apache社區(qū)以來,我們現(xiàn)在正在做4.0.1,這是很大質(zhì)量的用戶體驗(yàn)的提升。北京的志愿者都在這里發(fā)揮著極其重要的作用。
參與了幾乎所有版本的開發(fā),而且在里面起到的作用很關(guān)鍵,有些性能的提升,有些對微軟文檔的兼容性的提升,我們都做出了很多的貢獻(xiàn),而且還有一些關(guān)鍵問題的修復(fù)。包括值得兩個(gè)說的貢獻(xiàn),IBM這邊把所有開發(fā)了五年的(英文)貢獻(xiàn)出來,里面包含了很多的IBM自己開發(fā)的功能,包括一些重大的性能提升,還有像對于殘疾人士所謂無障礙的功能。下一步在4.0里面我們要把這些東西進(jìn)一步的合在Apache OpenOffice里面,給廣大用戶帶來真正的好處。另一個(gè),中標(biāo)的他們貢獻(xiàn)他們了UOF的格式,對我們國內(nèi)的用戶是一個(gè)非常好的福音。這是開發(fā)這邊。
測試這邊,我們有很多的人參與到測試的過程中,完全是從頭來建立這樣一個(gè)產(chǎn)品的測試架構(gòu),大家知道其實(shí)Apache社區(qū)里面,大部分的產(chǎn)品,大家有沒有注意過,它針對的是一些什么樣的用戶。其實(shí)大部分產(chǎn)品針對的是開發(fā)人員,比如說我們的HTPServer,等等這樣一些工具,像是一個(gè)開發(fā)包。OpenOffice不一樣在于它是一個(gè)在這個(gè)社區(qū)里面比較少見針對最終用戶的產(chǎn)品,它的代碼量級以及產(chǎn)品的復(fù)雜度,都比很多開源社區(qū)產(chǎn)品要高很多,這時(shí)候顯得非常的重要,我們測試工程師花了很大的精力,幾乎從頭建立測試的流程,覆蓋了產(chǎn)品開發(fā)生命周期全過程。還開發(fā)了自動測試的腳本,這都是他們在社區(qū)里面經(jīng)過大家討論而使用的一些,同樣也是開源的測試管理工具,產(chǎn)生了讓大家很能夠清晰了解這個(gè)產(chǎn)品質(zhì)量的測試報(bào)告定期發(fā)布,這是測試方面的貢獻(xiàn)。
另一方面,我們還有一些非常珍貴的資源,我們的用戶體驗(yàn),我們的界面設(shè)計(jì),美工的工作者,他們不僅在為Apache下一個(gè)版本的新的界面正在努力工作,而且也有很多的介紹,比如說我們大家如果用了Apache OpenOffice會注意到,我們有很豐富的模板庫,這個(gè)模板,如果你在一個(gè)漂亮模塊的基礎(chǔ)上工作,做出來的文檔非常漂亮,而且不用費(fèi)太大的功夫,我們設(shè)計(jì)者也貢獻(xiàn)了很多的模板在這里,今天我們使用的這個(gè)模板就來源于我們北京的設(shè)計(jì)者,這里列出來第一個(gè)模板被歐洲Apache大會所使用,有著很好的反響。
最后翻譯,作為這么一個(gè)直接面對最終用戶的產(chǎn)品,翻譯是非常非常重要的。我們Apache OpenOffice已經(jīng)有完全翻譯的中文版,在下一步的開發(fā)中隨著我們新功能的開發(fā)要進(jìn)一步完善我們的翻譯工作,作為我們產(chǎn)品推廣,網(wǎng)站翻譯其實(shí)這里面有很大的差距,如果大家到OpenOffice的網(wǎng)站上看一看,其實(shí)中文網(wǎng)頁非常少,這是需要大家每個(gè)人去貢獻(xiàn)的,一起來參與這個(gè)翻譯的工作。
我很快過了一些主要的我們來自北京的志愿者做出來的這些貢獻(xiàn),我的目的是什么呢?非常簡單,我號召大家來加入我們。三十多個(gè)來自北京的志愿者,其中大部分已經(jīng)是具有直接提交代碼的權(quán)力,這是非常不容易的事情,在國內(nèi)參與Apache社區(qū)里面來說,這是一個(gè)很大的量。大家可以看到,我呼吁大家來加入社區(qū),加入我們,好處很顯然,尤其在國外,大家甚至能看到有些公司在招人的時(shí)候,都很看重是不是有開發(fā)的經(jīng)歷,如果大家以后希望去國外留學(xué)或者找工作的話,如果你說我在Apache OpenOffice社區(qū)里面做過開發(fā),那是一個(gè)非常非常好的,在你簡歷里面的一個(gè)亮點(diǎn)。
我希望大家能夠多使用下載最新版本的Apache OpenOffice,并且接下來幫助我們一起宣傳這個(gè)產(chǎn)品,其實(shí)Apache OpenOffice它的主要用戶群下來集中在歐洲和北美是最多的,那么國內(nèi)我覺得我們其實(shí)還有很多的宣傳空間在里面,當(dāng)大家被迫交錢買Office,沒有辦法的時(shí)候,其實(shí)很多人并不知道有其他的辦法,讓大家知道我們其實(shí)有更多的選擇在里面。
接下來,我知道在座有很多技術(shù)人員,技術(shù)天才,希望能加入我們,來做開發(fā)、測試這樣的工作,還有其他的一些工作可以做,比如參與我們網(wǎng)站的翻譯和維護(hù),或者幫助我們完善一些人,甚至我在社區(qū)里面,根據(jù)我的使用經(jīng)驗(yàn),來給我們其他新來的OpenOffice的用戶來提供一些反饋,比如說他們提出的問題,就我的經(jīng)驗(yàn)我可以回答,這都是從點(diǎn)點(diǎn)滴滴做起的,為我們社區(qū)做貢獻(xiàn)很好的例子。
其實(shí)作為一個(gè)開源社區(qū),其實(shí)我不是一個(gè)參與時(shí)間非常久的,我是從去年開始的,我覺得在這中間,體會到一種國際化交流的,開源社區(qū)里的一種氛圍,這是我感覺到非常有樂趣的事情。在Apache社區(qū)里面是人人平等的,每個(gè)人作為獨(dú)立的個(gè)體必須做出自己的貢獻(xiàn),每說一件事情的時(shí)候你并不沒有權(quán)力強(qiáng)迫別人同意你,你來提議沒人反對我就可以自己開始動手去做了,甚至如果我的提議非常人,會有人加入我,這是開源社區(qū)最愿意看到的一個(gè)結(jié)果。
我這里列出來的這些開始的點(diǎn),到哪下載我們的產(chǎn)品,到哪加入我們的郵件列表,甚至我想做一個(gè)開發(fā),我應(yīng)該從哪學(xué)起,先從Apache原則做起,我應(yīng)該怎么搭環(huán)境,怎么考慮問題等等,列出來的這樣一些鏈接,會后這個(gè)我們會發(fā)出來,大家都會看到,大家去谷歌、百度一下OpenOffice大家就可以找到我們的站點(diǎn),直接去找有用的信息,有什么問題都可以直接在列表里面找。這是我一個(gè)簡單的介紹。不知道大家有什么問題嗎?如果沒有什么問題的話,下面請劉濤幫我們介紹UOF,以及我們公司在OpenOffice上做的一些工作。
劉濤:大家,我是來自于中標(biāo)軟件有限公司的,負(fù)責(zé)公司Opensource這塊,包括我們公司的操作系統(tǒng),還有云安全操作系統(tǒng),Office也是一塊,今天主要是講Office。
在今年Apache的年會上,把我們給OpenOffice做的一些貢獻(xiàn),今年在德國舉行的Apache年會,把我們做的工作已經(jīng)講了一部分,UOF這塊還有后面,我所說的企業(yè)和政府的辦公自動化這塊是沒有講的,所以拿到這邊做一下分享。剛才Peter已經(jīng)把OpenOffice前生今世還有它的幾個(gè)孩子說得很清楚了。我今天講一下UOF在中國的應(yīng)用,UOF簡單的介紹,還有就是它的兼容性問題的解決方案,以及一些功能。
在國內(nèi)有這么幾家公司都去做了UOF文檔格式,首先是中標(biāo)軟件在做,有金山,還有微軟,還有IBM。UOF我們叫國家文檔格式標(biāo)準(zhǔn),最早的發(fā)布是一個(gè)1.0版本,是在2007年發(fā)布的。在07年到09年之間,一直在完善,從1.1、1.2,一直到1.3,09年提了一個(gè)草案,這個(gè)草案結(jié)束之后,后期會做一個(gè)發(fā)布,現(xiàn)在還沒有發(fā)布2.0版本。
UOF這個(gè)文檔,2.0版本里面它把原來UOF這個(gè)文檔格式變成了三種格式,對于文字處理用了UOT格式,電子表用了UOS格式,演示文稿用了UOP的格式,由多過XMAL文件組成的,2.0相對于以前1.0的版本,了解UOF的比較少,如果有了解的話,2.0版本做的一些改進(jìn),去掉了一些LOGO和ID,屬性列表,添加了內(nèi)部ID和多元的符號,解決了一些單一層次和繼承層次的元素關(guān)系等等,這是它對于國家文檔格式標(biāo)準(zhǔn)的一個(gè)圖。
UOF文檔格式的標(biāo)準(zhǔn),它支持什么,支持國家的這樣一個(gè)政府的公文,和政府公文都要求的排版、結(jié)構(gòu)都是比較緊的,當(dāng)你要修改一個(gè)字體或者字號的時(shí)候這個(gè)格式就不會被通過。大家可以看一下這有一個(gè)截圖,在做政府辦公的時(shí)候,比如說上面的這個(gè)份號,密級,保密期限等等,這個(gè)模板是今年國家制定了一個(gè)新的國標(biāo)的模板,這個(gè)模板就是你必須要遵守它的這個(gè)排版格式,比如說我的一個(gè)稿件里面的一頁是多少行,每一行有多少個(gè)字這都是有嚴(yán)格要求的。
那么真正做到政府的辦公文檔格式和普通通用的文檔格式之間的轉(zhuǎn)換呢?這里面就涉及到文檔標(biāo)準(zhǔn)轉(zhuǎn)換的問題,用XSLT,相當(dāng)于是樣式單,來把一個(gè)文檔轉(zhuǎn)化成XMAL文檔,這是它的Import process,在一個(gè)文檔當(dāng)中把他的數(shù)據(jù),當(dāng)然這個(gè)數(shù)據(jù)分兩個(gè)部分,我們把圖片以及視頻這樣的數(shù)據(jù)轉(zhuǎn)化成一個(gè)64倍的,然后把它變成,合并成一個(gè)FLATS這樣一個(gè)文件,之后再把它輸出成一個(gè)ODF。
時(shí)間關(guān)系,也說得比較快,可能大家只有一個(gè)感性上的認(rèn)識?,F(xiàn)在我們正在做的工作也就是要解決一些在這個(gè)過程之中出現(xiàn)的一些問題,然后把2.0的UOF代碼進(jìn)行維護(hù)。非常歡迎大家能夠加入我們?nèi)プ鲞@件事情。這是UOF貢獻(xiàn)的這一塊。
下面我會講一下ApacheOpenOffice在企業(yè)和政府的辦公自動化領(lǐng)域中的運(yùn)用,相當(dāng)是我們基于ApacheOpenOffice做的一個(gè)解決方案。
可能我會分幾個(gè)方面,一個(gè)是技術(shù)的解決方案,還有會主要從細(xì)節(jié)上說一下,F(xiàn)irefox,遠(yuǎn)程文檔的操作,最后就是有幾個(gè)例子,政府的,部隊(duì)的,還有醫(yī)療行業(yè)的,最后做一個(gè)小節(jié)。
技術(shù)解決方案之中,首先我會給大家展示一個(gè)Firefox的圖。然后是監(jiān)聽反饋機(jī)制,最后是文檔的機(jī)制。這張圖就是Firefox工作的流程圖,紅色背景的可以理解成一個(gè)瀏覽器,plugins就是一個(gè)插件,他對Office的啟動,第二就是跟(英文)橋做通信,第三就是部分監(jiān)聽機(jī)制,最后一個(gè)就是遠(yuǎn)程文檔的操作。上面對于插件和瀏覽器之間用什么樣的方式進(jìn)行轉(zhuǎn)換。這是一個(gè)(英文)橋的介紹,我不細(xì)講,目的就是轉(zhuǎn)換Firefox插件,讓JS和Firefox插件之間建立一種聯(lián)系。
對于監(jiān)聽和反饋機(jī)制,我在瀏覽器里面會有鼠標(biāo)、鍵盤的動作,當(dāng)然這些動作都不是針對與Office本身做操作的,是在Office外面進(jìn)行操作,比如右鍵這些動作,這些動作怎么讓Office知道,就是有一個(gè)監(jiān)聽的機(jī)制,實(shí)現(xiàn)從外部接口去解決Office內(nèi)部的東西,當(dāng)然它肯定也是基于剛才講的UNO的理論,這是整個(gè)(Liscens)架構(gòu)圖,可以看一下。
之后就是遠(yuǎn)程文檔操作,我們提供兩種,一種是對于遠(yuǎn)程的文件形式的這樣一種操作,我的JS代碼都是寫在服務(wù)端的,Office的插件里面我基本是不會存在這些可以與外界進(jìn)行溝通的一些代碼的,這樣做的目的是保證安全,因?yàn)榉?wù)端操作的話,安全性是需要保障的。
在前端用JS包裝這個(gè)接口的好處有很多,原來我們的接口是這樣的,我們用JS包裝之后,他就會把這些接口轉(zhuǎn)化成,你可以給任何集團(tuán)商或者開發(fā)商去做,不用給他開放Office這塊接口,只要給他一個(gè)JS的接口,他就可以做他想要做的任何事情。這是它的一些好處,比如說比較穩(wěn)定,開發(fā)速度快,可以對自己的系統(tǒng)做定制,比較容易使用。這是我們的一些案例,我剛才說的只是在Firefox中的插件,當(dāng)然我們這個(gè)插件有很多種,比如在Windows機(jī)器上也有一些控件,這是政府辦公的應(yīng)用,軍隊(duì)是Firefox控件的應(yīng)用。這個(gè)是在醫(yī)療行業(yè)的應(yīng)用,我就說這么多,小結(jié)一下,有很多種控件可以運(yùn)用于很多個(gè)行業(yè)。我先講這么多。
劉大力:大家好,接下來的時(shí)間交給我,我是來自于IBM的劉大力,接下來這個(gè)主題剛好跟我們今天這個(gè)云,看一下我們Office產(chǎn)品怎么跟云平臺,怎么跟我們一些主要的Social的社交軟件集成在一起,看一看我們文檔處理并不是簡單的文檔處理,在今天的環(huán)境中我們有更多的選擇工作方式。
現(xiàn)在大家都知道,大數(shù)據(jù)、云還有Social都是比較主流的概念,如果我們的一個(gè)軟件還有包括我們的解決方案,不包含這些點(diǎn),你都不好意思說你是做軟件的。
我們看一看云是有私有云,有公有云,我們OpenOffice都是可以引入進(jìn)去的,他并不是獨(dú)立的桌面應(yīng)用軟件。我們可以思考一下,在現(xiàn)今信息爆炸的時(shí)代,我們怎么樣在云時(shí)代,在Social時(shí)代處理我們的文檔呢,國家的正版化是非常提倡的,桌面云客戶端去訪問的時(shí)候都要考慮Listens的成本問題。
在國內(nèi)很多人多不知道,在文檔處理這一塊,我們有另外一個(gè)選擇,就是我們的OpenOffice。我們講一下現(xiàn)在無處不在,都帶Social,我們每一個(gè)人手上都有一個(gè)移動中斷,包括我們無處不在的無線網(wǎng)絡(luò),包括新浪微博,騰訊微博,F(xiàn)acebook這些都是我們Social的一些信息分享渠道,那我們?nèi)绾卧谖覀冏鑫臋n處理的時(shí)候,去引入這些信息呢,怎么樣去把我們自己寫的一些文章,分享給其他人,在我們做OpenOffice的時(shí)候,我們有一種擴(kuò)展機(jī)制,可以讓我們方便的去跟我們后臺這些SocialServer做一些集成,其實(shí)這種模式不止應(yīng)用于OpenOffice,其實(shí)大家也可以看一看,我們有一些自己的應(yīng)用,其實(shí)也完全可以采用這樣的架構(gòu)去做一些擴(kuò)展,跟我們的服務(wù)連接起來。現(xiàn)在有很多公司肯定也是這樣去做的。
這里面提到的Social Cnnectors這個(gè)概念,怎么跟后臺聯(lián)系起來,今天是偏技術(shù)的會議,可以看到,在我們中間是運(yùn)用了一系列的Social這些接口,我們用這些接口就可以從服務(wù)商那里拿到我們想要的數(shù)據(jù)。在前端在我們的客戶機(jī)上,或者是我們的桌面云上,我們通過這樣一系列插件,能夠把我們的數(shù)據(jù)整合在文檔里面,反過來也是一樣,我們可以把我們做的文檔分享給其他人,這個(gè)可以是一個(gè)全文檔的分享,也可以是一些信息片段的分享。
這個(gè)里面大家可以看到,剛才講到的是Social的應(yīng)用,這里面是一種桌面云的應(yīng)用,桌面云很簡單,你能夠在任何地方去訪問這個(gè)桌面,這個(gè)桌面現(xiàn)在一般用虛擬技術(shù)。在國內(nèi)也是越來越重視的,所有在桌面上的軟件,其實(shí)都有一個(gè)LI成本考慮的問題,如果云的服務(wù)商,提供一個(gè)沒有LI的軟件其實(shí)是一個(gè)很大的法律問題的,這里面OpenOffice提供了一種選擇,能夠讓我們用戶放心大膽地去使用正版的文檔處理的工具,而且前面我們也講到,我們的OpenOffice,大家是可以拿到它的原代碼,隨意去重新發(fā)布,重新做自己的定義。改個(gè)名字,打個(gè)包,換個(gè)外殼,加入自己一些自有的功能就可以去做我們商業(yè)軟件上的應(yīng)用。
這個(gè)是我們在云上面去用我們的OpenOffice。
我們可以看一個(gè)我們的演示,我們OpenOffice是如何從我們社交環(huán)境中去做一些信息的收集。這個(gè)演示是一個(gè)很簡單的場景,我在做一個(gè)講演稿,我希望從我的社交網(wǎng)絡(luò)里面收集一些意見,在以前,這些方案可能我把這個(gè)文件文檔通過郵件發(fā)送給其他人,讓其他人通過郵件反饋回來,現(xiàn)在在我們這種模式下,我們可以看一看,我們是如何工作的。比如就這一頁的頁面,我想去收集大家的反饋,我可以通過我們右側(cè)工具插件,快速把這個(gè)頁面,直接發(fā)布到我的社交網(wǎng)站上去,當(dāng)我發(fā)布好以后在我的網(wǎng)站中相關(guān)的關(guān)注我的人,就可以看到,他們就可以快速的給我一個(gè)回復(fù),這里面我用的是IBM的一個(gè)產(chǎn)品,其實(shí)這種機(jī)制我們完全可以應(yīng)用發(fā)到Facebook,新浪微博上去。在這里面我的同事,或者是我的經(jīng)理們看到了我發(fā)布的這個(gè)頁面,大家給我一些修改意見,他直接就在這個(gè)網(wǎng)頁中去操作,把他的意見寫好,寫好以后,我是不需要再登陸我的網(wǎng)站中來,我直接就在文檔編譯器里面直接可以看到別人給我的意見,這個(gè)時(shí)候我根據(jù)這個(gè)意見就可以做出快速修改。
大家看看這種工作方式,我們可以看到意見,改好以后可以繼續(xù)做其他的事情。同樣的場景,在當(dāng)今Server這種環(huán)境中,通過我們擴(kuò)展的方式很快就達(dá)到了,如果我沒有這樣的Social的集成,我們會發(fā)現(xiàn)我們要走一段很長的路,而且等待的時(shí)間也是沒有那么有效率。
所以說大家看到,我們OpenOffice并不只是文檔編譯器,也是一個(gè)擴(kuò)展應(yīng)用平臺,那么這個(gè)平臺能夠給我們提供各種的擴(kuò)展能力,這里我演示的是跟Social做的一個(gè)集成。其實(shí)我們可以做其他的跟文檔存儲,包括我們百度的文庫,還有跟其他云上數(shù)據(jù)的存儲都可以以這種去關(guān)聯(lián)起來。
我們是用了我們的開發(fā)工具,這個(gè)開發(fā)據(jù)也就是一個(gè)開源的工具,大家都可以在社區(qū)網(wǎng)站中獲取到,我們運(yùn)用了一個(gè)開發(fā)接口,這個(gè)接口也是大家可以隨意獲取到的,UNO的接口,社區(qū)這邊有很好的開發(fā)手冊,我們開發(fā)人員很樂意幫助大家回答一些問題。
總體來說這個(gè)就是我們剛才講到的,如何在我們的社區(qū)里面,用OpenOffice做一些云跟Social上的一些集成,這里面我再一次號召大家來加入我們OpenOffice這個(gè)大家庭,你在里面可以去貢獻(xiàn)自己的力量,也可以基于OpenOffice這個(gè)平臺去構(gòu)建你自己的應(yīng)用和自己的解決方案,甚至你可以拿到OpenOffice的代碼,然后做出自己的修改。大家如果感興趣的話,所有的事情都可以通過我們的郵件列表獲取到,可能我們的技術(shù)人員這塊,從我們的網(wǎng)站開始是一個(gè)比較好的地方,謝謝大家!
主持人:非常感謝Apache的OpenOffice,OpenOffice從以前的SUN慢慢走向社區(qū)之后,后來又從Oracle轉(zhuǎn)到獨(dú)立的Apache社區(qū),也是經(jīng)歷了長期而艱苦的過程,一個(gè)產(chǎn)品如果要讓它有更強(qiáng)的生命力,可能這種NGO的模式協(xié)作方式,可能會讓它更長期,這是長期大家貢獻(xiàn)社區(qū)的一個(gè)知識的產(chǎn)品,如果只是商業(yè)行為的操作,把它廢掉的話,實(shí)際上是很可惜的事情。我們請Raymie談一談Hadoop新的Resource Manager的產(chǎn)品。
Raymie:(英文)
主持人:非常感謝Raymie今天下午給我們帶來精彩的演講。接下來有請來自VMware杜君平來講講Hadoop的Virtuallzation。
我們今天大會主題也是云計(jì)算大會,云也是屬于今天最時(shí)髦的一個(gè)詞,上到國家總理,下到平民百姓,大家多多少少對云計(jì)算都有一些了解,這里面有一些泡沫的成分在里面。首先我們認(rèn)為云計(jì)算能夠簡化企業(yè)的IT運(yùn)維成本,第二因?yàn)樗鼫p少了很多企業(yè)對硬件的需求,通過虛擬化可以減少很多硬件的支出,管理的支出,包括能源的支出。它可以非常敏捷為企業(yè)提供IT服務(wù),所以我們現(xiàn)在生活在一個(gè)比較好的云計(jì)算的時(shí)代。
那么對于大數(shù)據(jù)或者說企業(yè)的數(shù)據(jù)分析而言,企業(yè)有不同對數(shù)據(jù)的需求,有些是傳統(tǒng)的數(shù)據(jù)的需求,還有需要Hadoop這樣的大數(shù)據(jù)平臺,我們眼中的IT不希望它是一個(gè)一個(gè)孤島,企業(yè)有不同的人在運(yùn)營不同的系統(tǒng),可能他們在下面會是一個(gè)統(tǒng)一的,上面有不同的有Hadoop的等等,他們可以做很好的共享。
對于大數(shù)據(jù)而言,我們希望通過虛擬化來更好的做整個(gè)大數(shù)據(jù)平臺。我們目標(biāo)有幾點(diǎn),首先我們在統(tǒng)一的云平臺上面更好的,根據(jù)你的需求,來提供數(shù)據(jù)處理的平臺和計(jì)算能力的集群。然后我們也許你在統(tǒng)一的云平臺之上,把不同的應(yīng)用進(jìn)行混合,因?yàn)橛行?yīng)用是CPU的,有一些應(yīng)用是內(nèi)存的,不同的應(yīng)用對資源有不同的需求,我們?nèi)绻軌蛟诮y(tǒng)一的平臺上把這些應(yīng)用很好的混合起來,那么我們可以提高整個(gè)資源的利用率。
后面對于大數(shù)據(jù)平臺而言,放到一個(gè)云平臺,或者一個(gè)虛擬化平臺上,會不會出現(xiàn)任何的水土不服呢,因?yàn)樗谠粕厦嬗泻芏嗪莒`活的這種部署的方式,這種部署方式,包括你的數(shù)據(jù)防止策略,可能都需要調(diào)整,我們需要一些額外去處理這些事情。
總體而言有了云計(jì)算,有了虛擬化,我們可以讓Hadoop能夠做到彈性的伸縮,能夠做到比較容易的達(dá)到高可用性。有更好的管理和隔離,對于云計(jì)算也好,企業(yè)的不同數(shù)據(jù)中心,或者數(shù)據(jù)應(yīng)用是非常重要的。
所以我們要做最好的虛擬化的平臺,我們都做了哪些事?首先去年我們發(fā)了一個(gè)白皮書,是Hadoop在虛擬化平臺上性能的分析,可能大家也會比較關(guān)心這個(gè)問題,待會我會簡單介紹一下。另外我們積極加入到Apache的Hadoop社區(qū)里面,為這個(gè)社區(qū)做一些貢獻(xiàn),讓Hadoop在虛擬化和云計(jì)算的平臺上去運(yùn)營得更好。也就是我今天主要要介紹的內(nèi)容。我們還有一些項(xiàng)目,我們簡化程序的開發(fā),主要是這三部分的內(nèi)容。
這是一個(gè)數(shù)據(jù),我們在Virtuallzation5上面經(jīng)過很好的調(diào)試之后,我們發(fā)現(xiàn)跟其他的應(yīng)用一樣,基本上在虛擬化或者云計(jì)算平臺上運(yùn)行Hadoop,大數(shù)據(jù)這樣的平臺,基本上他的性能效果也是蠻好的,大概在5%到10%的性能損失率。我們在處理的過程中,我們想了好幾個(gè)方案,首先我們大概是在十幾個(gè)Server里面,把虛擬化之前和虛擬化之后做了比較,每個(gè)結(jié)點(diǎn)有幾個(gè)漏洞,我們做了各種各樣的對比。
下面介紹一下我們的Hadoop Virtuallzation,Hadoop在虛擬化的平臺上面做的一些擴(kuò)展和優(yōu)化。我們這個(gè)項(xiàng)目主要是做一些改進(jìn)的工作。我們這個(gè)項(xiàng)目最后的產(chǎn)出提交到Hadoop,被用戶所接受,然后達(dá)到更好的優(yōu)化的效果。同時(shí)會跟社區(qū)里面的人做一些合作。這個(gè)HVE主要是幾項(xiàng)工作,我們要支持code base,第二在云的環(huán)境下,這些資源,操作系統(tǒng)里看到的資源并不是你實(shí)際可以獲得的資源,這也是我們需要考慮的。我們現(xiàn)在想做的事情是,我們在同樣的物理設(shè)備上,我們把虛擬結(jié)點(diǎn),計(jì)算結(jié)點(diǎn)和數(shù)據(jù)結(jié)點(diǎn)分開。我今天主要會討論多層的網(wǎng)絡(luò)結(jié)構(gòu),以及數(shù)據(jù)和計(jì)算結(jié)點(diǎn)分離。
剛才說到Hadoop,Hadoop是三層,一個(gè)是data center,一個(gè)是rack,一個(gè)是host,在云計(jì)算或者說在虛擬化的平臺里面有更多的不同的部署方式,如果你考慮很多應(yīng)用共享的時(shí)候,你可能會把這樣的機(jī)器虛擬化之后分成多個(gè)機(jī)器,或者說你的企業(yè)里面需要多個(gè)Hadoop的結(jié)點(diǎn),但是這多個(gè)結(jié)點(diǎn)你不知道什么時(shí)候這些結(jié)點(diǎn)到波峰,什么時(shí)候到低谷,你想把他們放在同樣一個(gè)比較大的集群里面,但是這些集群可以跟著你應(yīng)用的需要,可以擴(kuò)展或者收縮,根據(jù)需求不同,你的部署方式肯定也不一樣。
第一種就是最基礎(chǔ)的,就是一個(gè)VM,這是跟物理環(huán)境沒什么區(qū)別,第二個(gè)可能會有多個(gè)結(jié)點(diǎn),現(xiàn)在手頭里四個(gè),但是你可能做一些測試,其他的工作,可能出來十二個(gè),十六個(gè)甚至更多的結(jié)點(diǎn)。第三個(gè)就是我說到數(shù)據(jù)的分離。第四個(gè)你可能還會有多個(gè)data note,來滿足你的需要。這種情況下,昨天的Hadoop就不能滿足你的需求了,現(xiàn)在我們引入了這個(gè)node group這一層?,F(xiàn)在我們把所有數(shù)據(jù)相關(guān)的部分我們都做了一個(gè)處理,加上了這些我們的,Hadoop還是在物理環(huán)境中狀態(tài)很好,放到云平臺或者虛擬化平臺之中就可以做一個(gè)不同的(英文)。
做一個(gè)簡單的介紹,設(shè)備這是在副本的放置策略上,2和3落在同一個(gè)VM上,現(xiàn)在就不會把兩個(gè)放在同一個(gè)node上。這個(gè)是對于副本選擇的策略的拓展,他會去選同一個(gè)(英文)。
對于平衡器而言,希望副本的放置仍然是可靠的,仍然要滿足之前的這些規(guī)則,還要保證這些副本是完全達(dá)到可靠性要求的,所以我們也設(shè)計(jì)了很多這方面的邏輯。
對于這個(gè)任務(wù)的放置也是同樣的道理,我們選擇,尤其是對于數(shù)據(jù)和計(jì)算分離結(jié)點(diǎn)的情況下,這一層顯得更加重要,因?yàn)槿绻谥暗挠脩魜碚f,當(dāng)他發(fā)現(xiàn)這個(gè)結(jié)點(diǎn)沒有被數(shù)據(jù)node看到的時(shí)候,他會認(rèn)為這個(gè)數(shù)據(jù)是不被認(rèn)識的,我們的工作讓這個(gè)計(jì)算更加貼近數(shù)據(jù)。讓Hadoop的資源更有彈性,包括對Hadoop本身,可能會在今后陸陸續(xù)續(xù)添加到社區(qū)里面。
下面請我的同事給大家介紹一下Serengeti,這是一個(gè)獨(dú)立的,開源的一個(gè)項(xiàng)目。
嘉賓:我們的Serengeti是一個(gè)完全Opensource的,我們這個(gè)項(xiàng)目每三個(gè)月會發(fā)布一個(gè)小的成果。這里可以看到有幾個(gè)特點(diǎn),很方便去部署,很方便去管理Hadoop Project。
我們正常的物理機(jī)上面,直接搬到虛擬機(jī)上去運(yùn)行就好了,沒有什么特別的地方,所以在虛擬化的平臺上有一個(gè)特點(diǎn),就是VM這些東西非常的靈活。這是我們大概一個(gè)從Hadoop的運(yùn)行模式上,可能會做到這么一種模式。
(英文)。
這里面我們提到擴(kuò)展性,比如一個(gè)很簡單的…,特定的…,我們在一個(gè)…里面描述了我們的…長什么樣子,我們很容易去…其中一個(gè)我們稱為…,比如我們…有五個(gè),我們的…有五個(gè),我可以說我們變成十個(gè),另外五個(gè)VMware就是…,然后…到…里面。
比如我們要運(yùn)行Hadoop我們自然會想到,我們怎么保證關(guān)鍵的應(yīng)用不會對集群有影響。在某一個(gè)特定的時(shí)候,可以動態(tài)的去(英文),做到真正的關(guān)鍵的應(yīng)用不會被Hadoop占用。
這里其實(shí)更多的就是到了(英文),主要從三個(gè)方面來考慮,幫助我們?nèi)ゲ渴餒adoop的時(shí)候,我們要去…變得非常簡單,包括開始怎么去部署一個(gè)新的集群,在運(yùn)行過程里面怎么…。我們讓Hadoop運(yùn)行在…上的時(shí)候,這邊可以看到確實(shí)有很多實(shí)際的好處在里面。我們知道在正常Hadoop集群里面,單點(diǎn)故障,我們可以在Vsphere,一旦有問題可以迅速在另外一個(gè)。正是我們從這三個(gè)主要方面能夠來開發(fā)我們的產(chǎn)品,我們會緊密的利用Vsphere的功能,我們會跟它有更緊密的結(jié)合,來幫助在云里面怎么樣去應(yīng)用。
這是我們HVE的工作,包括Project Serengeti,如果你有Vsphere的環(huán)境,可以直接部署,創(chuàng)建Hadoop的集群,歡迎大家使用。大家如果有針對,針對HVE,或者針對Vsphere。
提問:…
嘉賓:這是一個(gè)很好的問題,我們知道其實(shí)在虛擬化環(huán)境里面主要包含兩部分工作,一個(gè)是把node準(zhǔn)備好,另一部分是把Source建起來,在阿帕奇已經(jīng)在做,我們更多重點(diǎn)在我們的Vsphere這個(gè)平臺上去部署集群。
提問:…
嘉賓:文件以64兆為單位,你有多少個(gè)副本。
提問:其實(shí)我對開源是剛接觸不是很清楚,但是我不知道剛剛介紹的時(shí)候你沒有提到安全性這部分,你是怎么做的?
嘉賓:Hadoop引入了一套安全人人系統(tǒng),這個(gè)文件系統(tǒng)有不同的用戶,還是有一些其他的問題,比如(英文),比較復(fù)雜,尤其是數(shù)據(jù)中心內(nèi)部,可能不會去開啟所有認(rèn)證的工作。
提問:既然他是一個(gè)開放的東西,是不是表示它里面如果有惡意的軟件,開發(fā)者就可以放一些問題的東西在里頭?
嘉賓:你提交代碼的時(shí)候會有嚴(yán)格的審查程序,尤其是對Hadoop來說,他的數(shù)量是很有限的,我們會發(fā)現(xiàn)我們中國現(xiàn)在工作在正八時(shí)區(qū)的還沒有一個(gè),你需要告訴所有社區(qū)里很多的人,這個(gè)是創(chuàng)意是友善的,是給人帶來好處的,不是你任意寫代碼就可以提交的。
提問:…
嘉賓:Vsphere上面有這個(gè)動作做…,我們會讓它去…的功能,我們不知道這個(gè)VMware是不是讓它做遷移,剩下的這些資源還是Vsphere起作用的。謝謝大家!
孫振南:我今天帶來的題目是CloudStack,今天我?guī)淼氖前⑴疗媪硗庖粋€(gè)Opensource IaaS的CloudStack。我是趨勢科技,同時(shí)也是阿帕奇的,推事也推動CloudStack在中國的發(fā)展。
今天我主要講兩部分,第一代著大家把CloudStack稍微整體說一下,另外我會介紹一下現(xiàn)在CloudStack在中國社區(qū)的發(fā)展。
在開始之前,在講什么是CloudStack之前,首先我覺得有必要把CloudStack整個(gè)的情況給大家交代一下。
CloudStack這個(gè)東西是在2008年由VMOPS這家公司開發(fā)的,它就是開發(fā)CloudStack。然后在2010年5月份,VMOPS重新命名CloudStack.com,2.0版本也發(fā)布了,緊接著去年7月份,這時(shí)候發(fā)生一件事情,就是思杰把CloudStack.com收購了,開發(fā)了3.0版本,思杰一直開發(fā)自己的CloudStack版本,今年4月份,思杰把CloudStack開源捐獻(xiàn)給阿帕奇社區(qū)。10月份的時(shí)候有一件值得記憶的事情,CloudStack以社區(qū)的身份發(fā)布了自己的第一個(gè)版本,就是CloudStack4.0。然后在差不多半個(gè)月前,拉斯維加斯第一次CloudStack大會,在那邊舉辦,這是整個(gè)的情況。
什么是CloudStack,因?yàn)槲覀兘裉爝@個(gè)是云世界大會,今天的主題也是開源云,CloudStack是什么?可以說它就是一個(gè)云平臺。這邊有一些簡單CloudStack的特點(diǎn)。他支持多租戶,有平滑的伸縮性,當(dāng)然他也是開源的,現(xiàn)在是阿帕奇的許可CloudStack是低成本資源監(jiān)控的云平臺,這里頭提兩個(gè),一個(gè)是資源,另外一個(gè)是云,對于云來說,我們都知道現(xiàn)在有公有云,私有云,混合云,還有其他的像社區(qū)云其他的東西。資源無非就是一些物理資源或者是一些虛擬資源,都逃不了CPU、內(nèi)存以及網(wǎng)絡(luò)這些資源。
大家可以看右邊的這個(gè)圖,CloudStack是把你的物理資源進(jìn)行抽象虛擬化,并且去管控,他自己本身提供了一個(gè)綜合管理的引擎。在上面它有完整的API的系統(tǒng),再上面就是對外提供一些UI,或者你自己整合你的資源。
我們看一下這三種云,我們平時(shí)都在公有云、私有云、混合云,這三種云自己都有自己顯著的特點(diǎn)。我們先看一下公有云,大家都知道的,就是亞馬遜就是典型的公有云,是很成功的,我們國內(nèi)也有一些,但是目前來說都是起步的,作為公有云有一些特點(diǎn)需要滿足,他要支持多租戶,要有自服務(wù),要平行的擴(kuò)展,并且是一種按需付費(fèi),你用多少掏多少錢,相對來說成本需要控制到很低。
我們再看最右邊的這個(gè)是私有云,私有云跟公有云有很顯著的差別,簡單說私有云一般是在企業(yè)或者是IT自己里面用的,他的資源也是自己專屬的。一般一個(gè)公司如果自己的IT要上私有云的話,當(dāng)然他會有自己專屬的資源,有自己專屬的IT部門,完全隔離的網(wǎng)絡(luò),安全性這些都是需要考慮的。
混合云實(shí)際上介于這兩種云之間,混合云最主要的就是像一些企業(yè),把自己的IT托管出來,托管也有一定的要求,最主要的就是可能需要專屬的為企業(yè)準(zhǔn)備的服務(wù)器,要簽訂一定的SOA,到底達(dá)到幾個(gè)9,這個(gè)他會比較看重,這三種云如果自己要看一個(gè)云的話,哪種云比較合適,你可以參照這個(gè)特點(diǎn),你自己覺得要用哪些方面。這是給大家一個(gè)參照。
今天CloudStack我大概會講這些內(nèi)容,首先這是比較high level的圖。有幾個(gè)數(shù)據(jù)簡單跟大家交代一下,這個(gè)圖最上面寫了一個(gè)Zone,可以理解成為數(shù)據(jù)中心,當(dāng)然這個(gè)不是完全等同的,下面會有一層pods可以理解成機(jī)架這個(gè)概念,最下面是集群,CloudStack對集群有一定的要求,他要求集群內(nèi)部必須是一致的物理機(jī),方便在集群內(nèi)做一些遷移,集群這一級應(yīng)該是邏輯結(jié)構(gòu)里面比較重要的一級,然后集群下面就是具體的主機(jī)。可以看到集群這一級,還有就是你的主存儲,也是以集群為邊界的,每一個(gè)集群實(shí)際上是需要共用他的主存儲,如果已經(jīng)共享存儲的話。Secvondary,在整個(gè)資源域是共享的。
這幾種資源都是很容易自由去組合,你可以在上面hypervison,VMWARE也可以用Server,或者Opensource,也可以用SUN,也可以用nfs。右邊是二級存儲,目前來說支持兩個(gè),一個(gè)是傳統(tǒng)的nfs,CloudStack是相當(dāng)成熟了,它在國外,很多家公司用他,他有很多非常好的一些功能。
我們再來看一下CloudStack最初的設(shè)計(jì),CloudStack剛開始并不是憑空出來了,他的設(shè)計(jì)來源于現(xiàn)實(shí),我們這邊做一個(gè)簡單的對比,左邊是一個(gè)數(shù)據(jù)中心的架構(gòu),外面是你的門戶,通過三層核心,連到你的WELL,再下面是機(jī)架的意思,POD,橫向擴(kuò)展開來,這是典型的數(shù)據(jù)中心。我們有一個(gè)運(yùn)營門戶,跟這邊OSS實(shí)際上是類比雷同的?,F(xiàn)在不同的地方在機(jī)架這一層又做了一層邏輯劃分,在機(jī)架下面,一個(gè)機(jī)架可以包含多個(gè)集群,集群下面才是你的主機(jī),這樣劃分出來以后,一個(gè)zone就可以針對數(shù)據(jù)中心,可以是很大范圍的擴(kuò)展。還有一點(diǎn)不一樣,那邊的Secondary storyge,他要求盤比較大,CloudStack最初的研發(fā)也是認(rèn)識到這一點(diǎn),把它對存儲的需求設(shè)計(jì)成主存儲跟二級存儲。
這個(gè)就是更貼近現(xiàn)實(shí)的,就是為這個(gè)場景設(shè)計(jì)的,可以在地域性有很大的跨度,一個(gè)云環(huán)境,可能有些公司好幾個(gè)地方都有辦事地點(diǎn),可以在云環(huán)境下部署。比如我在北京有我的數(shù)據(jù)中心,我會把一個(gè)資源域放在這,我的Server都在這里放著,我在上海有兩個(gè)ZONE,在廣州有一個(gè),這是很彈性的地域擴(kuò)展,CloudStack是完全支持的。
這邊是一些簡單的數(shù)據(jù),就是CloudStack目前擴(kuò)展性到底是什么狀況,我剛才提到management Server,一個(gè)管理服務(wù)器結(jié)點(diǎn),目前可以支持到一萬個(gè)左右的資源,當(dāng)然這的資源不光是你的物理主機(jī),也包括其他的主存儲,二級存儲,以及你的交換機(jī),這些都是你的資源,它可以一個(gè)管理服務(wù)器結(jié)點(diǎn)可以支持到一萬個(gè),對于大家部署自己私有云是足夠用的,并且有些公有云差不多沒達(dá)到這個(gè)規(guī)模。
它可以很彈性的拓展,它在管理服務(wù)器結(jié)點(diǎn)前面,如果訪問量很大,你可以加多臺管理服務(wù)器,前面加負(fù)載均衡就可以完全做到。如果大家能關(guān)注一下的話,在阿帕奇CloudStack這邊有一個(gè)測試,大概用四個(gè)管理服務(wù)器加負(fù)載均衡,可以支持三萬個(gè)物理的資源,三萬個(gè)虛機(jī)的規(guī)模。當(dāng)然因?yàn)檫@是一種模擬。目前這塊還有很大的改進(jìn)空間。比如要完整的scalesout,可能你要解決一些他的POST的機(jī)制,通過Scalesout的計(jì)算一個(gè)管理服務(wù)器可以支撐到兩萬個(gè)resources。
在云的時(shí)代,假定任何東西都不可靠,CloudStack在這種可靠性方面到底有哪些自己的特點(diǎn)呢?首先就是CloudStack它有很多主動或者是被動的方式,主動的方式就是,比如我做動態(tài)的遷移,比如我把主機(jī)進(jìn)行人為維護(hù),在可預(yù)知的時(shí)候,比如我的硬盤損壞了,我的內(nèi)存需要增加一些,在這種情況下實(shí)際上是主動的行為,把系統(tǒng)某一個(gè)resources進(jìn)行維護(hù),還有一個(gè)是被動,這種情況下都是不可預(yù)知的,大多數(shù)都是這種情況,在這種情況下我們需要做哪些事情,就是CloudStack提供了叫HA的機(jī)制,高可靠性的機(jī)制,你只要把虛機(jī)啟動之前讓他用這個(gè)服務(wù)把HA給勾上,這個(gè)主機(jī)壞掉了,或者這個(gè)虛機(jī)Server有問題,可以自動把它接起來。
CloudStack4.0發(fā)布以后加了一個(gè)新的功能,有一個(gè)主機(jī)專門針對HA,正常上面是空的,如果有些虛機(jī)做HA的話,做HA的虛機(jī)都會移到這個(gè)上面,從主動和被動方面都提供了對HA方面的支持。
我們接下來看一下,為了完整性,我會把所有的技術(shù)都會提一下。KVM在中國比較火,雖然官方?jīng)]有說要支持12.0,但實(shí)際上也是支持的。
大家可以看一下他們自己分別的虛機(jī)格式都不太一樣,對于是否支持超配這種概念可以看一下,像存儲的超配,這并不是說所有的Hypervison對于所有的存儲都支持的。
Storage,一個(gè)是主存儲,一個(gè)是二級存儲,主存儲對于他的LPS要求都很高,二級存儲就是剛才講的,它是一種一次寫多次讀的存儲,對于這種來說實(shí)際上它的LPS不需要那么高,但是他的存儲容量比較大,模板、SO、快招都需要占用大量的存儲,認(rèn)識到這個(gè)特點(diǎn),所以CloudStack把存儲分成了這兩種不同的情況,有不同的用途。
下面簡單介紹一下Network,我把CloudStack支持的兩種資源域簡單提一下,第一種就是基本網(wǎng)絡(luò),基本網(wǎng)絡(luò)可以認(rèn)為在CloudStack的基本資源域,建立一個(gè)基本資源域的時(shí)候用的這種網(wǎng)絡(luò)。兩種不同顏色是指兩個(gè)不同用戶或者兩個(gè)不同帳戶下面的用戶虛機(jī),他們自己分配自己的IP,通過網(wǎng)絡(luò)里的三層交換進(jìn)行互聯(lián)互通,或者設(shè)置一些規(guī)則。前面加一個(gè)防火墻,通過安全組的方式進(jìn)行隔離的,這種是比較簡單的。
還有一種是高級資源域里,這就比較復(fù)雜了,這里對于虛擬路由器,每個(gè)帳戶都有自己單獨(dú)虛擬路由器,它負(fù)責(zé)很多的網(wǎng)絡(luò)功能,它的隔離是二層的隔離,也就是基于VLAN進(jìn)行隔離。兩個(gè)不同的客戶,它的虛擬機(jī),他的IP都是可以重復(fù)的,這是它的高級網(wǎng)絡(luò)。這是整個(gè)的圖片,這里面有很多種不同的角色,不同的權(quán)限,最終用戶可能權(quán)限小一點(diǎn),另外也支持EC2的API,在4.0里面,3.0也支持,但4.0里面更進(jìn)一步了。我們跟管理服務(wù)器下面用的是My SQL你可以自己加這個(gè)My SQL的集群,對于Oracle的話是用…,沒有開源之前,這些客戶都不是開源的,現(xiàn)在這部分客戶都是開源的,并且希望更多的廠家進(jìn)來,把自己支持的設(shè)備添加進(jìn)來。下面就是一些它的系統(tǒng)虛擬機(jī)。
因?yàn)槲椰F(xiàn)在主要在中國推動CloudStack中國社區(qū),我下面花點(diǎn)時(shí)間給大家介紹一下阿帕奇CloudStack這個(gè)社區(qū),以及現(xiàn)在在中國的狀況,跟大家分享一下。
首先阿帕奇CloudStack,現(xiàn)在還是一個(gè)孵化器的項(xiàng)目,它不是一個(gè)正式的項(xiàng)目,一旦成為正式項(xiàng)目,一定能成為TOP1。他里頭有四種角色,你怎么加入到這個(gè)阿帕奇CloudStack社區(qū),可以以四種身份加進(jìn)來,可以作為用戶,可以是一個(gè)(英文),或者…進(jìn)來,作為用戶的話,你是使用可以提一些使用建議,都算是對社區(qū)做貢獻(xiàn),如果是做一個(gè)開發(fā)者不是狹義的寫代碼,你在上面幫助回答問題,幫助做一些文檔工作,這些事情都是做貢獻(xiàn)。
你要是想成為committer首先必須去做貢獻(xiàn),讓大家看到你在這上面有自己的貢獻(xiàn)才行。另外一個(gè)是叫mentor,這個(gè)角色對阿帕奇整個(gè)流程是非常了解的,可以帶到這個(gè)項(xiàng)目上面,盡快的按照阿帕奇的流程來做事情。如果大家想知道這個(gè)項(xiàng)目,有一些路徑,第一個(gè)就是阿帕奇的網(wǎng)站,有一些東西在里面,大家可以看。
這個(gè)就是阿帕奇的Mailing Lists,這里我想強(qiáng)調(diào)的是這個(gè)郵件組,像CloudStack這邊對中國還是蠻重視的,有專門的郵件組在這里,大家可以訂閱一下,現(xiàn)在在里面討論也是非常熱烈的。很多人用CloudStack提問題,在上面提的總能很快被解決,郵件組是個(gè)好東西。
下面看一下CloudStack在中國社區(qū)的發(fā)展歷程,這邊我提的就是我們最近的線下活動,從今年5月份到現(xiàn)在,包括我們下周要去上海進(jìn)行一次沙龍活動,我們規(guī)模每次也不大,50-80人,大多數(shù)來的人都是開發(fā)者或者USER。上面是一些資源,下面是我們中國區(qū)的用戶對CloudStack做的一些貢獻(xiàn)。首先我們這邊有一些committer在里面,負(fù)責(zé)文檔,會做committer會做一些翻譯,翻譯是中國區(qū)的用戶在做。
下面有幾頁很快給大家過一下,就是INDEX,這是我們CloudStack網(wǎng)站訪問的情況,我們用谷歌簡單分析一下,當(dāng)然我們是以技術(shù)文章為主,然后會發(fā)一些活動的信息,技術(shù)文章現(xiàn)在沒有多少,大概四五十篇,現(xiàn)在也帶來了一些正面的反饋,我們可以簡單看一下,目前集中在北京、上海等地方訪問人數(shù)比較集中,我們前面提到,我們做的沙龍活動,目前主要集中在北京、上海。
這是我們的調(diào)查問卷收集上來的情況,對于CloudStack來說目前還是屬于比較新的階段,各個(gè)方面大家都想去了解,市場的安裝部署,開發(fā),系統(tǒng)運(yùn)維方面占的比例差不多,大家都想了解。
這是大家用的虛擬化平臺,或者叫虛擬化軟件的一些狀況,前三甲基本上就是VMware、Server,跟KM?,F(xiàn)在資料比較分散,可能需要更好的做工作。我們鼓勵(lì)更多人加入這個(gè)社區(qū),實(shí)現(xiàn)雙贏。我們現(xiàn)在接下來還是會做CloudStack相關(guān)的一些分享,不管是技術(shù)方面,還是部署,錄一些VIDEO都是很歡迎的,我們現(xiàn)在著手做一個(gè)演示的工作,大家可以上去玩一下,當(dāng)然需要一定的資源和時(shí)間?,F(xiàn)在CloudStack也需要更多的VENDOR加入進(jìn)來。
提問:有人說CloudStack適合中小型的部署,而Openstack適合比較大型的部署結(jié)構(gòu),您對這個(gè)有什么評價(jià)嗎?
嘉賓:舉個(gè)簡單的例子,Openstack我跟他們有過交流,他們目前最大的部署規(guī)模,應(yīng)該是…有數(shù)千臺的規(guī)模,但現(xiàn)在CloudStack目前規(guī)模有四萬臺,這個(gè)根本不是問題,CloudStack是適合你做公有云,也適合做私有云,在國內(nèi)可能私有云會占絕大多數(shù)。CloudStack自己本身它現(xiàn)在成熟度跟它的擴(kuò)展性足以支撐現(xiàn)在我們遇到的云平臺。
提問:CloudStack是用JAVA云開發(fā)的嗎?
嘉賓:對,主要就是JAVA。
提問:有付費(fèi)版和免費(fèi)版嗎?
嘉賓:你可以完全用阿帕奇CloudStack版本,不用考慮任何付費(fèi),因?yàn)榘⑴疗鍸I…決定了,你不需要出任何費(fèi)用可以拿下來部署,你遇到問題去反饋只能是通過社區(qū)渠道,但是你可以用其他基于阿帕奇CloudStack,有很多商業(yè)公司有自己的版本,你要是想后續(xù)的支持就要找具體的基于CloudStack開發(fā)的商業(yè)版本去做。
提問:它對Web…支持的配置方面,如果只是修改文件參數(shù)可以實(shí)現(xiàn)嗎?
嘉賓:因?yàn)榻裉鞗]有帶來那個(gè)演示,如果要支持VM集群的,你必須建一個(gè)數(shù)據(jù)中心,下面再有…,這個(gè)數(shù)據(jù)中心的名字,以及你的用戶名密碼組合起來,可以把這些信息提供給CloudStack,整個(gè)在CloudStack管理平臺上面體現(xiàn)出來,很方便的。
提問:CloudStack,實(shí)際上它支持的硬件,還有剛才講的數(shù)據(jù)庫,DATA…有什么限制。
嘉賓:這邊的限制主要體現(xiàn)在hypervison,你想看看這個(gè)硬件是不是支持你就要打開…Server他們的硬件兼容列表去看一下,hypervison只能在哪幾個(gè)平臺上做測試,My SQL也可以用,具體怎么用,是數(shù)據(jù)庫方面的事情。
提問:現(xiàn)在比如說Oracle,My SQL可以嗎?
嘉賓:這個(gè)東西現(xiàn)在需求沒有那么明顯,現(xiàn)在我們只是支持My SQL,因?yàn)樗褪莻鹘y(tǒng)的是能夠?qū)崿F(xiàn)的,要支持其他的數(shù)據(jù)庫也是很容易的,只是現(xiàn)在My SQL不管從效率以及穩(wěn)定性都足夠,并且My SQL,沒有默認(rèn)在這個(gè)里面,需要自己單獨(dú)去完成。
我今天講了這么多,所有的代碼都是在阿帕奇CloudStack允許的情況下。現(xiàn)在VMware不是阿帕奇的許可,如果你這邊要用的話得你自己加進(jìn)去。
提問:有一塊存儲嗎?
嘉賓:他的主存儲或者二級存儲支持不支持…,他下面用的LVM都是…的支持,實(shí)際上是這個(gè)存儲本身支不支持這種協(xié)議或者怎么樣。
提問:…
嘉賓:你提到的是它里面的幾個(gè)系統(tǒng)虛擬機(jī),幾個(gè)系統(tǒng)虛擬機(jī),目前有一些是有點(diǎn)問題了,比如說它的虛擬路由器,用的過程中,發(fā)現(xiàn)它無法進(jìn)行關(guān)機(jī)類似的操作,現(xiàn)在社區(qū)里面有一種聲音討論,接下來可能會考慮centerOS,依賴于一個(gè)是OS,另外一個(gè)是部署給你整個(gè)的硬件環(huán)境,實(shí)際上是你的整個(gè)架構(gòu)和網(wǎng)絡(luò)環(huán)境上的問題。
提問:現(xiàn)在比如我的APServer跟我的數(shù)據(jù)中心要分開,有一個(gè)在北京,有一個(gè)在上海,APServer在北京,數(shù)據(jù)中心在上海,有這樣的部署嗎?
嘉賓:因?yàn)槟銈円紤]…是不是足夠,一般情況下,異地的這種情況都是以ZONE為邊界。
提問:中國現(xiàn)在有哪些支持開源的版本,還有哪些商業(yè)公司支持這種商業(yè)版?
嘉賓:開源的這個(gè)版本大家是都能用,但是商業(yè)版本…,昨天那個(gè)會也發(fā)布了5.0的版本,解決了穩(wěn)定性。在國內(nèi)主要虛擬VDI的這個(gè)方案。
提問:CloudStack有什么缺點(diǎn)或者技術(shù)難點(diǎn)?沒有解決的問題能不能說一下。
嘉賓:目前來講CloudStack在幾個(gè)云平臺上算是比較成熟的,有一些社區(qū)里去看有兩百多個(gè)錯(cuò)誤要解決,如果你其他模塊要支持的話,最大問題就是許可的兼容性,有的時(shí)候還不能滿足,這是開發(fā)實(shí)踐過程中的一些問題。具體你說它目前實(shí)際上使用的過程中,CloudStack也好,可能商用的時(shí)候,直接用CloudStack版本,你得到的技術(shù)支持沒有那么強(qiáng)。但遇到問題你可能很難解決,你可能要尋求一些商業(yè)版本的支持。
提問:各個(gè)模塊有沒有什么缺陷,比如剛才網(wǎng)絡(luò)模塊,存儲模塊?
嘉賓:現(xiàn)在比較大的問題在4.1里可能會做,因?yàn)楝F(xiàn)在CloudStack它的模式是一種緊偶合的模式,每一層之間都是緊偶合,對于已經(jīng)熟悉的人開發(fā)是很容易的,但是對于新的人進(jìn)來開發(fā)沒有那么容易,4.0已經(jīng)發(fā)布了,4.1的時(shí)候會做比較大的動作,會把他的緊偶合拆一下,可能各個(gè)模塊之間會更加的API化,模塊化去操作,很方便,要加一個(gè)模塊會更加方便。
提問:現(xiàn)在市場上的各種模塊之間是比較緊偶合的。
嘉賓:對,偶合還是比較高的。
余慶:大家下午好,大家還堅(jiān)持到現(xiàn)在辛苦了。我來自阿里巴巴,我現(xiàn)在做的工作也是阿帕奇的開源項(xiàng)目,叫xen Server,就是一個(gè)類似于(英文),從它的性能上來講,包括價(jià)格上來講,應(yīng)該比S…更先進(jìn)一些,性能這方面會比S…更好一些。
今天下午的主題,主要都是云計(jì)算,和云平臺,接下來我給大家介紹這塊,可以往云存儲這塊去靠,但是其實(shí)我這個(gè)可能沒這么大,和云存儲應(yīng)該沾邊。感謝組委會,感謝陳先生給我這樣一個(gè)機(jī)會,跟大家一起做交流和分享。
DFS是我們做的一個(gè)開源的分布式文件系統(tǒng),是業(yè)余時(shí)間做的,其實(shí)這個(gè)開源系統(tǒng),現(xiàn)在還不是阿帕奇的開源項(xiàng)目,想爭取,后面讓它成為一個(gè)阿帕奇的開源項(xiàng)目。簡單介紹一下DFS是什么,它是一款開源的,輕量級的分布式文件系統(tǒng),其實(shí)這個(gè)文件系統(tǒng)不是特別高深,不是通用的文件系統(tǒng),是一個(gè)專有的文件系統(tǒng),是類似于谷歌FS的文件系統(tǒng),已經(jīng)提供了C,JAVA和PHPAPI的這些都有。
說他是類谷歌FS,其實(shí)照搬FS,F(xiàn)S的定位主要還是針對分布式計(jì)算來做的,我這個(gè)DFS定位主要是為互聯(lián)網(wǎng)應(yīng)用來定制的。其實(shí)就是大家看到的最后一條,DFS是為互聯(lián)網(wǎng)應(yīng)用量身訂作,主要是解決大容量存儲的問題,追求高性能和高擴(kuò)展性。UNIX系統(tǒng)都是支持的。
DFS不是通用文件系統(tǒng),把它看成是一個(gè)基于文件系統(tǒng)的Key value pair系統(tǒng)更合適,更貼切一些。大家有一個(gè)印象,他是一個(gè)類似于谷歌的DFS系統(tǒng),他提供的API很簡單就是upload,download,APPENDER文件,還有就是SLAVE文件,普通的文件上傳之后是不能修改的,只能刪除,APP…文件才可以做修改操作。
SLAVE文件主要是針對這種應(yīng)用場景,有一個(gè)主文件,有多個(gè)重文件場景的設(shè)計(jì),舉個(gè)例子,比如說像用戶的頭像,上傳的原圖可以叫主文件,互聯(lián)網(wǎng)應(yīng)用里面會做縮略圖,可能有多個(gè),然后其實(shí)都是從原文上轉(zhuǎn)換過來的,縮略圖就叫重文件,在文件的ID上面有聯(lián)系,然后別的就沒有聯(lián)系了。
最后一個(gè)是文件附加屬性,后面不太建議用了,提一下就好了,文件附加屬性比如像圖片的寬度、高度,圖片有什么作者之類的屬性,DFS是支持的,他把這些文件的屬性再單個(gè)保存的做法,其實(shí)這個(gè)不太推薦用,就存在KV系統(tǒng)里面,甚至存在存儲里面就好了,不必用DFS的特性。
DFS是從08年開始做的,做這個(gè)項(xiàng)目,當(dāng)時(shí)我還在中國雅虎,做這個(gè)項(xiàng)目其實(shí)是受公司項(xiàng)目的啟發(fā),做了這個(gè)項(xiàng)目,當(dāng)時(shí)雅虎的相冊,存儲方案是用的當(dāng)時(shí)雅虎有一套系統(tǒng),這個(gè)系統(tǒng)是基于集中式的存儲設(shè)備,當(dāng)時(shí)一臺設(shè)備差不多二百G的樣子,容量很高,但是相應(yīng)的成本也很高,一個(gè)是成本高,另外一個(gè),擴(kuò)容話就要加200T,這個(gè)平臺的成本太高了,雅虎自己做一個(gè)分布式文件系統(tǒng)。DFS的架構(gòu)從第一個(gè)版本定下來之后,后面就沒有變過,整體的架構(gòu)都是基于最早的設(shè)計(jì)來做的。
我們再看一下這幾個(gè)大的版本之間,他們的特點(diǎn),V1的版本,其實(shí)就是因?yàn)樽钤缥視容^傳統(tǒng)的,一個(gè)請求,一個(gè)線程的服務(wù)模式,支持的并發(fā)連接是有限的。像這種模型一般能支持的連接數(shù)是1K左右。
V2對V1做了改進(jìn),采用libevent庫,磁盤讀寫這塊也是專門的線程,工作模式比V1更先進(jìn)和高效,這個(gè)模型支持連接數(shù)可以達(dá)到10K,很輕松的。
V3其實(shí)就是一個(gè)特性,能夠把很多小文件合并存儲在一個(gè)大文件里面去,其實(shí)主要就是解決海量小文件的存儲問題,因?yàn)椴粚π∥募鎯ψ鰞?yōu)化的話,檢索會非常慢的。
V410月份發(fā)布,V4的特性并不是太多,他就是很簡單的一條,支持自定義的storage Server ID。如果你的Server ID地址改了之后,可能會引起你集群狀態(tài)上做一些調(diào)整之類的,雖然以前也做了一些工作,支持你的ID改了之后能夠自動調(diào)整,但是這個(gè)功能不是特別穩(wěn)定,你個(gè)集群里面同時(shí)改ID的時(shí)候,可能會出現(xiàn)一些混亂的情況。
記下來我們看一下DFS的架構(gòu),其實(shí)DFS只有兩個(gè)角色,大家可以看一下,右邊是存儲服務(wù)器,右上面是中心服務(wù)器,相當(dāng)于整個(gè)集群的核心,整個(gè)集群的頭腦。文件存儲是存儲在中間這塊的,我是列出來一列一列的,一列是一個(gè)組,文件在一個(gè)組里面是冗余的,完全是RADI1,完全是鏡像的關(guān)系,然后每個(gè)組的文件不會重疊的,文件上傳上來只能放在一個(gè)組里面,如果這個(gè)組里面有三個(gè)服務(wù)器,這個(gè)文件就會被復(fù)制三份。這個(gè)圖大概有是這樣。
DFS集群里面的所有服務(wù)器都是對等關(guān)系,存儲服務(wù)器是分組的方式,不同組的存儲服務(wù)器之間他們是完全獨(dú)立的,不會有任何聯(lián)系,不會有任何的通信。再看一下這個(gè)圖,剛才講了這個(gè)右上面這個(gè)圖集群的樞紐,他怎么知道這些集群的狀態(tài),是由這個(gè)存儲服務(wù)器主要向它匯報(bào)的。
接下來我們看一下DFS上傳文件和下載文件是什么樣的流程,其實(shí)理解了這個(gè)流程可能對DFS工作機(jī)制可能就清楚了一大半。
我們看一下上傳文件的流程,首先client會問tracker,我要上傳一個(gè)文件我這個(gè)文件應(yīng)該上傳到哪去。下載這個(gè)文件是client去問tracker,可以下載指定文件的storage,參數(shù)為文件ID。
接下來我們看一下DFS的特點(diǎn),大家可以看到,DFS是不需要傳統(tǒng)的name Server的,把這個(gè)瓶頸給消除了,因?yàn)樗麤]有這個(gè)角色。另外它的存儲時(shí)候是用分組的方式,這個(gè)方式比較簡單,也比較靈活。比如說要下載文件就以通過分組的方式。存儲服務(wù)器都是對等結(jié)構(gòu)的,不存在單點(diǎn)的問題。我們下載文件的時(shí)候,可以和目前主流的Web Server結(jié)合起來用,我們對阿帕奇提供了拓展模塊,也可以在存儲服務(wù)器上面直接部署阿帕奇或者部署UNIX,再把擴(kuò)展模塊裝上去,可以直接支持下載了。另外對中小型文件可以支持得很好,大文件也是可以支持的,但對大文件沒有做特殊支持,就是DFS是出于簡單的考慮,它對大文件,目前沒有做分塊這種做法,從V3開始,可以對海量小文件很好的支持,支持多塊磁盤,其實(shí)是建議,為了使你的系統(tǒng)達(dá)到更好的效率,其實(shí)是推薦你的存儲服務(wù)器直接掛單盤,不要做RADI了,這個(gè)文件系統(tǒng)保證你數(shù)據(jù)的可靠性,其實(shí)你是沒有必要做硬件RADI的,是比較浪費(fèi)的。最后一個(gè)特點(diǎn)就是支持相同文件內(nèi)容只保存一份,節(jié)省空間。
剛才講到DFS沒有name Server,不需要存儲文件索引,傳統(tǒng)都是必須要用name Server,為什么DFS不需要這個(gè)索引服務(wù)器,剛才我講的過程中已經(jīng)說到了,DFS里面的文件ID,是由存儲服務(wù)器生成,并且反饋給client的,client直接存在自己的系統(tǒng)里面就好了。文件ID包含了組名,還包含了文件名,可以直接根據(jù)該文件名定位到這個(gè)系統(tǒng)里面的文件。
下面一個(gè)文件ID的示例,最前面是組名,由管理員自己定義的,后面第二部分是磁盤,因?yàn)镈FS支持多磁盤,第二部分就是磁盤的表示,就是M后面帶一個(gè)磁盤的序號,M00就表示第一塊磁盤,M01就表示第二塊磁盤。00和0C就對應(yīng)文件系統(tǒng)里面的存儲目錄,DFS的文件是直接存在文件系統(tǒng)里面的,然后它在文件系統(tǒng)里面是建了一個(gè)兩級目錄來存儲的,最多就是250M,其實(shí)這個(gè)目錄數(shù)足夠了。最后一部分就是文件名,大家可以看到,比較長,文件名里面其實(shí)還包含了一些信息,在這里不詳細(xì)講了。
再講一下,V3你的小文件是合并存儲的,你怎么定位到這個(gè)小文件,大家可以看一下,我們在原來的ID基礎(chǔ)上又增加了三個(gè)字段,總共16個(gè)字節(jié),每個(gè)字段都是4字節(jié)的,它會有一個(gè),我這個(gè)文件是存在哪個(gè)窗口文件里的,然后我們的窗口文件以IE號作為文件名的,它在這個(gè)小文件的ID里面就會記錄我存的這個(gè)trunk file的ID,根據(jù)文件偏移量,直接定位到小文件起始的位置,還有我占用多大空間。
DFS同步機(jī)制也講一下,DFS是同步,和買設(shè)備的同步其實(shí)有類似的地方,都是采用binlog的做法,就是更新操作,上傳操作,然后同步的時(shí)候直接根據(jù)binlog來做。有一點(diǎn)要注意的,binlog里面只記錄這個(gè)文件名和操作的類型,不會實(shí)際記錄文件內(nèi)容,因?yàn)閷?shí)際文件內(nèi)容已經(jīng)存儲到系統(tǒng)里面去了。同步的時(shí)候是用增量的方式,我同步的位置,我會記錄在一個(gè)標(biāo)識文件里。剛才也說到,我的一個(gè)組里面,存儲服務(wù)器是對等的,然后文件上傳、刪除、下載這些操作可以在這個(gè)組里面任何一臺服務(wù)器上去做。還有一點(diǎn)就是這個(gè)文件同步,是先上傳到一臺存儲服務(wù)器上面去,然后再由這臺服務(wù)器把這個(gè)文件同步到這個(gè)組的其他服務(wù)器上面去,他是先上傳上去,上傳結(jié)束了再用IF的方式同步過去。
文件同步只在本組內(nèi)進(jìn)行,因?yàn)樗亲鍍?nèi)storageServer之間進(jìn)行,然后是push的方式,即源頭服務(wù)器同步給目標(biāo)服務(wù)器。
下面就會引入一個(gè)問題,因?yàn)槲业奈募巧蟼魍曛螅也湃プ鐾降?,有一個(gè)問題就是我的同步延遲的問題怎么解決。大家如果做過應(yīng)用開發(fā)的話就會碰到一個(gè)問題,就是同步延遲的問題,比如你更新一些記錄,或者你查一些記錄之后,你馬上就去訪問這個(gè)記錄,如果你馬上去訪問到storage的話,可能數(shù)據(jù)還沒有同步過來,會導(dǎo)致記錄取不到,也可能導(dǎo)致收到臟數(shù)據(jù),我們以前解決同步延遲的問題,我們就用了一個(gè)很土,很簡單的做法,我做完操作之后我加一個(gè)sdf。
存儲器生成的文件名里面,其實(shí)包含了好幾個(gè)比較重要的字段,其中最重要的兩個(gè)字段一個(gè)就是源storageID地址,或者從V4開始它的ID,還有另外一個(gè)字段就是文件的創(chuàng)建時(shí)間。根據(jù)文件名可以把這這些字段翻譯出來,另外一點(diǎn)存儲服務(wù)器會定時(shí)向storage Server報(bào)告同步的情況,包括向目標(biāo)服務(wù)器同步到文件的時(shí)間戳,tracker收到報(bào)告之后就會做一個(gè)計(jì)算,因?yàn)槊總€(gè)存儲器都向他定時(shí)的報(bào)告,然后他收到這個(gè)報(bào)告之后就會計(jì)算,這個(gè)組里面每一臺存儲服務(wù)器被同步時(shí)間戳的最小值。它會找這個(gè)最小值,把它給記錄下來。
tracker Server怎么知道我這個(gè)服務(wù)器上面一定能取得這個(gè)文件,有四個(gè)條件,第一個(gè)條件我們會設(shè)置一個(gè)同步的延遲閥值,當(dāng)前時(shí)間,文件創(chuàng)建時(shí)間戳,如果大于同步完成一個(gè)文件所需要的最大時(shí)間的話,表示這個(gè)文件肯定通不過去,這個(gè)文件肯定是延遲的。
第二個(gè)條件如果文件創(chuàng)建時(shí)間戳,比被同步的時(shí)間戳小的話,是表示這個(gè)文件已經(jīng)同步到當(dāng)前存儲服務(wù)器上去了。
第三個(gè)條件,單個(gè)文件的同步需要最大時(shí)間是多少,比如5分鐘我就會比一下這個(gè)時(shí)間戳,是不是已經(jīng)大于同步的最大時(shí)間,如果大于這個(gè)時(shí)間同步不過去了。
第四個(gè)條件文件上傳到源頭storage,只要滿足一條就可以下載到這個(gè)問題的。
下載文件的時(shí)候,我通過比較兩個(gè)時(shí)間戳,就知道你這個(gè)文件是不是可以下載。
最后我們看一下DFS使用的現(xiàn)狀。目前已經(jīng)知道在用的公司有二十多家,用的最大的一家是做網(wǎng)站的公司,他們存儲group數(shù)量有四百個(gè),它的存儲的機(jī)器數(shù)已經(jīng)超過800臺了,存儲容量達(dá)到6PB,存儲文件數(shù)超過1億,它的網(wǎng)站業(yè)務(wù)增長很快,數(shù)量增長也很快。我2010年的PPT里面寫的時(shí)候,group數(shù)和容量還是現(xiàn)在的一半,前幾天問它,它現(xiàn)在已經(jīng)又翻一倍了,也就一年多的時(shí)間。
我們再看一下DFS的使用案例,支付寶、飛信、京東、58同城、趕集網(wǎng)之類的,其實(shí)主要還是互聯(lián)網(wǎng)的公司,包括有支付行業(yè)的,有做電子商務(wù)行業(yè)的,也包括搜索這個(gè)行業(yè)的。我的介紹就到這,下面是一些網(wǎng)址,大家感興趣的話可以去看一下,包括DFS的論壇,上面有一些提問的解答,這是我的微博,大家感興趣的話可以關(guān)注一下,另外還有QQ群。也希望大家能夠參與到這個(gè)項(xiàng)目里面來,不管你是用還是貢獻(xiàn)代碼,反正能參與進(jìn)來就是很開心的一件事情。謝謝大家!
提問:…
余慶:其實(shí)DFS就是一個(gè)分布式的非常成熟的一個(gè)系統(tǒng),然后它的特點(diǎn),其實(shí)前面講到了,第一點(diǎn)就是他只有兩個(gè)角色,沒有傳統(tǒng)的name Server,不需要承擔(dān)文件索引,這是很大的亮點(diǎn)和特色。
目前DFS的做法比較簡單,像文件的一致性這塊,做的是弱一致性,不是強(qiáng)一致性,如果要做強(qiáng)一致性的話,你要付出的代價(jià)會很高。比如你要做強(qiáng)一致性,有一個(gè)做法,我要保證一個(gè)文件最少存三份,我于是把這個(gè)文件三份都傳上去,這樣應(yīng)用端的響應(yīng)時(shí)間會很長,并且應(yīng)用端會很難做,萬一我只有兩臺機(jī)器可以用,那這個(gè)時(shí)候你怎么處理,很麻煩的。如果弱一致性的話就好一些,只要有一臺機(jī)器是活著的,就可以上傳上去,等別的機(jī)器恢復(fù)之后再同步給它就好了。
比如我只有兩臺機(jī)器,上傳了幾個(gè)文件,第一臺服務(wù)器上去了,還沒有來得及同步到第二臺服務(wù)器的時(shí)候,這臺機(jī)器掛了,目前DFS架構(gòu)的特點(diǎn),無法恢復(fù)的話,這幾個(gè)文件可能就丟失了,強(qiáng)一致性的代價(jià)會大很多。
提問:…
余慶:這個(gè)tracker Server把兩臺機(jī)器的IP地址和端口配上去就好了。
提問:…
余慶:比如你要是動態(tài)的再加機(jī)器,目前的做法就是你要?jiǎng)討B(tài)加tracker Server,你的存儲服務(wù)器要重啟,以后在線加了之后就能自動生效之類的就更好了。tracker Server你要擴(kuò)充的話,這種情況很少。
主持人:謝謝余慶,我們希望這個(gè)項(xiàng)目成為阿帕奇的項(xiàng)目,因?yàn)闀r(shí)間關(guān)系,晚上還有活動,所以我們邀請最后一位演講人。
孫振南:向堅(jiān)持到現(xiàn)在的各位表示感謝,我會講得非???,如果大家有什么問題可以結(jié)束以后再聊。
今天跟大家介紹一下最近比較火的項(xiàng)目,叫inpala,因?yàn)榻裉焓谴髷?shù)據(jù),云開源,in現(xiàn)在還不是阿帕奇的項(xiàng)目,但是他用的阿帕奇的許可。
第一個(gè)問題它為什么,它比較適合復(fù)雜的運(yùn)算,但是它在自己啟動的過程當(dāng)中,它都有很多問題,也不是問題,比較慢,不適合在這樣的場景下使用,大家也都習(xí)慣了,也沒有覺得這樣有什么不好,可是最近一些需求,它的響應(yīng)時(shí)間,針對海量數(shù)據(jù)慢了一點(diǎn)。還有一個(gè)問題就是它的接口,Hive提供了接口,可以進(jìn)行海量數(shù)據(jù)的查詢。
今天這個(gè)inpala完全在功能上跟Hive非常接近的。講到速度的話,還有一個(gè)為什么不能用HBase,他很快,只是你的數(shù)據(jù)進(jìn)去這個(gè)步驟會花很長時(shí)間,我這邊寫的,你有可能有ETL,你有可能沒有ETL,不管怎樣你要導(dǎo)數(shù)據(jù)都會花很長的時(shí)間。
我們看一下在大數(shù)據(jù)處理領(lǐng)域領(lǐng)先的人,首先看谷歌,谷歌在實(shí)時(shí)處理海量數(shù)據(jù)上面有一些貢獻(xiàn)。后面是兩個(gè)是技術(shù)上的亮點(diǎn)。他用的(列存儲),谷歌做得比較厲害的是,基于可現(xiàn)套的數(shù)據(jù)結(jié)構(gòu)做的列存儲,根據(jù)這樣的數(shù)據(jù)格式做列存儲其實(shí)是有一些技巧的,在他的論文里面講得比較清楚,這就是他的技術(shù)背景和他達(dá)到的效果,大家也都很羨慕。
另外還有一家叫亞馬遜,前兩天拉斯維加斯,他們的會議上也介紹了他們的Redshift,他沒有公開一些細(xì)節(jié),我們知道就可以了,沒有什么可以學(xué)習(xí)的。他是按照主機(jī)收費(fèi)的,你付費(fèi)就很貴,而且你只能用到你的機(jī)器,不能用多別人的機(jī)器,這個(gè)跟谷歌的服務(wù)理念不一樣,所以我個(gè)人不太看好亞馬遜這個(gè)東西。
我們看一下有了這些論文或者一些領(lǐng)先者的做法,開源界有了什么東西,第一個(gè)就是阿帕奇Drill,現(xiàn)在有很多志愿者開始討論這個(gè)東西,它沒有任何的實(shí)質(zhì)的進(jìn)展,現(xiàn)在我們介紹另外兩個(gè),一個(gè)是Drill,今年大概十月份比較火起來的,但是到十一月份慢慢冷下來了,。還有一個(gè)就是Shark和Spark,它也是這個(gè)領(lǐng)域的新星。最后一個(gè)就是我們今天要介紹的inpala。
我們回過頭來看,這樣的東西,在整個(gè)大數(shù)據(jù)處理的生態(tài)環(huán)境里面它的定位到底是什么?第一他其實(shí)只是一個(gè)權(quán)衡,新的像inpala比較注重任務(wù)反饋的速度,響應(yīng),但它只能做一些簡單的事情,特定的一些查詢。跟傳統(tǒng)的分布式的MPP的數(shù)據(jù)庫相比,它也有些優(yōu)點(diǎn),它的做法向與上面用了MPP的思路,一些接口,下面我不再用MPP昂貴存儲硬件,或者網(wǎng)絡(luò)設(shè)備,我就把它換成了鏈家的HDMS,首先他非常的便宜,還有就是他可以提供線性的擴(kuò)展。這是它在整個(gè)大數(shù)據(jù)處理的環(huán)境當(dāng)中的定位,如果你進(jìn)行簡單查詢的話它可以很大程度上幫到你。
我們看一下它到底做些什么,它的功能其實(shí)很簡單,就是跟Hive做的事情接近的,同時(shí)他也有一定程度上的數(shù)據(jù)生成的能力,Hive不只是數(shù)據(jù)查詢,他可以做大數(shù)據(jù)的轉(zhuǎn)換。所有除此之外的東西,它都是沿用了Hive現(xiàn)有的方式,或者沿用了Hive的組件,他沒有用metadata,他是直接到Hive里面把那些表讀出來,就得到這些信息,同時(shí)他需要用Hive的DDL,就是定義語言,同時(shí)他的JDBC和ODBC都完全用Hive的,驅(qū)動都不用重裝,他已經(jīng)盡量跟Hive做到了兼容。這邊相當(dāng)于以前一個(gè)Hive可能要一跑晚上,第二天才能看到結(jié)果的,一個(gè)中午就跑完了,這是最有價(jià)值的一點(diǎn)。
我們舉一個(gè)簡單的例子讓大家看一下這個(gè)是怎么用的。首先還是要用一下Hive,可以建一張表,你還是要用Hive把數(shù)據(jù)導(dǎo)進(jìn)去,完了以后你就可以用impala,可以看到你剛剛用Hive建的表,可以做查詢。這是一個(gè)非常簡單的例子,就像大家說的,怎么把它跑起來。
這一頁我們看一下整個(gè)inpala的架構(gòu),首先inpala是一個(gè)沒有瑪斯特概念的。inpala一定要數(shù)據(jù)本地化。我用紅線畫的,每一個(gè)inpala都會被設(shè)計(jì)的動作,紅線就是每個(gè)都要做的。
我們看一下它怎么把這個(gè)速度提上去,這是它比較牛的地方。這邊介紹兩個(gè)概念,一個(gè)SQL其實(shí)可以分解成為很多執(zhí)行的小的單元,大家如果用過一些傳統(tǒng)數(shù)據(jù)庫的東西都知道,都會給出一個(gè)執(zhí)行的數(shù),其實(shí)就是那個(gè)東西,里面有一個(gè)深度優(yōu)先的數(shù),下面執(zhí)行完了執(zhí)行上一層,每一個(gè)結(jié)點(diǎn)有數(shù)據(jù)讀取、排序等等。
這一頁包含了若干個(gè)結(jié)點(diǎn)可以單獨(dú)執(zhí)行最小執(zhí)行的單元。舉個(gè)例子,我們想查詢一下是不是單身未婚的男青年比較不喜歡用打折券。左邊是商品數(shù)據(jù),右邊是客戶數(shù)據(jù),中間是ID連接起來。我們SQL按照城市選出來,包括商品名字,包括標(biāo)價(jià),標(biāo)價(jià)和它的實(shí)際銷售的價(jià)格,男性,單身,東西比較貴,在北上廣。我們看一下剛剛那個(gè)SQL可以分解成這樣子,最開始還是要去讀數(shù)據(jù),讀完數(shù)據(jù)以后再做Join,這樣子看挺直觀的,數(shù)據(jù)庫也都能做,在我們分布式的環(huán)境下,我們怎么把它加快,怎么把它變得可以分布,把Aggregation分步做。
fragment需要負(fù)責(zé)讀取一張表,同時(shí)讀取的時(shí)候按照跟這張表相關(guān)的條件進(jìn)行篩選,這三個(gè)在這一步是一相干的,而且數(shù)據(jù)也是分布的,這一步是完全可以分布來做的,下一步我們把數(shù)據(jù)小的表傳給數(shù)據(jù)多的表,比如這個(gè)表的數(shù)據(jù)比較大,我們就應(yīng)該把商品數(shù)據(jù)的找出來的結(jié)果傳給所有有銷售數(shù)據(jù)的結(jié)點(diǎn),傳過來以后就不需要再找一臺結(jié)點(diǎn)做Join。這個(gè)fragment為什么包含了兩個(gè)Join,原因是因?yàn)槿绻阕鳛閮蓚€(gè)fragment的話,在運(yùn)行的時(shí)候,不管是線程也好,還是什么也好,必定還有本機(jī)的數(shù)據(jù)傳輸,這就是最合理的分配方法,這就是盡量快去執(zhí)行的基本原理。
這邊比較頭疼的地方,這兩個(gè)的結(jié)果都需要傳送到這臺有數(shù)據(jù)的結(jié)點(diǎn)上,對帶寬要求比較高,所以我用了比較粗的紅線,如果N臺機(jī)器銷售數(shù)據(jù),M臺機(jī)器上有商品數(shù)據(jù),這是一個(gè)M×N的關(guān)系。
除此之外,在性能優(yōu)化上做了很多事情,大概是四個(gè),第一個(gè)完全用C++寫的,fragment在實(shí)際分發(fā)執(zhí)行的時(shí)候會在本地做編譯。他會繞過HDFS協(xié)議。
接下來它有哪些事情要做呢,首先他沒有BDL,他需要完全借助Hive,第二個(gè)他沒有Defined Function,第三個(gè)他沒有FT,如果這個(gè)Join在中間掛掉以后,他建議重跑。然后就是文件類型的支持,Avro,RCFile,LZO等等。inpala和Trevni,性能會提升很多。如果這兩個(gè)加在一起,性能上比谷歌論文里面那個(gè)不會差太多,開源稍微走帶谷歌前面一點(diǎn)點(diǎn)。
他現(xiàn)在的Join,我們講的數(shù)據(jù)傳來傳去,最后做合并的時(shí)候全部在內(nèi)存里面做的,這個(gè)很有問題,數(shù)據(jù)大了,很有可能會爆掉,正在做改進(jìn)。已經(jīng)可能會寫進(jìn)磁盤等等。
我們做了一些測試,我們測試用的是速度交易委員會,一些數(shù)據(jù)也很復(fù)雜,這是測試用的機(jī)器,用來做inpala三臺機(jī)器,總共只有四塊硬盤。這是我們測試的結(jié)果。
下面兩頁沒空講了,這是他內(nèi)部的架構(gòu),這邊我只講半分鐘,BE他里面有一些fragment。
如果有問題的話線下再聊,我新浪微博是這個(gè)。
主持人:非常感謝各位今天堅(jiān)持到現(xiàn)在,也非常高興大家一起來參加這個(gè)阿帕奇亞洲巡講的活動,晚上我們在對面的三樓有活動,如果有興趣大家可以去對面C座三樓。我們的活動到此結(jié)束,謝謝各位!
(結(jié)束)