大資料和雲端計算註定“糾纏不清”?

蘇寧影片雲發表於2018-12-24

大資料和雲端計算註定“糾纏不清”?

寫在前面

本文作者憑藉其天馬行空的腦回路,用最深入淺出,清晰化的文字邏輯,講明白了雲端計算、大資料和人工智慧三者之間的關係。

故事裡面三個角色:

兼具經濟效益與情懷的雲端計算;努力把資訊變為智慧的大資料;模擬人類大腦工作方式,學會推理的人工智慧。

三個從出身開始就註定“量子糾纏”的夥伴,他們之間相親相愛,相輔相成的跌宕故事,獻給非專業技術背景,但是需要了解行業的你。

  • 來源:劉超的通俗雲端計算(popsuper1982) 劉超,《Lucene應用開發揭秘》作者

(接上)

二、雲端計算不光管資源,也要管應用

大資料和雲端計算註定“糾纏不清”?

有了IaaS,實現了資源層面的彈性就夠了嗎?顯然不是,還有應用層面的彈性。

這裡舉個例子:比如說實現一個電商的應用,平時十臺機器就夠了,雙十一需要一百臺。你可能覺得很好辦啊,有了IaaS,新建立九十臺機器就可以了啊。但90臺機器建立出來是空的,電商應用並沒有放上去,只能讓公司的運維人員一臺一臺的弄,需要很長時間才能安裝好的。

雖然資源層面實現了彈性,但沒有應用層的彈性,依然靈活性是不夠的。有沒有方法解決這個問題呢?

人們在IaaS平臺之上又加了一層,用於管理資源以上的應用彈性的問題,這一層通常稱為PaaS(Platform As A Service)。這一層往往比較難理解,大致分兩部分:一部分筆者稱為“你自己的應用自動安裝”,一部分筆者稱為“通用的應用不用安裝”。

  • 自己的應用自動安裝比如電商應用是你自己開發的,除了你自己,其他人是不知道怎麼安裝的。像電商應用,安裝時需要配置支付寶或者微信的賬號,才能使別人在你的電商上買東西時,付的錢是打到你的賬戶裡面的,除了你,誰也不知道。所以安裝的過程平臺幫不了忙,但能夠幫你做得自動化,你需要做一些工作,將自己的配置資訊融入到自動化的安裝過程中方可。比如上面的例子,雙十一新建立出來的90臺機器是空的,如果能夠提供一個工具,能夠自動在這新的90臺機器上將電商應用安裝好,就能夠實現應用層面的真正彈性。例如Puppet、Chef、Ansible、Cloud Foundary都可以幹這件事情,最新的容器技術Docker能更好的幹這件事情。

  • 通用的應用不用安裝所謂通用的應用,一般指一些複雜性比較高,但大家都在用的,例如資料庫。幾乎所有的應用都會用資料庫,但資料庫軟體是標準的,雖然安裝和維護比較複雜,但無論誰安裝都是一樣。這樣的應用可以變成標準的PaaS層的應用放在雲平臺的介面上。當使用者需要一個資料庫時,一點就出來了,使用者就可以直接用了。有人問,既然誰安裝都一個樣,那我自己來好了,不需要花錢在雲平臺上買。當然不是,資料庫是一個非常難的東西,光Oracle這家公司,靠資料庫就能賺這麼多錢。買Oracle也是要花很多錢的。

然而大多數雲平臺會提供MySQL這樣的開源資料庫,又是開源,錢不需要花這麼多了。但維護這個資料庫,卻需要專門招一個很大的團隊,如果這個資料庫能夠最佳化到能夠支撐雙十一,也不是一年兩年能夠搞定的。

比如您是一個做單車的,當然沒必要招一個非常大的資料庫團隊來幹這件事情,成本太高了,應該交給雲平臺來做這件事情,專業的事情專業的人來做,雲平臺專門養了幾百人維護這套系統,您只要專注於您的單車應用就可以了。

要麼是自動部署,要麼是不用部署,總的來說就是應用層你也要少操心,這就是PaaS層的重要作用。

大資料和雲端計算註定“糾纏不清”?

雖說指令碼的方式能夠解決自己的應用的部署問題,然而不同的環境千差萬別,一個指令碼往往在一個環境上執行正確,到另一個環境就不正確了。

而容器是能更好地解決這個問題。

大資料和雲端計算註定“糾纏不清”?

容器是 Container,Container另一個意思是集裝箱,其實容器的思想就是要變成軟體交付的集裝箱。集裝箱的特點:一是封裝,二是標準。

大資料和雲端計算註定“糾纏不清”?

在沒有集裝箱的時代,假設將貨物從 A運到 B,中間要經過三個碼頭、換三次船。每次都要將貨物卸下船來,擺得七零八落,然後搬上船重新整齊擺好。因此在沒有集裝箱時,每次換船,船員們都要在岸上待幾天才能走。

大資料和雲端計算註定“糾纏不清”?

有了集裝箱以後,所有的貨物都打包在一起了,並且集裝箱的尺寸全部一致,所以每次換船時,一個箱子整體搬過去就行了,小時級別就能完成,船員再也不用上岸長時間耽擱了。

這是集裝箱“封裝”、“標準”兩大特點在生活中的應用。

大資料和雲端計算註定“糾纏不清”?

那麼容器如何對應用打包呢?還是要學習集裝箱。首先要有個封閉的環境,將貨物封裝起來,讓貨物之間互不干擾、互相隔離,這樣裝貨卸貨才方便。好在 Ubuntu中的LXC技術早就能做到這一點。

封閉的環境主要使用了兩種技術,一種是看起來是隔離的技術,稱為 Namespace,也即每個 Namespace中的應用看到的是不同的 IP地址、使用者空間、程號等。另一種是用起來是隔離的技術,稱為 Cgroups,也即明明整臺機器有很多的 CPU、記憶體,而一個應用只能用其中的一部分。

所謂的映象,就是將你焊好集裝箱的那一刻,將集裝箱的狀態儲存下來,就像孫悟空說:“定”,集裝箱裡面就定在了那一刻,然後將這一刻的狀態儲存成一系列檔案。這些檔案的格式是標準的,誰看到這些檔案都能還原當時定住的那個時刻。將映象還原成執行時的過程(就是讀取映象檔案,還原那個時刻的過程)就是容器執行的過程。

有了容器,使得 PaaS層對於使用者自身應用的自動部署變得快速而優雅。

三、大資料擁抱雲端計算

在PaaS層中一個複雜的通用應用就是大資料平臺。大資料是如何一步一步融入雲端計算的呢?

1資料不大也包含智慧

一開始這個大資料並不大。原來才有多少資料?現在大家都去看電子書,上網看新聞了,在我們80後小時候,資訊量沒有那麼大,也就看看書、看看報,一個星期的報紙加起來才有多少字?如果你不在一個大城市,一個普通的學校的圖書館加起來也沒幾個書架,是後來隨著資訊化的到來,資訊才會越來越多。

首先我們來看一下大資料裡面的資料,就分三種型別,一種叫結構化的資料,一種叫非結構化的資料,還有一種叫半結構化的資料。

  • 結構化的資料即有固定格式和有限長度的資料。例如填的表格就是結構化的資料,國籍:中華人民共和國,民族:漢,性別:男,這都叫結構化資料。

  • 非結構化的資料現在非結構化的資料越來越多,就是不定長、無固定格式的資料,例如網頁,有時候非常長,有時候幾句話就沒了;例如語音,影片都是非結構化的資料。

  • 半結構化資料是一些XML或者HTML的格式的,不從事技術的可能不瞭解,但也沒有關係。

其實資料本身不是有用的,必須要經過一定的處理。例如你每天跑步帶個手環收集的也是資料,網上這麼多網頁也是資料,我們稱為Data。資料本身沒有什麼用處,但資料裡面包含一個很重要的東西,叫做資訊(Information)。

資料十分雜亂,經過梳理和清洗,才能夠稱為資訊。資訊會包含很多規律,我們需要從資訊中將規律總結出來,稱為知識(Knowledge),而知識改變命運。資訊是很多的,但有人看到了資訊相當於白看,但有人就從資訊中看到了電商的未來,有人看到了直播的未來,所以人家就牛了。如果你沒有從資訊中提取出知識,天天看朋友圈也只能在網際網路滾滾大潮中做個看客。

有了知識,然後利用這些知識去應用於實戰,有的人會做得非常好,這個東西叫做智慧(Intelligence)。有知識並不一定有智慧,例如好多學者很有知識,已經發生的事情可以從各個角度分析得頭頭是道,但一到實幹就歇菜,並不能轉化成為智慧。而很多的創業家之所以偉大,就是透過獲得的知識應用於實踐,最後做了很大的生意。

所以資料的應用分這四個步驟:資料、資訊、知識、智慧

最終的階段是很多商家都想要的。你看我收集了這麼多的資料,能不能基於這些資料來幫我做下一步的決策,改善我的產品。例如讓使用者看影片的時候旁邊彈出廣告,正好是他想買的東西;再如讓使用者聽音樂時,另外推薦一些他非常想聽的其他音樂。

使用者在我的應用或者網站上隨便點點滑鼠,輸入文字對我來說都是資料,我就是要將其中某些東西提取出來、指導實踐、形成智慧,讓使用者陷入到我的應用裡面不可自拔,上了我的網就不想離開,手不停地點、不停地買。

很多人說雙十一我都想斷網了,我老婆在上面不斷地買買買,買了A又推薦B,老婆大人說,“哎呀,B也是我喜歡的啊,老公我要買”。你說這個程式怎麼這麼牛,這麼有智慧,比我還了解我老婆,這件事情是怎麼做到的呢?

大資料和雲端計算註定“糾纏不清”?

2資料如何昇華為智慧

資料的處理分幾個步驟,完成了才最後會有智慧。

第一個步驟叫資料的收集。首先得有資料,資料的收集有兩個方式:

  • 第一個方式是拿,專業點的說法叫抓取或者爬取。例如搜尋引擎就是這麼做的:它把網上的所有的資訊都下載到它的資料中心,然後你一搜才能搜出來。比如你去搜尋的時候,結果會是一個列表,這個列表為什麼會在搜尋引擎的公司裡面?就是因為他把資料都拿下來了,但是你一點連結,點出來這個網站就不在搜尋引擎它們公司了。比如說新浪有個新聞,你拿百度搜出來,你不點的時候,那一頁在百度資料中心,一點出來的網頁就是在新浪的資料中心了。

  • 第二個方式是推送,有很多終端可以幫我收集資料。比如說小米手環,可以將你每天跑步的資料,心跳的資料,睡眠的資料都上傳到資料中心裡面。

第二個步驟是資料的傳輸。一般會透過佇列方式進行,因為資料量實在是太大了,資料必須經過處理才會有用。可系統處理不過來,只好排好隊,慢慢處理。

第三個步驟是資料的儲存。現在資料就是金錢,掌握了資料就相當於掌握了錢。要不然網站怎麼知道你想買什麼?就是因為它有你歷史的交易的資料,這個資訊可不能給別人,十分寶貴,所以需要儲存下來。

第四個步驟是資料的處理和分析。上面儲存的資料是原始資料,原始資料多是雜亂無章的,有很多垃圾資料在裡面,因而需要清洗和過濾,得到一些高質量的資料。對於高質量的資料,就可以進行分析,從而對資料進行分類,或者發現資料之間的相互關係,得到知識。

比如盛傳的沃爾瑪超市的啤酒和尿布的故事,就是透過對人們的購買資料進行分析,發現了男人一般買尿布的時候,會同時購買啤酒,這樣就發現了啤酒和尿布之間的相互關係,獲得知識,然後應用到實踐中,將啤酒和尿布的櫃檯弄的很近,就獲得了智慧。

第五個步驟是對於資料的檢索和挖掘。檢索就是搜尋,所謂外事不決問Google,內事不決問百度。內外兩大搜尋引擎都是將分析後的資料放入搜尋引擎,因此人們想尋找資訊的時候,一搜就有了。

另外就是挖掘,僅僅搜尋出來已經不能滿足人們的要求了,還需要從資訊中挖掘出相互的關係。比如財經搜尋,當搜尋某個公司股票的時候,該公司的高管是不是也應該被挖掘出來呢?如果僅僅搜尋出這個公司的股票發現漲的特別好,於是你就去買了,其實其高管發了一個宣告,對股票十分不利,第二天就跌了,這不坑害廣大股民麼?所以透過各種演算法挖掘資料中的關係,形成知識庫,十分重要。

大資料和雲端計算註定“糾纏不清”?


大資料和雲端計算註定“糾纏不清”?


3大資料時代,眾人拾柴火焰高

當資料量很小時,很少的幾臺機器就能解決。慢慢的,當資料量越來越大,最牛的伺服器都解決不了問題時,怎麼辦呢?這時就要聚合多臺機器的力量,大家齊心協力一起把這個事搞定,眾人拾柴火焰高。

對於資料的收集:就IoT來講,外面部署這成千上萬的檢測裝置,將大量的溫度、溼度、監控、電力等資料統統收集上來;就網際網路網頁的搜尋引擎來講,需要將整個網際網路所有的網頁都下載下來。這顯然一臺機器做不到,需要多臺機器組成網路爬蟲系統,每臺機器下載一部分,同時工作,才能在有限的時間內,將海量的網頁下載完畢。

大資料和雲端計算註定“糾纏不清”?

對於資料的傳輸:一個記憶體裡面的佇列肯定會被大量的資料擠爆掉,於是就產生了基於硬碟的分散式佇列,這樣佇列可以多臺機器同時傳輸,隨你資料量多大,只要我的佇列足夠多,管道足夠粗,就能夠撐得住。

大資料和雲端計算註定“糾纏不清”?

對於資料的儲存:一臺機器的檔案系統肯定是放不下的,所以需要一個很大的分散式檔案系統來做這件事情,把多臺機器的硬碟打成一塊大的檔案系統。

大資料和雲端計算註定“糾纏不清”?

對於資料的分析:可能需要對大量的資料做分解、統計、彙總,一臺機器肯定搞不定,處理到猴年馬月也分析不完。於是就有分散式計算的方法,將大量的資料分成小份,每臺機器處理一小份,多臺機器並行處理,很快就能算完。例如著名的Terasort對1個TB的資料排序,相當於1000G,如果單機處理,怎麼也要幾個小時,但並行處理209秒就完成了。

大資料和雲端計算註定“糾纏不清”?


大資料和雲端計算註定“糾纏不清”?

大資料和雲端計算註定“糾纏不清”?

所以說什麼叫做大資料?說白了就是一臺機器幹不完,大家一起幹。可是隨著資料量越來越大,很多不大的公司都需要處理相當多的資料,這些小公司沒有這麼多機器可怎麼辦呢?

4大資料需要雲端計算,雲端計算需要大資料

說到這裡,大家想起雲端計算了吧。當想要幹這些活時,需要很多的機器一塊做,真的是想什麼時候要就什麼時候要,想要多少就要多少。

例如大資料分析公司的財務情況,可能一週分析一次,如果要把這一百臺機器或者一千臺機器都在那放著,一週用一次非常浪費。那能不能需要計算的時候,把這一千臺機器拿出來;不算的時候,讓這一千臺機器去幹別的事情?

誰能做這個事兒呢?只有雲端計算,可以為大資料的運算提供資源層的靈活性。而云計算也會部署大資料放到它的PaaS平臺上,作為一個非常非常重要的通用應用。因為大資料平臺能夠使得多臺機器一起幹一個事兒,這個東西不是一般人能開發出來的,也不是一般人玩得轉的,怎麼也得僱個幾十上百號人才能把這個玩起來。

所以說就像資料庫一樣,其實還是需要有一幫專業的人來玩這個東西。現在公有云上基本上都會有大資料的解決方案了,一個小公司需要大資料平臺的時候,不需要採購一千臺機器,只要到公有云上一點,這一千臺機器都出來了,並且上面已經部署好了的大資料平臺,只要把資料放進去算就可以了。

雲端計算需要大資料,大資料需要雲端計算,二者就這樣結合了。

(未完待續......)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559352/viewspace-2286234/,如需轉載,請註明出處,否則將追究法律責任。

相關文章