DARPA慷慨解囊的背后:Python與大數(shù)據(jù)的火花
據(jù) InformationWeek近日的一則消息顯示,DARPA(美國(guó)國(guó)防高級(jí)研究計(jì)劃局)將給分析公司Continuum Analytics投資300萬(wàn)美元,用于開(kāi)發(fā)Python的數(shù)據(jù)分析和處理庫(kù)。這筆資金來(lái)自其將在四年內(nèi)投資1億美元來(lái)改善大數(shù)據(jù)技術(shù)的XDATA項(xiàng)目,這個(gè)項(xiàng)目旨在“開(kāi) 發(fā)用于分析國(guó)防活動(dòng)中海量面向任務(wù)信息的 計(jì)算技術(shù)和軟件工具”。
Continuum Analytics將致力Blaze和Bokeh庫(kù)的開(kāi)發(fā):Blaze用于科學(xué)計(jì)算,而B(niǎo)okeh則是一個(gè)可視化系統(tǒng)。
其中,Blaze將同時(shí)擴(kuò)展現(xiàn)有的數(shù)學(xué)計(jì)算庫(kù)NumPy和科學(xué)計(jì)算庫(kù)SciPy,使其更適應(yīng)大數(shù)據(jù)庫(kù)技術(shù)。Blaze將聚焦在內(nèi)核外處理超過(guò)系統(tǒng)內(nèi)存容量的大型數(shù)據(jù)集,并同時(shí)支持分布式數(shù)據(jù)和流數(shù)據(jù)。
而B(niǎo)okeh則是一個(gè)用于大數(shù)據(jù)可視化的Python庫(kù),Continuum稱(chēng)之為用于大型數(shù)據(jù)集的“可擴(kuò)展、交互式以及易于使用的可視化系統(tǒng)”。Bokeh將整合許多可視化技術(shù),將包含Stencil可視化模型和Grammar of Graphics。
Python的運(yùn)行效率可以用“低下”來(lái)形容了,那么究竟又是什么讓它與大數(shù)據(jù)擦出了火花?首先要先看一下Python語(yǔ)言自身的優(yōu)勢(shì):
1. 易于學(xué)習(xí)的Python
眾所周知,大多數(shù)的大數(shù)據(jù)分析工作都不是開(kāi)發(fā)者在做,這樣易于學(xué)習(xí)的Python就有了被Continuum Analytics與DARPA同時(shí)看重的理由。就像該公司董事長(zhǎng)Peter Wang說(shuō):“如果他們可以學(xué)習(xí)一門(mén)簡(jiǎn)單的語(yǔ)言,他們將不需要額外的軟件開(kāi)發(fā)部門(mén)去參與數(shù)據(jù)分析。”
2. 解釋性語(yǔ)言Python
基于解釋語(yǔ)言的特性,使用Python進(jìn)行開(kāi)發(fā)無(wú)疑可以數(shù)倍的提升編碼效率;不到C++/Java一半的代碼行將大幅度減少開(kāi)發(fā)過(guò)程和維護(hù)階段的工作量,相信不會(huì)被大部分開(kāi)發(fā)者討厭。
上文說(shuō)到Python受開(kāi)發(fā)者喜愛(ài)的兩個(gè)方面:易于學(xué)習(xí)和高效的編碼效率;然而作為解釋性語(yǔ)言,Python的運(yùn)行效率必然不會(huì)很快,而快于Python幾倍、甚至幾十倍的語(yǔ)言也是一抓一大把,那么Python在海量的數(shù)據(jù)處理中還會(huì)具備優(yōu)勢(shì)嗎?
大數(shù)據(jù)vs. Python
俗話(huà)說(shuō)具體問(wèn)題具體對(duì)待,而一般我們從本質(zhì)上把大數(shù)據(jù)應(yīng)用場(chǎng)景分為兩個(gè)方面:
1. CPU密集型操作
在CPU密集型操作情況下,我們需要對(duì)海量的數(shù)據(jù)進(jìn)行計(jì)算;而剛剛說(shuō)到作為解釋性語(yǔ)言Python有著“相對(duì)杯具”的運(yùn)行效率,那么在像求逆矩陣、向量相似度等對(duì)語(yǔ)言高效性非常依賴(lài)的情景下,讓Python去做這些必然會(huì)造成性能下降和負(fù)載增加。然而別忘了Python還有個(gè)昵稱(chēng) —— 膠水語(yǔ)言,其集成機(jī)制可以輕松的聯(lián)結(jié)使用其它語(yǔ)言編寫(xiě)的模塊,比如:C、C++、Java。這樣我們就可以完全根據(jù)情況需要,使用Python來(lái)做框架,在核心CPU密集操作部分調(diào)用C或者其它高效語(yǔ)言。這樣開(kāi)發(fā)效率和性能都得以保障,至于對(duì)開(kāi)發(fā)團(tuán)隊(duì)要求的增高就是另外一回事了。
2. I/O密集型操作
在這個(gè)場(chǎng)景下,我們經(jīng)常做的是頻繁的I/O操作、頻繁的輸入/讀取文件系統(tǒng),但是不會(huì)涉及到復(fù)雜的計(jì)算。出于這些操作通常都是調(diào)用操作系統(tǒng)接口來(lái)完成,所以對(duì)語(yǔ)言的要求顯然不會(huì)太高。
從DARPA得到助力的不只是Python一個(gè)領(lǐng)域,下面看一下最近從DARPA獲得資金的項(xiàng)目:
近期得到DARPA慷慨解囊的機(jī)構(gòu)
在2012年11月,數(shù)據(jù)可視化和軟件公司Kitware收到一筆400萬(wàn)美元的資金,用于和軟件公司KnowledgeVis及一些高校一起開(kāi)發(fā)名為Visualization Design Environment的開(kāi)源數(shù)據(jù)聚合、查詢(xún)和可視化工具包。
其后2012年12月,喬治亞理工學(xué)院公布他們獲得了270萬(wàn)美元資金;這些資金用于在可擴(kuò)展的機(jī)器學(xué)習(xí)技術(shù)和分布式計(jì)算架構(gòu)上的研究,致力研發(fā)快速處理數(shù)據(jù)分析的算法。同樣在新機(jī)器學(xué)習(xí)軟件方面,Scientific Systems Company也獲得了數(shù)額不詳?shù)馁Y金。
2月,數(shù)據(jù)庫(kù)開(kāi)發(fā)者兼軟件資訊公司SYSTAP獲得XDATA項(xiàng)目的200萬(wàn)美元,這筆資金用于建立一個(gè)開(kāi)源圖分析平臺(tái)(使用GPU計(jì)算集群)。