《企業(yè)網(wǎng)D1Net》9月9日訊
一說(shuō)大數(shù)據(jù),人們往往想到Hadoop。這固然不錯(cuò),但隨著大數(shù)據(jù)技術(shù)的深入應(yīng)用,多種類數(shù)據(jù)應(yīng)用要求的不斷提出,一些Hadoop不甚專注的領(lǐng)域開(kāi)始被人們注意,相關(guān)技術(shù)也迅速獲得專業(yè)技術(shù)領(lǐng)域的應(yīng)用。最近半年來(lái)的Spark之熱即是這樣的一個(gè)典型。
Spark是一個(gè)基于內(nèi)存計(jì)算的開(kāi)源集群計(jì)算系統(tǒng),目的是更快速地進(jìn)行數(shù)據(jù)分析。 Spark由加州伯克利大學(xué)AMP實(shí)驗(yàn)室Matei為主的小團(tuán)隊(duì)使用Scala開(kāi)發(fā),早期核心部分的代碼只有3萬(wàn)行,非常輕量級(jí)。Spark 提供了與Hadoop Map/Reduce 相似的分布式計(jì)算框架,但基于內(nèi)存和迭代優(yōu)化的設(shè)計(jì),因此在交互式數(shù)據(jù)分析和數(shù)據(jù)挖掘工作負(fù)載中表現(xiàn)更優(yōu)秀。
進(jìn)入2014年以后,Spark開(kāi)源生態(tài)系統(tǒng)得到了大幅增長(zhǎng),已成為大數(shù)據(jù)領(lǐng)域最活躍的開(kāi)源項(xiàng)目之一。Spark之所以吸引如此多的關(guān)注,究其原因主要是因?yàn)镾park具有的高性能、高靈活性、與Hadoop生態(tài)系統(tǒng)完美融合等三方面的特征。
首先,Spark對(duì)分布的數(shù)據(jù)集進(jìn)行抽象,創(chuàng)新地提出RDD(Resilient Distributed Dataset)的概念,所有的統(tǒng)計(jì)分析任務(wù)被翻譯成對(duì)RDD的若干基本操作組成的有向無(wú)環(huán)圖(DAG)。RDD可以被駐留在內(nèi)存中,后續(xù)的任務(wù)可以直接讀取內(nèi)存中的數(shù)據(jù);同時(shí)分析DAG中任務(wù)之間的依賴性可以把相鄰的任務(wù)合并,從而減少了大量的中間結(jié)果輸出,極大減少了磁盤(pán)I/O,使得復(fù)雜數(shù)據(jù)分析任務(wù)更高效。從這個(gè)意義上來(lái)說(shuō),如果任務(wù)夠復(fù)雜,迭代次數(shù)夠多,Spark比Map/Reduce快一到兩個(gè)數(shù)量級(jí)。
其次,Spark是一個(gè)靈活的計(jì)算框架,適合做批處理、工作流、交互式分析、迭代式機(jī)器學(xué)習(xí)、流處理等不同類型的應(yīng)用,因此Spark可以成為一個(gè)用途廣泛的計(jì)算引擎,并在未來(lái)取代Map/Reduce的地位。
最后,Spark可以與Hadoop生態(tài)系統(tǒng)的很多組件互操作。Spark可以運(yùn)行在新一代資源管理框架YARN上,它還可以讀取已有的存放在Hadoop上的數(shù)據(jù),這是個(gè)非常大的優(yōu)勢(shì)。
雖然Spark具有以上三大優(yōu)點(diǎn),但從目前Spark的發(fā)展和應(yīng)用現(xiàn)狀來(lái)看,Spark自身也存在很多缺陷,主要包括以下幾個(gè)方面:
1. 穩(wěn)定性方面,由于代碼質(zhì)量問(wèn)題,Spark長(zhǎng)時(shí)間運(yùn)行會(huì)經(jīng)常出錯(cuò),在架構(gòu)方面,由于大量數(shù)據(jù)被緩存在內(nèi)存中,Java垃圾回收緩慢的現(xiàn)象嚴(yán)重,導(dǎo)致Spark的性能不穩(wěn)定,在復(fù)雜場(chǎng)景SQL的性能甚至不如現(xiàn)有的Map/Reduce。
2. 不能處理大數(shù)據(jù),單臺(tái)機(jī)器處理數(shù)據(jù)過(guò)大,或者由于數(shù)據(jù)傾斜導(dǎo)致中間結(jié)果超過(guò)內(nèi)存大小時(shí),常常出現(xiàn)內(nèi)存不夠或者無(wú)法運(yùn)行得出結(jié)果。然而,Map/Reduce計(jì)算框架可以處理大數(shù)據(jù),在這方面,Spark不如Map/Reduce計(jì)算框架有效。
3. 不能支持復(fù)雜的SQL統(tǒng)計(jì),目前Spark支持的SQL語(yǔ)法的完整程度還不能應(yīng)用在復(fù)雜數(shù)據(jù)分析中。在可管理性方面,Spark與YARN的結(jié)合不完善,這就在用戶使用過(guò)程中埋下隱患,易出現(xiàn)各種難題。
雖然Spark正活躍在Cloudera、MapR、Hortonworks等眾多知名大數(shù)據(jù)公司,但是如果Spark本身的這些缺陷得不到及時(shí)處理,將會(huì)嚴(yán)重影響 Spark的普及和發(fā)展。在本土大數(shù)據(jù)平臺(tái)軟件公司星環(huán)信息科技(上海)有限公司(以下簡(jiǎn)稱"星環(huán)科技")推出一系列關(guān)于Spark的大數(shù)據(jù)平臺(tái)產(chǎn)品之后,這些難題已能夠迎刃而解。
星環(huán)科技推出的交互式分析引擎名叫Inceptor,從下往上有三層架構(gòu),最下面是一個(gè)分布式緩存(Transwarp Holodesk),可建在內(nèi)存或者SSD上,中間層是Apache Spark計(jì)算引擎層,最上層包括SQL’99和PL/SQL編譯器、統(tǒng)計(jì)算法庫(kù)和機(jī)器學(xué)習(xí)算法庫(kù),提供完整的R語(yǔ)言訪問(wèn)接口。
Transwarp Inceptor對(duì)Spark進(jìn)行了大量的改進(jìn),具有高性能、穩(wěn)定性好、功能豐富、易管理等特征,可以切實(shí)解決Spark本身存在的難題,具體而言,星環(huán)Inceptor具有以下幾點(diǎn)優(yōu)勢(shì):
高性能
首先,支持高性能Apache Spark作為缺省執(zhí)行引擎,可比原生的Hadoop Map/Reduce快;其次,通過(guò)建立獨(dú)立于Spark的分布式列式緩存層,可以有效防止GC的影響,消除Spark的性能波動(dòng),同時(shí)在列式緩存上實(shí)現(xiàn)索引機(jī)制,進(jìn)一步提高了執(zhí)行性能;再次,在SQL執(zhí)行計(jì)劃優(yōu)化方面,實(shí)現(xiàn)了基于代價(jià)的優(yōu)化器(cost based optimizer)以及多種優(yōu)化策略,性能可以比原生Spark快數(shù)倍;最后通過(guò)全新的方法解決數(shù)據(jù)傾斜或者數(shù)據(jù)量過(guò)大的問(wèn)題,使得處理超大數(shù)據(jù)量時(shí)也游刃有余。
更強(qiáng)的SQL支持
Inceptor提供ANSI SQL’99語(yǔ)法支持以及PL/SQL過(guò)程語(yǔ)言擴(kuò)展,并且可以自動(dòng)識(shí)別HiveQL、SQL’99和PL/SQL語(yǔ)法,在保持跟Hive兼容的同時(shí)提供更強(qiáng)大的SQL支持。由于現(xiàn)有的數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用大都基于SQL’99,而且國(guó)內(nèi)客戶大量使用PL/SQL,因此Inceptor可以支持復(fù)雜的數(shù)據(jù)倉(cāng)庫(kù)類分析應(yīng)用,也使得從原有數(shù)據(jù)庫(kù)系統(tǒng)遷移到Hadoop更為容易,可以幫助企業(yè)建立高速可擴(kuò)展的數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)集市。
基于R 的數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)
Inceptor中包含了專業(yè)用于數(shù)據(jù)挖掘的R語(yǔ)言執(zhí)行引擎,并且擴(kuò)展了R語(yǔ)言,支持多種分布式數(shù)據(jù)挖掘算法,包括統(tǒng)計(jì)算法和機(jī)器學(xué)習(xí)算法;也支持在 R 中調(diào)用SQL語(yǔ)句,通過(guò)Spark訪問(wèn)分布式內(nèi)存數(shù)據(jù)。這些功能使得用戶可以真正在全量數(shù)據(jù)上進(jìn)行機(jī)器學(xué)習(xí)或數(shù)據(jù)挖掘,而再也不用使用采樣的方法,精準(zhǔn)度得到很大提高。
多租戶/動(dòng)態(tài)集群創(chuàng)建/自由切換計(jì)算引擎
YARN的引入使得統(tǒng)一資源管理成為可能,Inceptor缺省采用星環(huán)改進(jìn)后的YARN,有效支持多個(gè)Spark或Map/Reduce集群,Inceptor的每一條SQL都可以通過(guò)簡(jiǎn)單的提示(hint)來(lái)指定執(zhí)行引擎使用Spark或Map/Reduce。而通過(guò)YARN管理所有資源后,可以具備以下優(yōu)勢(shì):
(1)統(tǒng)一集群,統(tǒng)一的HDFS和YARN集群,多個(gè)計(jì)算引擎共存并且訪問(wèn)同一份數(shù)據(jù),避免創(chuàng)建隔離的多個(gè)集群,減少數(shù)據(jù)拷貝或者遠(yuǎn)程訪問(wèn),提高效率,也可降低維護(hù)成本。
(2)動(dòng)態(tài)部署,可以動(dòng)態(tài)創(chuàng)建和銷毀Spark集群,靈活部署業(yè)務(wù)。適合對(duì)非7x24不間斷業(yè)務(wù)(例如周期性統(tǒng)計(jì)業(yè)務(wù))的動(dòng)態(tài)部署。
(3)資源隔離,通過(guò)YARN的資源隔離和配額管理,可以避免使用同一個(gè)Spark集群使用單一調(diào)度算法時(shí)出現(xiàn)的計(jì)算資源爭(zhēng)搶現(xiàn)象,保證每項(xiàng)業(yè)務(wù)都能順利完成。星環(huán)科技的 YARN支持對(duì)計(jì)算資源和內(nèi)存資源的管理能力,避免占用內(nèi)存資源多的Spark或Map/Reduce集群之間爭(zhēng)搶內(nèi)存資源。
(4)資源共享,在申請(qǐng)資源配額后,如果當(dāng)前用戶的資源緊張或受限,可以動(dòng)態(tài)調(diào)配其他用戶的閑置資源加入,當(dāng)其他用戶使用時(shí)再歸還。
高性價(jià)比
Inceptor支持混合存儲(chǔ)體系(內(nèi)存/閃存/磁盤(pán)),Holodesk列式存儲(chǔ)可以存放在速度較快的閃存SSD上或者更快的內(nèi)存中。內(nèi)存、SSD和機(jī)械硬盤(pán)的速度比是100:10:1,而同樣容量的內(nèi)存、SSD、硬盤(pán)的價(jià)格比也是100:10:1。采用為SSD優(yōu)化的Inceptor之后,實(shí)際測(cè)試發(fā)現(xiàn),采用SSD替代大容量昂貴的內(nèi)存作為緩存,性能沒(méi)有明顯的下降,因此可以用同樣的價(jià)格買到容量大10倍的SSD作為緩存,一方面可以提供跟純內(nèi)存緩存接近的性能,另一方面也可比純內(nèi)存數(shù)據(jù)庫(kù)處理更大的數(shù)據(jù)。
對(duì)于廣大用戶而言,在選擇Spark及大數(shù)據(jù)軟件時(shí),高性能、高兼容性和高性價(jià)比的技術(shù)無(wú)疑是用戶的最愛(ài),而星環(huán)Spark不僅可以實(shí)現(xiàn)三者的有機(jī)結(jié)合,更在此基礎(chǔ)上實(shí)現(xiàn)功能擴(kuò)展,為用戶提供更加全面優(yōu)質(zhì)的服務(wù),從而更能打動(dòng)用戶的芳心。
星環(huán)科技作為一家高科技大數(shù)據(jù)創(chuàng)業(yè)公司,致力于大數(shù)據(jù)基礎(chǔ)軟件的研發(fā)。星環(huán)科技目前掌握的企業(yè)級(jí)Hadoop和Spark核心技術(shù)在國(guó)內(nèi)獨(dú)樹(shù)一幟,其產(chǎn)品Transwarp Data Hub (TDH)的整體架構(gòu)及功能特性堪比硅谷同行,在業(yè)界居于領(lǐng)先水平,性能卓越,可處理從GB到PB級(jí)別的數(shù)據(jù)。星環(huán)科技的核心開(kāi)發(fā)團(tuán)隊(duì)參與部署了國(guó)內(nèi)最早的Hadoop集群,并在中國(guó)的電信、金融、交通、政府等領(lǐng)域的落地應(yīng)用擁有豐富經(jīng)驗(yàn),是中國(guó)大數(shù)據(jù)核心技術(shù)企業(yè)化應(yīng)用的開(kāi)拓者和實(shí)踐者。
目前,星環(huán)科技正處于高速發(fā)展時(shí)期,相信在未來(lái),隨著星環(huán)Spark以及相關(guān)大數(shù)據(jù)基礎(chǔ)軟件的普及,整個(gè)大數(shù)據(jù)領(lǐng)域?qū)⑦~向新的發(fā)展高度。
更多信息,請(qǐng)?jiān)L問(wèn) http://www.transwarp.io/