專(zhuān)訪(fǎng)京東云大數(shù)據(jù)平臺(tái)技術(shù)負(fù)責(zé)人廖曉輝:揭秘Spark與云服務(wù)
原創(chuàng)云已經(jīng)成為在互聯(lián)網(wǎng)圈里出現(xiàn)頻率最高的一個(gè)詞了。無(wú)論是公有云、私有云、開(kāi)發(fā)云,測(cè)試云,也不僅僅是互聯(lián)網(wǎng)企業(yè),傳統(tǒng)企業(yè)也因?yàn)樵谱龀隽嘶蚨嗷蛏俚母淖?。云已?jīng)成為像水、電一樣不可或缺的資源。
隨著“云”滲透進(jìn)生活的方方面面,無(wú)論是自建,還是利用已有資源,各大公司都紛紛開(kāi)始搭建云平臺(tái)。都想在云上分一杯羹。
自主研發(fā)的京東云
京東作為國(guó)內(nèi)最大的電商之一,也在搭建自己的云平臺(tái),而且大部分的技術(shù)都是自主研發(fā)。為什么不選擇現(xiàn)有的資源而要自己研發(fā)?
京東的云平臺(tái)卻包含很多分支包括宙斯、云鼎,移動(dòng)平臺(tái)等,是什么原因讓京東打算做這么復(fù)雜的云平臺(tái)?
廖曉輝認(rèn)為,京東云對(duì)外所推出的公有云服務(wù),都是基于私有云技術(shù)的產(chǎn)品。京東自身業(yè)務(wù)發(fā)展非常需要有一個(gè)穩(wěn)定,完善的私有云做基礎(chǔ)。在私有云技術(shù)產(chǎn)品穩(wěn)定后我們就對(duì)京東生態(tài)內(nèi)的合作伙伴、對(duì)社會(huì)開(kāi)放。云平臺(tái)是京東技術(shù)產(chǎn)業(yè)化的先鋒,要以云技術(shù)和云模式,構(gòu)建一個(gè)電商云生態(tài),讓京東生態(tài)內(nèi)的賣(mài)家和合作伙伴以及讓全社會(huì)做電商的企業(yè)都能在京東云上享受到京東的電商服務(wù)。
隨著京東的發(fā)展,京東的賣(mài)家越來(lái)越多,所有的電商平臺(tái)都存在這樣一個(gè)問(wèn)題:多個(gè)租戶(hù)共享同一數(shù)據(jù)庫(kù)實(shí)例必然需要一個(gè)有效的隔離方案,防止一個(gè)用戶(hù)的慢查詢(xún)請(qǐng)求或惡意請(qǐng)求影響其他用戶(hù)訪(fǎng)問(wèn)。
廖曉輝說(shuō):“就做云數(shù)據(jù)庫(kù)來(lái)講,在京東云里面提供的服務(wù)既有共享型的數(shù)據(jù)庫(kù),也有獨(dú)享型的數(shù)據(jù)庫(kù)。一些用戶(hù)特別關(guān)注的資源隔離對(duì)于這個(gè)問(wèn)題,我們的做法是用獨(dú)立的虛機(jī)方式去做部署,或者基于容器技術(shù)—Docker去實(shí)現(xiàn)不同級(jí)別的資源隔離。”
大數(shù)據(jù)環(huán)境下的Spark
毫無(wú)疑問(wèn)京東的數(shù)據(jù)量一定大的驚人,那么在大數(shù)據(jù)環(huán)境下進(jìn)行數(shù)據(jù)分析,更多人都會(huì)選擇Spark,因?yàn)榇蠹叶贾浪腔趦?nèi)存上面進(jìn)行運(yùn)算,這樣的話(huà)可能處理的數(shù)據(jù)會(huì)有限。
廖曉輝告訴記者:“就spark來(lái)講,它出現(xiàn)時(shí)間不長(zhǎng)發(fā)展的卻很快,它的RDD分布式內(nèi)存結(jié)構(gòu)概念和容錯(cuò)性支持,以及利用DAG做執(zhí)行優(yōu)化,即性能和可靠性的表現(xiàn),使得它非常有吸引力。但在內(nèi)存受限的情況下,確實(shí)會(huì)影響它的性能表現(xiàn)。對(duì)于內(nèi)存等資源限制的情況下,還需要對(duì)大量數(shù)據(jù)做低延遲處理,,這種場(chǎng)景我們可能需要考慮采取近似計(jì)算方式,但 如果計(jì)算結(jié)果的精度要求不能降低,可能我們要走增量計(jì)算的方式:持續(xù)性地對(duì)一些增量數(shù)據(jù)做一些累進(jìn)式的實(shí)時(shí)計(jì)算,來(lái)得到實(shí)時(shí)地計(jì)算結(jié)果來(lái)滿(mǎn)足業(yè)務(wù)或用戶(hù)的需求,相當(dāng)于把全量數(shù)據(jù)的離線(xiàn)計(jì)算,轉(zhuǎn)變成一種持續(xù)性的增量的計(jì)算方式。”
在數(shù)據(jù)存儲(chǔ)上大致有幾類(lèi),像通常的key-value數(shù)據(jù)庫(kù),文檔型的數(shù)據(jù)庫(kù)mongodb,列式分布式數(shù)據(jù)庫(kù)HBase等等,京東是如何考量和選擇的HBase的?
廖曉輝書(shū):其實(shí)各種不同的數(shù)據(jù)庫(kù)類(lèi)型我們都有用到,包括HBase和mongodb。選擇哪一種需要結(jié)合我們的業(yè)務(wù)需求,考慮數(shù)據(jù)存取的計(jì)算方式以及開(kāi)發(fā)效率。mongodb它對(duì)各種語(yǔ)言都非常友好并提供相對(duì)豐富的API,它數(shù)據(jù)在數(shù)據(jù)量不是非常大的情況下,會(huì)有非常好的性能表現(xiàn)。而對(duì)于HBase來(lái)說(shuō),它屬于Hadoop生態(tài)里面的一款產(chǎn)品,它適合random access場(chǎng)景或少數(shù)據(jù)量scan,隨著數(shù)據(jù)增長(zhǎng)易于擴(kuò)容同時(shí)維持高的讀寫(xiě)性能;列存儲(chǔ)對(duì)于稀疏矩陣數(shù)據(jù)存儲(chǔ),加上壓縮,能提高存儲(chǔ)的效率。我們還是根據(jù)業(yè)務(wù)需要,以及數(shù)據(jù)量的規(guī)模,考慮以后的擴(kuò)容以及項(xiàng)目研發(fā)效率來(lái)選擇。
傳統(tǒng)上,若是使用Hadoop MapReduce框架,雖然可以容易地實(shí)現(xiàn)較為復(fù)雜的統(tǒng)計(jì)需求,但實(shí)時(shí)性卻無(wú)法得到保證;反之若是采用Storm這樣的流式框架,實(shí)時(shí)性雖可以得到保 證,但需求的實(shí)現(xiàn)復(fù)雜度也大大提高了我們。Spark Streaming在兩者之間找到了一個(gè)平衡點(diǎn)?
廖曉輝解答 :“Hadoop MapReduce計(jì)算模式實(shí)際上降低了做并行計(jì)算、大數(shù)據(jù)處理的門(mén)檻,適合于高吞吐量的批處理場(chǎng)景。而Storm和Spark-Streaming,它們都是流式計(jì)算的框架。Storm以其低延遲、易擴(kuò)展性和容錯(cuò)機(jī)制等特點(diǎn)發(fā)展至今已經(jīng)非常成熟,也非常優(yōu)秀,為許多互聯(lián)網(wǎng)公司所青睞。Spark-Streaming它基于spark將流式數(shù)據(jù)拆分為mini-batch做持續(xù)計(jì)算,從目前來(lái)看,它的處理延遲可能稍高,但也基本滿(mǎn)足實(shí)時(shí)計(jì)算地要求,且它有豐富的計(jì)算和轉(zhuǎn)換類(lèi)API,并易于使用。雖然內(nèi)部使用Scala去實(shí)現(xiàn)但是也支持JAVA的開(kāi)發(fā),在開(kāi)發(fā)效率方面還是非常高的,此外,我們自己的經(jīng)驗(yàn)是在生產(chǎn)環(huán)境驗(yàn)證了它的穩(wěn)定性和可靠性。如果對(duì)兩者進(jìn)行比較,個(gè)人認(rèn)為,storm適合對(duì)實(shí)時(shí)性要求更高的場(chǎng)合,因?yàn)樗梢园蜒舆t控制在亞秒級(jí)或者更低。而Spark-Streaming作為Spark Stack中的一員,如果熟悉了Spark下的開(kāi)發(fā)方式,對(duì)Spark-streaming的開(kāi)發(fā)非常容易上手;大部分的大數(shù)據(jù)處理需求,不同的workload,Spark Stack中有相應(yīng)的技術(shù)產(chǎn)品可供選擇,可避免維護(hù)不同的計(jì)算框架。選擇Spark-Streaming就要考慮這個(gè)生態(tài)系統(tǒng)里的其他產(chǎn)品以及開(kāi)發(fā)效率。Spark社區(qū)很火,在今年出現(xiàn)1.0版本之后,很快就出現(xiàn)了1.1版本,有非常好的勢(shì)頭,也在實(shí)際應(yīng)用中用它的優(yōu)異表現(xiàn)在贏(yíng)得越來(lái)越多的用戶(hù)。”
雙十一過(guò)去不久京東作為國(guó)內(nèi)首屈一指的電商平臺(tái)在雙十一期間如何保證服務(wù)器在大量請(qǐng)求、訪(fǎng)問(wèn)的的正常運(yùn)轉(zhuǎn)而不宕機(jī)的?
廖曉輝說(shuō):“雙十一保障是一項(xiàng)有組織有計(jì)劃地工作。在雙十一之前會(huì)有一個(gè)比較長(zhǎng)的籌備時(shí)間,會(huì)對(duì)雙十一的流量和業(yè)務(wù)的增長(zhǎng)做一個(gè)預(yù)估,有計(jì)劃的去做線(xiàn)上的系統(tǒng)擴(kuò)容以及完善監(jiān)控,并對(duì)可能的異常做好演練并制定預(yù)案。雙十一期間近一周左右時(shí)間,京東的研發(fā)部包括云平臺(tái)的研發(fā)人員會(huì)安排人員24小時(shí)值班,來(lái)解決任何可能出現(xiàn)的線(xiàn)上問(wèn)題。雙十一之后對(duì)雙十一的情況做一個(gè)總結(jié),積累經(jīng)驗(yàn),從而提升系統(tǒng)的穩(wěn)定性。
另外,從服務(wù)系統(tǒng)架構(gòu)層面,要有HA, Loadbalance 設(shè)計(jì),有故障只降服不停服,可彈性擴(kuò)容;要有非常及時(shí)和完善的監(jiān)控,保障異常情況下,第一時(shí)間處理,縮短故障時(shí)間。再有就是防攻擊系統(tǒng)和災(zāi)備方案進(jìn)一步提供保障。”
介紹一下京東云中大數(shù)據(jù)的云服務(wù),你們的技術(shù)實(shí)現(xiàn),對(duì)Spark的應(yīng)用,以及產(chǎn)品路線(xiàn)和遇到的挑戰(zhàn)。
廖曉輝說(shuō):“云海是京東云提供的大數(shù)據(jù)開(kāi)放服務(wù),是商家驅(qū)動(dòng)的數(shù)據(jù)開(kāi)發(fā)平臺(tái),商家授權(quán)數(shù)據(jù),ISV來(lái)開(kāi)發(fā)相關(guān)數(shù)據(jù)產(chǎn)品,服務(wù)于商家的數(shù)據(jù)驅(qū)動(dòng)、精細(xì)化運(yùn)營(yíng)的需求。同時(shí)用戶(hù)也可以上傳自己的數(shù)據(jù),作為京東平臺(tái)電商數(shù)據(jù)的補(bǔ)充。
云海中的Spark
云海不僅提供大數(shù)據(jù)存儲(chǔ)和計(jì)算資源,同時(shí)還有云端的數(shù)據(jù)挖掘和開(kāi)發(fā)工作臺(tái),這背后所涉及到的交互查詢(xún)分析,批處理計(jì)算,實(shí)時(shí)計(jì)算,機(jī)器學(xué)習(xí)算法工具,在線(xiàn)OLAP分析,都涉及到Spark相關(guān)技術(shù)的應(yīng)用。我們?cè)谝劳蠸park來(lái)搭建高效的計(jì)算平臺(tái)和工具集,目的是使挖掘數(shù)據(jù)價(jià)值的過(guò)程變得更敏捷,而且是一套全云端的解決方案。
京東有大數(shù)據(jù)平臺(tái)建設(shè)的豐富經(jīng)驗(yàn),同時(shí)數(shù)據(jù)驅(qū)動(dòng)業(yè)務(wù),數(shù)據(jù)驅(qū)動(dòng)決策,基于大數(shù)據(jù)的精細(xì)化運(yùn)營(yíng)上也有成熟的經(jīng)驗(yàn),這些個(gè)經(jīng)驗(yàn)也能幫助在京東上做生意的商家,可以借鑒用于改善運(yùn)營(yíng)效率,提高用戶(hù)滿(mǎn)意度。這個(gè)價(jià)值輸出,通過(guò)云海,做的方式就是團(tuán)結(jié)在電商領(lǐng)域期望結(jié)合大數(shù)據(jù)提供數(shù)字化運(yùn)營(yíng)解決方案的軟件商這個(gè)群體,搭建一個(gè)平臺(tái)以數(shù)據(jù)為核心,連接商家需求和ISV數(shù)據(jù)產(chǎn)品服務(wù),同時(shí)對(duì)ISV的數(shù)據(jù)產(chǎn)品做一些引導(dǎo),在解決商家的實(shí)際問(wèn)題中產(chǎn)生價(jià)值。
在云海的建設(shè)過(guò)程中我們碰到很多挑戰(zhàn),有大數(shù)據(jù)處理的技術(shù)方面的,對(duì)于這類(lèi)問(wèn)題,我們也結(jié)合業(yè)務(wù),基于Spark做自主地研發(fā)工作或改進(jìn)框架本身。同時(shí)數(shù)據(jù)開(kāi)放的有效和可行方式,我們也在探索中。近些年大數(shù)據(jù)概念的“熱”以及大數(shù)據(jù)在一些互聯(lián)網(wǎng)公司,電商企業(yè),以及金融等領(lǐng)域的應(yīng)用的示范作用,讓各組織越來(lái)越重視數(shù)據(jù)資產(chǎn),現(xiàn)階段,由于數(shù)據(jù)的敏感性,對(duì)數(shù)據(jù)收集、處理、挖掘大多限于組織內(nèi)部。但從另一方面,相信很多人都同。在數(shù)據(jù)的網(wǎng)絡(luò)里,數(shù)據(jù)連接數(shù)據(jù),匯聚各領(lǐng)域的數(shù)據(jù),數(shù)據(jù)開(kāi)放共享、供給不斷,讓更多人、個(gè)體有機(jī)會(huì)及時(shí)、便捷地分析和挖掘其中的價(jià)值,勢(shì)必能讓數(shù)據(jù)發(fā)揮更大的作用,甚至把社會(huì)信息化帶入一個(gè)更高的層次。因?yàn)檫@兩面性,即在數(shù)據(jù)資產(chǎn)保護(hù)和開(kāi)放之間求得一種平衡,建立數(shù)據(jù)交換可行、可信的平臺(tái),同時(shí)是可持續(xù)的,值得更多的組織和個(gè)人來(lái)探索,合作。






















