近兩年,大數(shù)據(jù)概念越來越火,很多用戶都開始逐漸應用大數(shù)據(jù)技術(shù)挖數(shù)據(jù)金礦。但是,對于傳統(tǒng)的工業(yè)生產(chǎn)或者科研行業(yè),從事研究的人未必對計算機的算法編程非常熟悉,他們?nèi)绾卫么髷?shù)據(jù)技術(shù)做這方面的工作呢?今天多數(shù)的大數(shù)據(jù)方案都是依托Hadoop技術(shù)來做結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)處理,但是在這之前,收集到數(shù)據(jù)后,如何對數(shù)據(jù)進行整合和清洗,數(shù)據(jù)探索及處理,這個過程所耗費的時間往往是最后技術(shù)實現(xiàn)的幾倍。另外,又如何把自己的Hadoop算法部署到實際的生產(chǎn)環(huán)境當中去,這也需要花費專業(yè)的技術(shù)人員來做。
MathWorks公司的MATLAB軟件在科研和工業(yè)生產(chǎn)上的用戶非常多,他們最近也提出針對大數(shù)據(jù)的解決方案,針對前面的問題,他們更多的從生態(tài)開發(fā)環(huán)境來考慮,把大數(shù)據(jù)分析處理做成了一個完整的流程,然后利用諸多工具和技術(shù),解決用戶實際的問題。下面我們就來看看他們關(guān)于大數(shù)據(jù)分析的流程,來自MathWorks公司的高級應用工程師陳建平對記者做了詳細介紹。
首先基本上把整個流程分成四步:
第一步是怎么去獲取數(shù)據(jù);
第二步是怎么從這個數(shù)據(jù)中得到一些基本的信息,所謂數(shù)據(jù)清洗跟一些數(shù)據(jù)的一些基本信息的提取。
第三步是從數(shù)據(jù)中獲得哪些知識,要從數(shù)據(jù)中抓取有用的知識,這其實是真正的大數(shù)據(jù)的學習的過程。這其中會涉及很多技術(shù),比如機器學習,數(shù)據(jù)挖掘等。
最后的問題是用這個知識怎么去做一個模型,能夠?qū)ξ磥磉M行預測,這是一個大數(shù)據(jù)分析的結(jié)果。
第一個部分,怎么去獲取數(shù)據(jù)。獲取數(shù)據(jù),MathWorks最大的一個產(chǎn)品就是MATLAB,但是實際上MATLAB這個技術(shù)給大家發(fā)展了80多個相關(guān)的工具。從數(shù)據(jù)采集上來說,基本上從四個方面去支持這個數(shù)據(jù)的來源。第一個就是數(shù)據(jù)庫的訪問,數(shù)據(jù)庫訪問包括傳統(tǒng)的通用的數(shù)據(jù)庫,也包括一些分布式的文件系統(tǒng),當然也包括非結(jié)構(gòu)化數(shù)據(jù)庫。還有Financial data(金融數(shù)據(jù)),多數(shù)是通過網(wǎng)絡(luò)的方式去抓。數(shù)據(jù)庫訪問是數(shù)據(jù)的第一種介入的方式,這也是很多的廠商已經(jīng)存好的一種格式,所以這個格式會比較的干凈。第二種數(shù)據(jù)的格式是文件系統(tǒng)的這個讀寫,有多種方式可以讓你的讀寫變得非常的高效。第三種是硬件接入,比如標準的圖像抓取和實驗室儀器的數(shù)據(jù),還有一些數(shù)據(jù)采集卡,從硬件的角度來獲取這個數(shù)據(jù)。另外一個就是如果儀器做成比較標準的接口的話,也可以直接從你的儀器接口去抓取,通過一些專用的協(xié)議直接去抓數(shù)據(jù)。所以,數(shù)據(jù)來源上基本上來說覆蓋了絕大部分的這個數(shù)據(jù)來源。
第二個步驟就是有關(guān)這個數(shù)據(jù)的一些組織跟基礎(chǔ)的一些分析,基本上通過一些統(tǒng)計的手段。MathWorks有一些統(tǒng)計機器學習工具箱,這是一個非常傳統(tǒng)的工具箱,里面嵌了大量的統(tǒng)計相關(guān)的函數(shù),也有一些可視化的面板,可以直接給你快速地做一些快速的數(shù)據(jù)分析,你可以從數(shù)據(jù)得到你想得到的這么一些基礎(chǔ)的數(shù)據(jù)的理解。那可視化當然是MathWorks一個傳統(tǒng)的產(chǎn)業(yè),這是MATLAB上面基本上很多人之所以使用MATLAB的一個最原始的出發(fā)的一個點,其實也是為了可視化。
第三步就是數(shù)據(jù)處理,比如去掉一些沒用的數(shù)據(jù),數(shù)據(jù)濾波等前期處理。最后就是從數(shù)據(jù)的學習角度來說,在統(tǒng)計工具箱里面擴展。當然還有專門的做神經(jīng)網(wǎng)絡(luò)跟深度學習的一個工具箱,所以你可以從你的前期的數(shù)據(jù)結(jié)果里很快、快速地切入到MATLAB的核心學習之中去。
最后一個流程是發(fā)布,MathWorks現(xiàn)在在MATLAB中可以直接去產(chǎn)生對應的報告文件,這是可以自動產(chǎn)生的一個分析報告。你可以去把你的程序直接打包成APP,這個做法基本上你可以把你MATLAB寫的東西直接把它做成APP。那你也可以把它做一些,切入到信用的系統(tǒng)之中去,也可以去產(chǎn)生對應的這個C代碼或者是可以打包成JAVA的代碼跟多端的部署的代碼。所以,這個基本上就一鍵式的操作,你不需要特別專業(yè)的背景。
實際上MATLAB現(xiàn)在覆蓋從最主的數(shù)據(jù)獲取、數(shù)據(jù)的組織基礎(chǔ)的這個探索和分析。那通過這些高端的機器學習的方法進行大數(shù)據(jù)的一些學習,最后搭成模型之后,你可以快速地把它嵌入到生產(chǎn)環(huán)境當中去。
除了這個完整的流程外,MATLAB針對不同的數(shù)據(jù)規(guī)模和數(shù)據(jù)類型,也提供了不同的大數(shù)據(jù)分析技術(shù)。陳建平介紹說:“MATLAB針對不同的數(shù)據(jù)規(guī)模其實有不同的處理的專門針對這些問題的這個處理手段,我們把這個數(shù)據(jù)劃分成兩類,一類叫可以分割的,一類是不可以分割的??梢苑指畹木头指畛珊唵蔚臄?shù)據(jù),然后用一種辦法來處理。不能簡單分割的,又把它分成兩類,第一類問題是我們可以把它夾雜在內(nèi)存中間進行操作的這個數(shù)據(jù),或者放在集群的內(nèi)存總和中進行操作。另外一個,甚至你集群的內(nèi)存都沒法處理的條件下,你可以用MapReduce的手段來處理。所以,從這個數(shù)據(jù)的復雜度角度來說,我們提供不同的數(shù)據(jù)類型,我們都進行了支持?!?/span>
第一類問題現(xiàn)在是有一套自動化的方法來做的,比如專門的并行化的方法,叫Pafor,這個數(shù)據(jù)很簡單,就是自動并行化的一種手段。
第二類問題非常復雜,它涉及到超算的范圍,所以現(xiàn)在這個MATLAB也能做。只是這個數(shù)據(jù)的類型特別復雜,單機無法處理,但是集群可以處理,你不需要做特別復雜的規(guī)模的編程,對我們來說很簡單。
所以,你只要做的事情就是我們調(diào)用對應的這個函數(shù)就可以了,所以正常的就跟單機做這個數(shù)據(jù)處理的手段是差不多的。所以很容易擴展到這個集群之中去。我們對應的工具箱你可以使用一些,我們叫豐富的計算的Model Based System的這么一套工具去做這個事情,可以嵌入到你的集群中做這個事兒。
第三類數(shù)據(jù)其實就是大家現(xiàn)在最關(guān)注的數(shù)據(jù),數(shù)據(jù)大到一定的規(guī)模,必須通過MapReduce這種方式來做。我們也提供了MapReduce的一個實現(xiàn),在這里面你需要提供兩個東西,第一個datastore,你的數(shù)據(jù)是什么東西?第二個,你需要提供MAP函數(shù),就是把一個數(shù)據(jù)從一個點,一個數(shù)據(jù)變化到另外一個點上。所以,你提供一個MAP函數(shù),再提供一個,后面這個提供一個reduce函數(shù),通過調(diào)用reduce,完了。你不需要額外的早晚地去使,對你來說,你只要寫一個MAP函數(shù),寫一個reduce函數(shù),然后放到MapReduce函數(shù)的里面,你就可以得到一個MapReduce的計算機了。你運行這個程序,做好MapReduce它就可以做這個事情了。所以,這是很容易的跟Hadoop的環(huán)境進行集成到一起的一種方式,你甚至可以看一眼這個MapReduce的這個數(shù)據(jù)。
最后,怎么把這個問題部署到這個Hadoop環(huán)境中去,部署非常簡單,MATLAB有一套自動的部署的工具,有個按鼠標點擊的自動部署工具,你可以看一眼大概怎么做的。比如說你要做一個Hadoop的這個應用的話,你要MATLAB有很多叫app的東西,就是很多應用程序。你要做的事情是你打開這個應用程序,把你的函數(shù),把這個MAP函數(shù)把它填進去,把reduce函數(shù)填進去,一點,你就會產(chǎn)生一個EXE的程序。所以,你不需要知道怎么去打包,對你來說就是打開程序,把MAP函數(shù)放進去,或reduce函數(shù)放進去,一點打包,你會出來一個EXE的程序。
所以,這就是個發(fā)揮的過程,那這個EXE的程序當然MATLAB也支持可以做EXE,也可以做,你可以在里面設(shè)置你不同的目標,EXE是一種手段。那你當然可以是做成一個JAVA的包,你可以把這個程序打成一個JAVA的包,可能被其他程序二次開發(fā),你可以做成個dotnet的包,也可以被用作二次開發(fā)。因為基本上這個流程就是非常地簡單,你需要寫好你的MATLAB的程序,打開這個部署工具,然后把你的函數(shù)放到里面,點打包就會產(chǎn)生一個EXE程序。產(chǎn)生了EXE程序是我們這個打包發(fā)布出去,打包發(fā)布之后的程序,這完全可以脫離MATLAB環(huán)境來運行,你可以脫離MATLAB環(huán)境,你不再需要運行的機器上安裝MATLAB。然后這個時候它會把運算的過程中,把這個計算的要求自動發(fā)到你指定的環(huán)境之中去,進行計算,算完了之后把結(jié)果自動取回來,所以這個都是自動化的,所以你不需要知道很多如何進行數(shù)據(jù)收發(fā),也不需要知道怎么去跟Hadoop環(huán)境進行交互。你要做的事情就是管好你的鼠標就OK了。這是有關(guān)部署的情況。
不管從大數(shù)據(jù)的整體流程上還是從數(shù)據(jù)分析和處理的相關(guān)技術(shù)方面,MATLAB的相關(guān)工具為用戶提供了方便的工具和開發(fā)環(huán)境,用戶不用去過多關(guān)注算法與函數(shù)的問題,從而節(jié)省了很多時間,讓大數(shù)據(jù)分析與應用開發(fā)成為一件簡單輕松的問題。