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