物聯(lián)傳媒 旗下網站
登錄 注冊

關于大數(shù)據(jù)平臺的思考

作者:張夏天
來源:TalkingData
日期:2017-11-20 14:55:05
摘要:“行業(yè)到底要什么樣的數(shù)據(jù)平臺、到底需要什么樣的功能、我們要根據(jù)什么原則去設計?”對于這些問題,TalkingData首席數(shù)據(jù)科學家張夏天有一些思考。

圖片來自“123rf.com.cn”

  “在大數(shù)據(jù)行業(yè)干了這么些年,我相信大家都有一種在泥潭中掙扎的感覺。要搞清楚到底有哪些數(shù)據(jù)、數(shù)據(jù)的結構、數(shù)據(jù)的來源、數(shù)據(jù)的意義、數(shù)據(jù)的上下文、數(shù)據(jù)的質量、數(shù)據(jù)可能有哪些局限性等等,都是非常麻煩的事情。在大多數(shù)情況下我們會發(fā)現(xiàn)數(shù)據(jù)的元數(shù)據(jù)缺失,數(shù)據(jù)的說明文檔不存在或者文檔有用的內容很少。為了某一個新任務要把數(shù)據(jù)搞清楚,我們可能需要咨詢很多不同的人,每個人對數(shù)據(jù)的說法都不完全一致,當所有相關方都溝通了幾次后,我們才大致把數(shù)據(jù)的概貌搞清楚。而這僅僅是完成了第一步,后面的數(shù)據(jù)處理、數(shù)據(jù)探索、特征工程、分析建模、生產應用還有無數(shù)的迷宮的需要探索。

  自然,面對這些問題,我們會想能不能有一個平臺把數(shù)據(jù)以及數(shù)據(jù)利用的各個環(huán)節(jié)都有效管起來,讓我們可以很輕松的把數(shù)據(jù)的來龍去脈搞清楚,借助各種強大的功能非常方便的讓我們把數(shù)據(jù)處理、數(shù)據(jù)探索、特征工程、分析建模乃至生產應用都輕松的解決??傊?,我們希望這個平臺能把一切都管起來,把一切關于數(shù)據(jù)、項目和工程的信息都管起來。使用者只需要在這個平臺上就能獲得關于數(shù)據(jù)的一切信息,并能夠獲得各種運用數(shù)據(jù)的能力。這可以說是數(shù)據(jù)平臺的終極理想。

  但是最近半年來,我對這個終極理想產生了比較大的疑惑,感覺追求這一目標可能是“理性的自負。”

  復雜與失控的現(xiàn)實

  復雜的大數(shù)據(jù):

  “首先,大數(shù)據(jù)本身就是極其復雜的,不僅在于規(guī)模、維度、類型,也在于其各種變化和各種不完美。而且大數(shù)據(jù)還在日復一日的變得更大、更復雜、更快,要把所有數(shù)據(jù)以及所有數(shù)據(jù)的所有方面全部都搞清楚,恐怕是非常困難的,很可能已經是人力不可及的事情。

  可能必須得承認,我們對大數(shù)據(jù)的控制能力是有限的,大數(shù)據(jù)很大程度上對于人類來說就是失控的。很直接的一個例子就是“數(shù)據(jù)湖”,顯然“數(shù)據(jù)湖”失去了傳統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)倉庫那種井井有條的規(guī)范美。“數(shù)據(jù)湖”基本上就是把所有可以收集到的數(shù)據(jù)堆放在一起,并沒有非常規(guī)范的管理。并不是人們不想管理,而是事實上是做不到的,只能向現(xiàn)實妥協(xié)。當然,這種妥協(xié)很大程度上是可能是自發(fā)的而不是自覺的。

  可能很多人也認為“數(shù)據(jù)湖”只是一種過渡,我們還在等待更強大的數(shù)據(jù)管理和數(shù)據(jù)治理的技術、工具、平臺和方法論的出現(xiàn)。但是,人的智力和精力終歸是有限的,如果我們期望能為所有數(shù)據(jù)都建立非常良好的文檔和譜系來進行管理,并且能夠得到及時的維護更新,需要投入的人力可能是無法承受的。而且如何保證這些管理的質量?只做形式審查是比較容易的,但是無法正真保證管理文檔的內容質量,但是實質審查實際上又是不可能做到的。因此,很可能我們根本沒有辦法對大數(shù)據(jù)建立起傳統(tǒng)意義中的管理體系。”

  復雜的技術:

  “其次,技術上的問題也是非常復雜的。技術問題的復雜性主要來自于各種技術本身的不完備性,任何技術都只能解決某一類型的問題。但是一個通用的數(shù)據(jù)平臺,至少需要考慮能解決大部分的常見需求,這就意味著必須要將不同的技術整合到一起。多種技術的整合是非常考驗系統(tǒng)工程能力的,這是要過的第一關。

  但更大困難在于技術的快速發(fā)展,新技術、新開源項目不斷涌現(xiàn),既有技術和項目有些持續(xù)發(fā)展、不斷更新,有的逐步衰退。這種情況下,如何能夠保證平臺本身在技術上能跟上時代是個非常困難的問題。一個系統(tǒng)的結構一旦確定,就會形成路徑依賴,隨著時間的推移,會變得越來越難以變動,越來越難以將新技術整合進來。

  另外,即使技術本身不變化、功能不變化,但是處理的數(shù)據(jù)規(guī)模不同、質量不同、具體的資源規(guī)模和配置都會有很大的不同。處理大數(shù)據(jù)難點在于如何用有限的資源和能力來處理規(guī)模巨大的問題。同樣的處理邏輯,但是數(shù)據(jù)規(guī)模的不同,有效的處理方法可能就有很不同。而這是預設功能難以全面考慮清楚的。

  綜上,大數(shù)據(jù)平臺面對的技術問題也是開放性的,或者說也是失控的,我們執(zhí)著于技術和功能層面的大一統(tǒng)也很可能是“理性的自負”。”

  大數(shù)據(jù)平臺設計哲學的重構

  面對大數(shù)據(jù),在數(shù)據(jù)和技術都失控的情況下,考慮如何強加對數(shù)據(jù)的控制和提高駕馭數(shù)據(jù)的能力都很可能是徒勞的。我們需要重新思考大數(shù)據(jù)平臺的設計哲學,而不是在傳統(tǒng)大型軟件設計的哲學下做加強和修補。對于此,TalkingData首席數(shù)據(jù)科學家張夏天有一些思考。

  擁抱不完美:

  “首先,我們必須承認我們的無知和無能,放棄去構建一個全知全能的平臺的理想。我們需要思考大數(shù)據(jù)平臺要管什么,更重要的是不管什么。我們需要在該放手的地方就放手,我們需要接受甚至是擁抱某種程度的失控。我們很可能就沒有辦法把所有數(shù)據(jù)都非常好的管起來,只需要通過平臺,新手就很容易把數(shù)據(jù)情況搞清楚。我們很可能也無法提供完全統(tǒng)一設計風格、交互邏輯的功能界面。我們必須容忍一定的混亂,從而擁抱無限的可能和變化。”

  經驗與價值的沉淀:

  “還是先從數(shù)據(jù)來看,了解數(shù)據(jù)最便捷的途徑就是找到最了解這個數(shù)據(jù)的人進行直接溝通。最了解數(shù)據(jù)的人可能是數(shù)據(jù)的生產者,也可能是數(shù)據(jù)的處理者,甚至是消費者。很多情況下完全搞清楚,可能需要與所有相關方都進行溝通后才比較清楚。平臺的設計到底是要消除這種直接溝通,還是讓這種溝通更有效率呢?

  因為全面文檔化是不現(xiàn)實的,那么我們能夠考慮的是讓目前的方式效率更高。數(shù)據(jù)平臺能夠承擔的一個功能是更有效的把數(shù)據(jù)的需求方和了解數(shù)據(jù)的人連接起來。原來我想找一個了解某個數(shù)據(jù)的人,都可能需要問好幾個人,而要了解清楚一個數(shù)據(jù)又可能需要找到好幾個人,這就需要不斷在線下反復的溝通。如果平臺能夠告訴我哪些人對這些數(shù)據(jù)最了解,這就可以提升相當多的效率。

  當一個人一位對某個數(shù)據(jù)最了解,而被人問了很多次問到很煩的時候,他可以把自己對這個數(shù)據(jù)的總結的文檔和FQA放到平臺上。對這個數(shù)據(jù)關心的人也可以寫評論談自己對數(shù)據(jù)的理解和遇到的坑。當一個數(shù)據(jù)被使用的越多,那么平臺上就可以沉淀出越多關于這個數(shù)據(jù)的信息,包括最熟悉的人和各種對數(shù)據(jù)的描述和解讀,后來的使用者就越容易掌握這個數(shù)據(jù)。

  我們可以想象,一個數(shù)據(jù)平臺,經過一段時間的沉淀,有些數(shù)據(jù)的相關文檔會變得十分豐富,而有些數(shù)據(jù)根本無人問津。當我們不追求全面的控制后,最有價值的信息可能就自動涌現(xiàn)了。當然,當我們要使用一些鮮有人問津的數(shù)據(jù)時,就需要經歷一個比較痛苦的過程。但是只要平臺能把這個過程積累到的經驗沉淀下來,就是有價值的。”

  從標準化到社區(qū)化:

  “利用大數(shù)據(jù)是需要探索精神的,大數(shù)據(jù)平臺不應該是一條機械的流水線,把使用者變成一個個沒有聯(lián)系的隨時可以替換掉的零部件。因為我們不可能做成真正構建這樣有效率的流水線。同時,我們幾乎無法用一套客觀的量化指標來衡量對數(shù)據(jù)的利用效率,我們必須寄希望于人的主動精神。大數(shù)據(jù)平臺的設計哲學應該以人為中心,尊重人的價值,激勵人的探索和創(chuàng)新精神,讓對數(shù)據(jù)有激情的人能夠涌現(xiàn)出來,產生更大的聲音,同時鼓勵和便利人與人之間的溝通,從而提高總體的效率??傊脚_設計思想應該從標準化轉為社區(qū)化。”

  彈性與開放:

  “從技術上來看,我們需要盡可能的適應各種不同的功能和性能需求以及未來可能出現(xiàn)的技術演進。為了解決這個問題,我們需要的不是一個結構復雜包羅萬象的技術架構,因為越復雜的系統(tǒng)就越脆弱,就越難以進化。 我們也不能綁定核心計算引擎就是Spark或者某幾種特定技術,否則這就不是一個能力全面的數(shù)據(jù)平臺。

  很多為自有業(yè)務設計的數(shù)據(jù)平臺是可以考慮業(yè)務特性來進行特化的。但是我們作為企業(yè)服務的提供商,需要考慮的是足夠的通用性和靈活性。我們在技術架構的設計哲學上,不應該執(zhí)著于提供多少強大的功能,而是應該專注于能夠提供多少可能性和可擴展性。我們永遠無法知道明天客戶會有什么新需求,也無法知道會有什么新技術出現(xiàn)。

  因此在技術架構上,應該以容器技術為基礎,實現(xiàn)彈性的資源管理,和對技術和功能的開放支持能力。在容器技術的支持下,可以做到不同計算資源的即開即用即回收,可以支持資源的動態(tài)智能調整。當一個任務需要Spark時就創(chuàng)建Spark集群,需要TensorFlow就創(chuàng)建TensorFlow集群,任務完成就可以把資源及時回收,任務過程中根據(jù)資源使用情況和任務完成要求,動態(tài)的增加或者減少資源。

  這種架構下,我們不是將各種技術能力整合封裝成各種固定功能提供給使用者將他們的工作傻瓜化,而是向使用者賦能為其開放各種技術能力以及資源能力去創(chuàng)造無限的可能性。這種架構下很難提供統(tǒng)一的界面設計風格、交互邏輯,很多工作也需要使用者開發(fā)完成。因為我們無法做到對所有的技術進行統(tǒng)一風格的封裝,而是把所有的技術直接暴露給了使用者,使用者必須自己使用這些技術來解決問題。當然這并不是說我們不需要做產品設計,只是產品設計的出發(fā)點不是創(chuàng)造一套獨立完美的體系,而是應該著力于讓使用者更容易的將不同的技術方便的組織起來,同時減少在不同技術之間切換的麻煩。

  同時,技術架構也需要考慮不同模塊之間如何組織的問題,這個問題遵循服務化的思路應該是已經形成共識,這里就不再過多展開。只是個人覺得在推行服務化之前,我們需要把服務接口的標準、服務總線的技術定下來。有好的服務基礎架構,新增、替換、升級不同的模塊就變得相對容易。從需求角度確定的功能和模塊不可能是百分之百正確的,后續(xù)一定會面臨著重構和調整的問題。只有做好面對一切變化的準備,才能更好的面對各種不確定性。”

  適應而不是約束:

  “最后,我想談談關于方法論的問題。產品設計方法論先行是對的,但是我們要深入思考什么才是有效的方法論。關于數(shù)據(jù)挖掘的方法論已經存在十幾年了(CRISP-DM),老實說我們在思考的數(shù)據(jù)科學的方法論并不會有本質性的改變。但我對這些方法論的感覺就是“如何把大象放進冰箱”,或者5步畫馬法。原則上都對,但是對實際工作的指導意義非常有限,因為魔鬼都在細節(jié)中。

  其實面對大數(shù)據(jù),不僅我們對數(shù)據(jù)和技術是失控的,實際上我們如何處理、應用數(shù)據(jù)的過程在很大程度上也是失控的。整個過程就像在走迷宮,工作步驟分形似的不斷展開。任何大的指導原則對于具體工作的指導意義就變得極為有限。

  正因為如此,產品設計應該考慮的是如何適應這種Ad-hoc的工作狀態(tài),而不是用一套流程把使用者束縛起來。我們可以提供一些機制便于使用者來梳理手頭的工作,但是盡可能不要去強制使用者遵守某種約束性很強的標準或者規(guī)范。為什么像NoteBook這樣設計如此簡單的工具能夠流行起來,很重要的一點就是給使用者足夠自由的工作界面來做任何想做的事情,而且即寫即得,便于隨時修改策略,同時文檔可以根據(jù)需要隨時插在代碼之中。正是這種無結構的扁平性,使得用戶可以按照最合適的路徑去完成自己的工作,而不是在被設計好的過程中掙扎。”

  總結

  “寫了這么多,其實核心想說的就是我們必須警惕“理性的自負”。我們首先必須承認理性的力量是有限的,我們不是無所不能的。面對著數(shù)據(jù)失控、技術失控和需求失控的問題,我們到底是要想盡一切辦法去控制,還是順應、包容甚至是欣賞這些失控。這是在我們智能數(shù)據(jù)平臺研發(fā)道路的起點上需要思考的問題。”

人物訪談