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