最近學習hadoop以及生態,順便看到了這篇文章,總結的很到位,轉載下。html
我今天要講這三個話題,一個是雲計算,一個大數據,一我的工智能,我爲何要講這三個東西呢?由於這三個東西如今很是很是的火,它們之間好像互相有關係,通常談雲計算的時候也會提到大數據,談人工智能的時候也會提大數據,談人工智能的時候也會提雲計算。因此說感受他們又相輔相成不可分割,若是是非技術的人員來說可能比較難理解說這三個之間的相互關係,因此有必要解釋一下。程序員
1、雲計算最初是實現資源管理的靈活性算法
咱們首先來講雲計算,雲計算最初的目標是對資源的管理,管理的主要是計算資源,網絡資源,存儲資源三個方面。sql
1.1 管數據中心就像配電腦數據庫
什麼叫計算,網絡,存儲資源呢?就說你要買檯筆記本電腦吧,你是否是要關心這臺電腦什麼樣的CPU啊?多大的內存啊?這兩個咱們稱爲計算資源。編程
這臺電腦要能上網吧,須要有個網口能夠插網線,或者有無線網卡能夠鏈接咱們家的路由器,您家也須要到運營商好比聯通,移動,電信開通一個網絡,好比100M的帶寬,而後會有師傅弄一根網線到您家來,師傅可能會幫您將您的路由器和他們公司的網絡鏈接配置好,這樣您家的全部的電腦,手機,平板就均可以經過您的路由器上網了。這就是網絡。windows
您可能還會問硬盤多大啊?原來硬盤都很小,10G之類的,後來500G,1T,2T的硬盤也不新鮮了。(1T是1024G),這就是存儲。瀏覽器
對於一臺電腦是這個樣子的,對於一個數據中心也是一樣的。想象你有一個很是很是大的機房,裏面堆了不少的服務器,這些服務器也是有CPU,內存,硬盤的,也是經過相似路由器的設備上網的。這個時候的一個問題就是,運營數據中心的人是怎麼把這些設備統一的管理起來的呢?服務器
1.2 靈活就是想啥時要都有,想要多少都行微信
管理的目標就是要達到兩個方面的靈活性。哪兩個方面呢?好比有我的須要一臺很小很小的電腦,只有一個CPU,1G內存,10G的硬盤,一兆的帶寬,你能給他嗎?像這種這麼小規格的電腦,如今隨便一個筆記本電腦都比這個配置強了,家裏隨便拉一個寬帶都要100M。然而若是去一個雲計算的平臺上,他要想要這個資源的時候,只要一點就有了。
因此說它就能達到兩個方面靈活性。
第一個方面就是想何時要就何時要,好比須要的時候一點就出來了,這個叫作時間靈活性。
第二個方面就是想要多少呢就有多少,好比須要一個很小很小的電腦,能夠知足,好比須要一個特別大的空間,以雲盤爲例,彷佛雲盤給每一個人分配的空間動不動就就很大很大,隨時上傳隨時有空間,永遠用不完,這個叫作空間靈活性。
空間靈活性和時間靈活性,也即咱們常說的雲計算的彈性。
爲了解決這個彈性的問題,經歷了漫長時間的發展。
1.3 物理設備不靈活
首先第一個階段就是物理機,或者說物理設備時期。這個時期至關於客戶須要一臺電腦,咱們就買一臺放在數據中內心。物理設備固然是愈來愈牛,例如服務器,內存動不動就是百G內存,例如網絡設備,一個端口的帶寬就能有幾十G甚至上百G,例如存儲,在數據中心至少是PB級別的(一個P是1024個T,一個T是1024個G)。
然而物理設備不能作到很好的靈活性。首先它不可以達到想何時要就何時要、好比買臺服務器,哪怕買個電腦,都有采購的時間。忽然用戶告訴某個雲廠商,說想要開臺電腦,若是使用物理服務器,當時去採購啊就很難,若是說供應商啊關係通常,可能採購一個月,供應商關係好的話也須要一個星期。用戶等了一個星期後,這時候電腦纔到位,用戶還要登陸上去開始慢慢部署本身的應用,時間靈活性很是差。第二是空間靈活性也不行,例如上述的用戶,要一個很小很小的電腦,如今哪還有這麼小型號的電腦啊。不能爲了知足用戶只要一個G的內存是80G硬盤的,就去買一個這麼小的機器。可是若是買一個大的呢,由於電腦大,就向用戶多收錢,用戶說他只用這麼小的一點,若是讓用戶多付錢就很冤。
1.4 虛擬化靈活多了
有人就想辦法了。第一個辦法就是虛擬化。用戶不是隻要一個很小的電腦麼?數據中心的物理設備都很強大,我能夠從物理的CPU,內存,硬盤中虛擬出一小塊來給客戶,同時也能夠虛擬出一小塊來給其餘客戶,每一個客戶都只能看到本身虛的那一小塊,其實每一個客戶用的是整個大的設備上其中的一小塊。虛擬化的技術能使得不一樣的客戶的電腦看起來是隔離的,我看着好像這塊盤就是個人,你看這呢這塊盤就是你的,實際狀況可能我這個10G和您這個10G是落在一樣一個很大很大的這個存儲上的。
並且若是事先物理設備都準備好,虛擬化軟件虛擬出一個電腦是很是快的,基本上幾分鐘就能解決。因此在任何一個雲上要建立一臺電腦,一點幾分鐘就出來了,就是這個道理。
這個空間靈活性和時間靈活性就基本解決了。
1.5 虛擬世界的賺錢與情懷
在虛擬化階段,最牛的公司是Vmware,是實現虛擬化技術比較早的一家公司,能夠實現計算,網絡,存儲的虛擬化,這家公司很牛,性能也作得很是好,而後虛擬化軟件賣的也很是好,賺了好多的錢,後來讓EMC(世界五百強,存儲廠商第一品牌)給收購了。
可是這個世界上仍是有不少有情懷的人的,尤爲是程序員裏面,有情懷的人喜歡作一件什麼事情呢?開源。這個世界上不少軟件都是有閉源就有開源,源就是源代碼。就是說某個軟件作的好,全部人都愛用,這個軟件的代碼呢,我封閉起來只有我公司知道,其餘人不知道,若是其餘人想用這個軟件,就要付我錢,這就叫閉源。可是世界上總有一些大牛看不慣錢都讓一家賺了去。大牛們以爲,這個技術你會我也會,你能開發出來,我也能,我開發出來就是不收錢,把代碼拿出來分享給你們,全世界誰用均可以,全部的人均可以享受到好處,這個叫作開源。
好比最近蒂姆·伯納斯·李就是個很是有情懷的人,2017年,他因「發明萬維網、第一個瀏覽器和使萬維網得以擴展的基本協議和算法」而得到2016年度的圖靈獎。圖靈獎就是計算機界的諾貝爾獎。然而他最使人敬佩的是,他將萬維網,也就是咱們常見的www的技術無償貢獻給全世界無償使用。咱們如今在網上的全部行爲都應該感謝他的功勞,若是他將這個技術拿來收錢,應該和比爾蓋茨差很少有錢。
例如在閉源的世界裏有windows,你們用windows都得給微軟付錢,開源的世界裏面就出現了Linux。比爾蓋茨靠windows,Office這些閉源的軟件賺了不少錢,稱爲世界首富,就有大牛開發了另一種操做系統Linux。不少人可能沒有據說過Linux,不少後臺的服務器上跑的程序都是Linux上的,好比你們享受雙十一,支撐雙十一搶購的系統,不管是淘寶,京東,考拉,都是跑在Linux上的。
再若有apple就有安卓。apple市值很高,可是蘋果系統的代碼咱們是看不到的。因而就有大牛寫了安卓手機操做系統。因此你們能夠看到幾乎全部的其餘手機廠商,裏面都裝安卓系統,由於蘋果系統不開源,而安卓系統你們均可以用。
在虛擬化軟件也同樣,有了Vmware,這個軟件很是很是的貴。那就有大牛寫了兩個開源的虛擬化軟件,一個叫作Xen,一個叫作KVM,若是不作技術的,能夠不用管這兩個名字,可是後面仍是會提到。
1.6 虛擬化的半自動和雲計算的全自動
虛擬化軟件彷佛解決了靈活性問題,其實不全對。由於虛擬化軟件通常建立一臺虛擬的電腦,是須要人工指定這臺虛擬電腦放在哪臺物理機上的,可能還須要比較複雜的人工配置,因此使用Vmware的虛擬化軟件,須要考一個很牛的證書,能拿到這個證書的人,薪資是至關的高,也可見覆雜程度。因此僅僅憑虛擬化軟件所能管理的物理機的集羣規模都不是特別的大,通常在十幾臺,幾十臺,最多百臺這麼一個規模。這一方面會影響時間靈活性,雖然虛擬出一臺電腦的時間很短,可是隨着集羣規模的擴大,人工配置的過程愈來愈複雜,愈來愈耗時。另外一方面也影響空間靈活性,當用戶數量多的時候,這點集羣規模,還遠達不到想要多少要多少的程度,極可能這點資源很快就用完了,還得去採購。因此隨着集羣的規模愈來愈大,基本都是千臺起步,動輒上萬臺,甚至幾十上百萬臺,若是去查一下BAT,包括網易,包括谷歌,亞馬遜,服務器數目都大的嚇人。這麼多機器要靠人去選一個位置放這臺虛擬化的電腦並作相應的配置,幾乎是不可能的事情,仍是須要機器去作這個事情。
人們發明了各類各樣的算法來作這個事情,算法的名字叫作調度(Scheduler)。通俗一點的說,就是有一個調度中心,幾千臺機器都在一個池子裏面,不管用戶須要多少CPU,內存,硬盤的虛擬電腦,調度中心會自動在大池子裏面找一個可以知足用戶需求的地方,把虛擬電腦啓動起來作好配置,用戶就直接能用了。這個階段,咱們稱爲池化,或者雲化,到了這個階段,才能夠稱爲雲計算,在這以前都只能叫虛擬化。
1.7 雲計算的私有與公有
雲計算大體分兩種,一個是私有云,一個是公有云,還有人把私有云和公有云鏈接起來稱爲混合雲,咱們暫且不說這個。私有云就是把虛擬化和雲化的這套軟件部署在別人的數據中內心面,使用私有云的用戶每每頗有錢,本身買地建機房,本身買服務器,而後讓雲廠商部署在本身這裏,Vmware後來除了虛擬化,也推出了雲計算的產品,而且在私有云市場賺的盆滿鉢滿。所謂公有云就是虛擬化和雲化軟件部署在雲廠商本身數據中內心面的,用戶不須要很大的投入,只要註冊一個帳號,就能在一個網頁上點一下建立一臺虛擬電腦,例如AWS也即亞馬遜的公有云,例如國內的阿里雲,騰訊雲,網易雲等。
亞馬遜呢爲何要作公有云呢?咱們知道亞馬遜原來是國外比較大的一個電商,它作電商的時候也確定會遇到相似雙11的場景,在某一個時刻你們都衝上來買東西。當你們都衝上買東西的時候,就特別須要雲的時間靈活性和空間靈活性。由於它不能時刻準備好全部的資源,那樣太浪費了。但也不能什麼都不許備,看着雙十一這麼多用戶想買東西登不上去。因此須要雙十一的時候,建立一大批虛擬電腦來支撐電商應用,過了雙十一再把這些資源都釋放掉去幹別的。因此亞馬遜是須要一個雲平臺的。
然而商用的虛擬化軟件實在是太貴了,亞馬遜總不能把本身在電商賺的錢所有給了虛擬化廠商吧。因而亞馬遜基於開源的虛擬化技術,如上所述的Xen或者KVM,開發了一套本身的雲化軟件。沒想到亞馬遜後來電商越作越牛,雲平臺也越作越牛。並且因爲他的雲平臺須要支撐本身的電商應用,而傳統的雲計算廠商多爲IT廠商出身,幾乎沒有本身的應用,於是亞馬遜的雲平臺對應用更加的友好,迅速發展成爲雲計算的第一品牌,賺了不少錢。在亞馬遜公佈其雲計算平臺財報以前,人們都猜想,亞馬遜電商賺錢,雲也賺錢嗎?後來一公佈財報,發現不是通常的賺錢,僅僅去年,亞馬遜AWS年營收達122億美圓,運營利潤31億美圓。
1.8 雲計算的賺錢與情懷
公有云的第一名亞馬遜過得很爽,第二名Rackspace過的就通常了。沒辦法,這就是互聯網行業的殘酷性,可能是贏者通吃的模式。因此第二名若是不是雲計算行業的,不少人可能都沒聽過了。第二名就想,我幹不過老大怎麼辦呢?開源吧。如上所述,亞馬遜雖然使用了開源的虛擬化技術,可是雲化的代碼是閉源的,不少想作又作不了雲化平臺的公司,只能眼巴巴的看着亞馬遜掙大錢。Rackspace把源代碼一公開,整個行業就能夠一塊兒把這個平臺越作越好,兄弟們你們一塊兒上,和老大拼了。
因而Rackspace和美國航空航天局合做創辦了開源軟件OpenStack,如圖所示OpenStack的架構圖,不是雲計算行業的不用弄懂這個圖,可是可以看到三個關鍵字,Compute計算,Networking網絡,Storage存儲。仍是一個計算,網絡,存儲的雲化管理平臺。
固然第二名的技術也是很是棒的,有了OpenStack以後,果然像Rackspace想象的同樣,全部想作雲的大企業都瘋了,你能想象到的全部如雷貫耳的大型IT企業,IBM,惠普,戴爾,華爲,聯想等等,都瘋了。原來雲平臺你們都想作,看着亞馬遜和Vmware賺了這麼多錢,眼巴巴看着沒辦法,想本身作一個好像難度還挺大。如今好了,有了這樣一個開源的雲平臺OpenStack,全部的IT廠商都加入到這個社區中來,對這個雲平臺進行貢獻,包裝成本身的產品,連同本身的硬件設備一塊兒賣。有的作了私有云,有的作了公有云,OpenStack已經成爲開源雲平臺的事實標準。
1.9 IaaS, 資源層面的靈活性
隨着OpenStack的技術愈來愈成熟,能夠管理的規模也愈來愈大,而且能夠有多個OpenStack集羣部署多套,好比北京部署一套,杭州部署兩套,廣州部署一套,而後進行統一的管理。這樣整個規模就更大了。在這個規模下,對於普通用戶的感知來說,基本可以作到想何時要就什麼什麼藥,想要多少就要多少。仍是拿雲盤舉例子,每一個用戶雲盤都分配了5T甚至更大的空間,若是有1億人,那加起來空間多大啊。其實背後的機制是這樣的,分配你的空間,你可能只用了其中不多一點,好比說它分配給你了5個T,這麼大的空間僅僅是你看到的,而不是真的就給你了,你其實只用了50個G,則真實給你的就是50個G,隨着你文件的不斷上傳,分給你的空間會愈來愈多。當你們都上傳,雲平臺發現快滿了的時候(例如用了70%),會採購更多的服務器,擴充背後的資源,這個對用戶是透明的,看不到的,從感受上來說,就實現了雲計算的彈性。其實有點像銀行,給儲戶的感受是何時取錢都有,只要不一樣時擠兌,銀行就不會垮。
這裏作一個簡單的總結,到了這個階段,雲計算基本上實現了時間靈活性和空間靈活性,實現了計算,網絡,存儲資源的彈性。計算,網絡,存儲咱們常稱爲基礎設施Infranstracture, 於是這個階段的彈性稱爲資源層面的彈性,管理資源的雲平臺,咱們稱爲基礎設施服務,就是咱們常聽到的IaaS,Infranstracture As A Service。
2、雲計算不光管資源,也要管應用
有了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層對於用戶自身應用的自動部署變得快速而優雅。
3、大數據擁抱雲計算
在PaaS層中一個複雜的通用應用就是大數據平臺。大數據是如何一步一步融入雲計算的呢?
3.1 數據不大也包含智慧
一開始這個大數據並不大,你想象原來纔有多少數據?如今你們都去看電子書,上網看新聞了,在咱們80後小時候,信息量沒有那麼大,也就看看書,看看報,一個星期的報紙加起來纔有多少字啊,若是你不在一個大城市,一個普通的學校的圖書館加起來也沒幾個書架,是後來隨着信息化的到來,信息纔會愈來愈多。
首先咱們來看一下大數據裏面的數據,就分三種類型,一種叫結構化的數據,一種叫非結構化的數據,還有一種叫半結構化的數據。什麼叫結構化的數據呢?叫有固定格式和有限長度的數據。例如填的表格就是結構化的數據,國籍:中華人民共和國,民族:漢,性別:男,這都叫結構化數據。如今愈來愈多的就是非結構化的數據,就是不定長,無固定格式的數據,例如網頁,有時候很是長,有時候幾句話就沒了,例如語音,視頻都是非結構化的數據。半結構化數據是一些xml或者html的格式的,不從事技術的可能不瞭解,但也沒有關係。
數據怎麼樣才能對人有用呢?其實數據自己不是有用的,必需要通過必定的處理。例如你天天跑步帶個手環收集的也是數據,網上這麼多網頁也是數據,咱們稱爲Data,數據自己沒有什麼用處,可是數據裏面包含一個很重要的東西,叫作信息Information,數據十分雜亂,通過梳理和清洗,纔可以稱爲信息。信息會包含不少規律,咱們須要從信息中將規律總結出來,稱爲知識knowledge,知識改變命運。信息是不少的,可是有人看到了信息至關於白看,可是有人就從信息中看到了電商的將來,有人看到了直播的將來,因此人家就牛了,你若是沒有從信息中提取出知識,每天看朋友圈,也只能在互聯網滾滾大潮中作個看客。有了知識,而後利用這些知識去應用於實戰,有的人會作得很是好,這個東西叫作智慧intelligence。有知識並不必定有智慧,例如好多學者頗有知識,已經發生的事情能夠從各個角度分析的頭頭是道,但一到實幹就歇菜,並不能轉化成爲智慧。而不少的創業家之因此偉大,就是經過得到的知識應用於實踐,最後作了很大的生意。
因此數據的應用分這四個步驟:數據,信息,知識,智慧。這是不少商家都想要的,你看我收集了這麼多的數據,能不能基於這些數據來幫我作下一步的決策,改善個人產品,例如讓用戶看視頻的時候旁邊彈出廣告,正好是他想買的東西,再如讓用戶聽音樂的時候,另外推薦一些他很是想聽的其餘音樂。用戶在個人應用或者網站上隨便點點鼠標,輸入文字對我來講都是數據,我就是要將其中某些東西提取出來,指導實踐,造成智慧,讓用戶陷入到個人應用裏面不可自拔,上了個人網就不想離開,手不停的點,不停的買,不少人說雙十一我都想斷網了,我老婆在上面不斷的買買買,買了A又推薦B,老婆大人說,「哎呀,B也是我喜歡的啊,老公我要買」。你說這個程序怎麼這麼牛,這麼有智慧,比我還了解我老婆,這件事情是怎麼作到的呢?
3.2 數據如何昇華爲智慧
數據的處理分幾個步驟,完成了才最後會有智慧。
第一個步驟叫數據的收集。首先得有數據,數據的收集有兩個方式,第一個方式是拿,專業點的說法叫抓取或者爬取,例如搜索引擎就是這麼作的,它把網上的全部的信息都下載到它的數據中心,而後你一搜才能搜出來。好比你去搜索的時候,結果會是一個列表,這個列表爲何會在搜索引擎的公司裏面呢,就是由於他把這個數據啊都拿下來了,可是你一點連接,點出來這個網站就不在搜索引擎它們公司了。好比說新浪有個新聞,你拿百度搜出來,你不點的時候,那一頁在百度數據中心,一點出來的網頁就是在新浪的數據中心了。另一個方式就是推送,有不少終端能夠幫我收集數據,好比說小米手環,能夠將你天天跑步的數據,心跳的數據,睡眠的數據都上傳到數據中內心面。
第二個步驟是數據的傳輸。通常會經過隊列方式進行,由於數據量實在是太大了,數據必須通過處理纔會有用,但是系統處理不過來,只好排好隊,慢慢的處理。
第三個步驟是數據的存儲。如今數據就是金錢,掌握了數據就至關於掌握了錢。要否則網站怎麼知道你想買什麼呢?就是由於它有你歷史的交易的數據,這個信息可不能給別人,十分寶貴,因此須要存儲下來。
第四個步驟是數據的處理和分析。上面存儲的數據是原始數據,原始數據可能是雜亂無章的,有不少垃圾數據在裏面,於是須要清洗和過濾,獲得一些高質量的數據。對於高質量的數據,就能夠進行分析,從而對數據進行分類,或者發現數據之間的相互關係,獲得知識。好比盛傳的沃爾瑪超市的啤酒和尿布的故事,就是經過對人們的購買數據進行分析,發現了男人通常買尿布的時候,會同時購買啤酒,這樣就發現了啤酒和尿布之間的相互關係,得到知識,而後應用到實踐中,將啤酒和尿布的櫃檯弄的很近,就得到了智慧。
第五個步驟就是對於數據的檢索和挖掘。檢索就是搜索,所謂外事不決問google,內事不決問百度。內外兩大搜索引擎都是講分析後的數據放入搜索引擎,從而人們想尋找信息的時候,一搜就有了。另外就是挖掘,僅僅搜索出來已經不能知足人們的要求了,還須要從信息中挖掘出相互的關係。好比財經搜索,當搜索某個公司股票的時候,該公司的高管是否是也應該被挖掘出來呢?若是僅僅搜索出這個公司的股票發現漲的特別好,因而你就去買了,其實其高管發了一個聲明,對股票十分不利,次日就跌了,這不坑害廣大股民麼?因此經過各類算法挖掘數據中的關係,造成知識庫,十分重要。
3.3 大數據時代,衆人拾柴火焰高
當數據量很小的時候,不多的幾臺機器就能解決。慢慢的當數據量愈來愈大,最牛的服務器都解決不了問題的時候,就想怎麼辦呢?要聚合多臺機器的力量,你們齊心合力一塊兒把這個事搞定,衆人拾柴火焰高。
對於數據的收集,對於IoT來說,外面部署這成千上萬的檢測設備,將大量的溫度,適度,監控,電力等等數據通通收集上來,對於互聯網網頁的搜索引擎來說,須要將整個互聯網全部的網頁都下載下來,這顯然一臺機器作不到,須要多臺機器組成網絡爬蟲系統,每臺機器下載一部分,同時工做,才能在有限的時間內,將海量的網頁下載完畢。
對於數據的傳輸,一個內存裏面的隊列確定會被大量的數據擠爆掉,因而就產生了基於硬盤的分佈式隊列,這樣隊列能夠多臺機器同時傳輸,隨你數據量多大,只要個人隊列足夠多,管道足夠粗,就可以撐得住。
對於數據的存儲,一臺機器的文件系統確定是放不下了,因此須要一個很大的分佈式文件系統來作這件事情,把多臺機器的硬盤打成一塊大的文件系統。
再如數據的分析,可能須要對大量的數據作分解,統計,彙總,一臺機器確定搞不定,處理到猴年馬月也分析不完,因而就有分佈式計算的方法,將大量的數據分紅小份,每臺機器處理一小份,多臺機器並行處理,很快就能算完。例如著名的Terasort對1個TB的數據排序,至關於1024G,若是單機處理,怎麼也要幾個小時,可是並行處理209秒就完成了。
因此說大數據平臺,什麼叫作大數據,說白了就是一臺機器幹不完,你們一塊兒幹。隨着數據量愈來愈大,不少不大的公司都須要處理至關多的數據,這些小公司沒有這麼多機器可怎麼辦呢?
3.4 大數據須要雲計算,雲計算須要大數據
說到這裏,你們想起雲計算了吧。當想要幹這些活的時候,須要好多好多的機器一塊作,真的是想何時要,想要多少就要多少。例如大數據分析公司的財務狀況,可能一週分析一次,若是要把這一百臺機器或者一千臺機器都在那放着,一週用一次對吧,很是浪費。那能不能須要計算的時候,把這一千臺機器拿出來,而後不算的時候,這一千臺機器能夠去幹別的事情。誰能作這個事兒呢?只有雲計算,能夠爲大數據的運算提供資源層的靈活性。而云計算也會部署大數據放到它的PaaS平臺上,做爲一個很是很是重要的通用應用。由於大數據平臺可以使得多臺機器一塊兒幹一個事兒,這個東西不是通常人能開發出來的,也不是通常人玩得轉的,怎麼也得僱個幾十上百號人才能把這個玩起來,因此說就像數據庫同樣,其實仍是須要有一幫專業的人來玩這個東西。如今公有云上基本上都會有大數據的解決方案了,一個小公司我須要大數據平臺的時候,不須要採購一千臺機器,只要到公有云上一點,這一千臺機器都出來了,而且上面已經部署好了的大數據平臺,只要把數據放進去算就能夠了。
雲計算須要大數據,大數據須要雲計算,兩我的就這樣結合了。
4、人工智能擁抱大數據
4.1 機器何時才能懂人心
雖然說有了大數據,人的慾望老是這個不可以知足。雖然說在大數據平臺裏面有搜索引擎這個東西,想要什麼東西我一搜就出來了。可是也存在這樣的狀況,我想要的東西不會搜,表達不出來,搜索出來的又不是我想要的。例如音樂軟件裏面推薦一首歌,這首歌我沒聽過,固然不知道名字,也無法搜,可是軟件推薦給我,個人確喜歡,這就是搜索作不到的事情。當人們使用這種應用的時候,會發現機器知道我想要什麼,而不是說當我想要的時候,去機器裏面搜索。這個機器真像個人朋友同樣懂我,這就有點人工智能的意思了。
人們很早就在想這個事情了。最先的時候,人們想象,若是要是有一堵牆,牆後面是個機器,我給它說話,它就給我回應,我若是感受不出它那邊是人仍是機器,那它就真的是一我的工智能的東西了。
4.2 讓機器學會推理
怎麼才能作到這一點呢?人們就想:我首先要告訴計算機人類的推理的能力。你看人重要的是什麼呀,人和動物的區別在什麼呀,就是能推理。我要是把我這個推理的能力啊告訴機器,機器就能根據你的提問,推理出相應的回答,真能這樣多好。推理其實人們慢慢的讓機器可以作到一些了,例如證實數學公式。這是一個很是讓人驚喜的一個過程,機器居然可以證實數學公式。可是慢慢發現其實這個結果,也沒有那麼使人驚喜,由於你們發現了一個問題,數學公式很是嚴謹,推理過程也很是嚴謹,並且數學公式很容易拿機器來進行表達,程序也相對容易表達。然而人類的語言就沒這麼簡單了,好比今天晚上,你和你女友約會,你女友說:若是你早來,我沒來,你等着,若是我早來,你沒來,你等着。這個機器就比比較難理解了,可是人都懂,因此你和女友約會,你是不敢遲到的。
4.3 教給機器知識
因此僅僅告訴機器嚴格的推理是不夠的,還要告訴機器一些知識。可是知識這個事兒,通常人可能就作不來了,可能專家能夠,好比語言領域的專家,或者財經領域的專家。語言領域和財經領域知識能不能表示成像數學公式同樣稍微嚴格點呢?例如語言專家可能會總結出主謂賓定狀補這些語法規則,主語後面必定是謂語,謂語後面必定是賓語,將這些總結出來,並嚴格表達出來不久行了嗎?後來發現這個不行,太難總結了,語言表達變幻無窮。就拿主謂賓的例子,不少時候在口語裏面就省略了謂語,別人問:你誰啊?我回答:我劉超。可是你不能規定在語音語義識別的時候,要求對着機器說標準的書面語,這樣仍是不夠智能,就像羅永浩在一次演講中說的那樣,每次對着手機,用書面語說:請幫我呼叫某某某,這是一件很尷尬的事情。
人工智能這個階段叫作專家系統。專家系統不易成功,一方面是知識比較難總結,另外一方面總結出來的知識難以教給計算機。由於你本身還迷迷糊糊,彷佛以爲有規律,就是說不出來,就怎麼可以經過編程教給計算機呢?
4.4 算了,教不會你本身學吧
因而人們想到,看來機器是和人徹底不同的物種,乾脆讓機器本身學習好了。機器怎麼學習呢?既然機器的統計能力這麼強,基於統計學習,必定能從大量的數字中發現必定的規律。
其實在娛樂圈有很好的一個例子,可見一斑
有一位網友統計了知名歌手在大陸發行的 9 張專輯中 117 首歌曲的歌詞,同一詞語在一首歌出現只算一次,形容詞、名詞和動詞的前十名以下表所示(詞語後面的數字是出現的次數):
a | 形容詞 | b | 名詞 | c | 動詞 |
0 | 孤獨:34 | 0 | 生命:50 | 0 | 愛:54 |
1 | 自由:17 | 1 | 路:37 | 1 | 碎:37 |
2 | 迷惘:16 | 2 | 夜:29 | 2 | 哭:35 |
3 | 堅強:13 | 3 | 天空:24 | 3 | 死:27 |
4 | 絕望:8 | 4 | 孩子:23 | 4 | 飛:26 |
5 | 青春:7 | 5 | 雨:21 | 5 | 夢想:14 |
6 | 迷茫:6 | 6 | 石頭:9 | 6 | 祈禱:10 |
7 | 光明:6 | 7 | 鳥:9 | 7 | 離去:10 |
若是咱們隨便寫一串數字,而後按照數位依次在形容詞、名詞和動詞中取出一個詞,連在一塊兒會怎麼樣呢?
例如取圓周率 3.1415926,對應的詞語是:堅強,路,飛,自由,雨,埋,迷惘。稍微鏈接和潤色一下:
堅強的孩子,
依然前行在路上,
張開翅膀飛向自由,
讓雨水埋葬他的迷惘。
是否是有點感受了?固然真正基於統計的學習算法比這個簡單的統計複雜的多。
然而統計學習比較容易理解簡單的相關性,例如一個詞和另外一個詞老是一塊兒出現,兩個詞應該有關係,而沒法表達複雜的相關性,而且統計方法的公式每每很是複雜,爲了簡化計算,經常作出各類獨立性的假設,來下降公式的計算難度,然而現實生活中,具備獨立性的事件是相對較少的。
4.5 模擬大腦的工做方式
因而人類開始從機器的世界,反思人類的世界是怎麼工做的。
人類的腦子裏面不是存儲着大量的規則,也不是記錄着大量的統計數據,而是經過神經元的觸發實現的,每一個神經元有從其餘神經元的輸入,當接收到輸入的時候,會產生一個輸出來刺激其餘的神經元,因而大量的神經元相互反應,最終造成各類輸出的結果。例如當人們看到美女瞳孔放大,毫不是大腦根據身材比例進行規則判斷,也不是將人生中看過的全部的美女都統計一遍,而是神經元從視網膜觸發到大腦再回到瞳孔。在這個過程當中,其實很難總結出每一個神經元對最終的結果起到了哪些做用,反正就是起做用了。
因而人們開始用一個數學單元模擬神經元
這個神經元有輸入,有輸出,輸入和輸出之間經過一個公式來表示,輸入根據重要程度不一樣(權重),影響着輸出。
因而將n個神經元經過像一張神經網絡同樣鏈接在一塊兒,n這個數字能夠很大很大,全部的神經元能夠分紅不少列,每一列不少個排列起來,每一個神經元的對於輸入的權重能夠都不相同,從而每一個神經元的公式也不相同。當人們從這張網絡中輸入一個東西的時候,但願輸出一個對人類來說正確的結果。例如上面的例子,輸入一個寫着2的圖片,輸出的列表裏面第二個數字最大,其實從機器來說,它既不知道輸入的這個圖片寫的是2,也不知道輸出的這一系列數字的意義,不要緊,人知道意義就能夠了。正如對於神經元來講,他們既不知道視網膜看到的是美女,也不知道瞳孔放大是爲了看的清楚,反正看到美女,瞳孔放大了,就能夠了。
對於任何一張神經網絡,誰也不敢保證輸入是2,輸出必定是第二個數字最大,要保證這個結果,須要訓練和學習。畢竟看到美女而瞳孔放大也是人類不少年進化的結果。學習的過程就是,輸入大量的圖片,若是結果不是想要的結果,則進行調整。如何調整呢,就是每一個神經元的每一個權重都向目標進行微調,因爲神經元和權重實在是太多了,因此整張網絡產生的結果很難表現出非此即彼的結果,而是向着結果微微的進步,最終可以達到目標結果。固然這些調整的策略仍是很是有技巧的,須要算法的高手來仔細的調整。正如人類見到美女,瞳孔一開始沒有放大到能看清楚,因而美女跟別人跑了,下次學習的結果是瞳孔放大一點點,而不是放大鼻孔。
4.6 沒道理但作獲得
聽起來也沒有那麼有道理,可是的確能作到,就是這麼任性。
神經網絡的廣泛性定理是這樣說的,假設某我的給你某種複雜奇特的函數,f(x):
無論這個函數是什麼樣的,總會確保有個神經網絡可以對任何可能的輸入x,其值f(x)(或者某個可以準確的近似)是神經網絡的輸出。
若是在函數表明着規律,也意味着這個規律不管多麼奇妙,多麼不能理解,都是能經過大量的神經元,經過大量權重的調整,表示出來的。
4.7 人工智能的經濟學解釋
這讓我想到了經濟學,因而比較容易理解了。
咱們把每一個神經元當成社會中從事經濟活動的個體。因而神經網絡至關於整個經濟社會,每一個神經元對於社會的輸入,都有權重的調整,作出相應的輸出,好比工資漲了,菜價也漲了,股票跌了,我應該怎麼辦,怎麼花本身的錢。這裏面沒有規律麼?確定有,可是具體什麼規律呢?卻很難說清楚。
基於專家系統的經濟屬於計劃經濟,整個經濟規律的表示不但願經過每一個經濟個體的獨立決策表現出來,而是但願經過專家的高屋建瓴和遠見卓識總結出來。專家永遠不可能知道哪一個城市的哪一個街道缺乏一個賣甜豆腐腦的。因而專家說應該產多少鋼鐵,產多少饅頭,每每距離人民生活的真正需求有較大的差距,就算整個計劃書寫個幾百頁,也沒法表達隱藏在人民生活中的小規律。
基於統計的宏觀調控就靠譜的多了,每一年統計局都會統計整個社會的就業率,通脹率,GDP等等指標,這些指標每每表明着不少的內在規律,雖然不可以精確表達,可是相對靠譜。然而基於統計的規律總結表達相對比較粗糙,好比經濟學家看到這些統計數據能夠總結出長期來看房價是漲仍是跌,股票長期來看是漲仍是跌,若是經濟整體上揚,房價和股票應該都是漲的。可是基於統計數據,沒法總結出股票,物價的微小波動規律。
基於神經網絡的微觀經濟學纔是對整個經濟規律最最準確的表達,每一個人對於從社會中的輸入,進行各自的調整,而且調整一樣會做爲輸入反饋到社會中。想象一下股市行情細微的波動曲線,正是每一個獨立的個體各自不斷交易的結果,沒有統一的規律可循。而每一個人根據整個社會的輸入進行獨立決策,當某些因素通過屢次訓練,也會造成宏觀上的統計性的規律,這也就是宏觀經濟學所能看到的。例如每次貨幣大量發行,最後房價都會上漲,屢次訓練後,人們也就都學會了。
4.8 人工智能須要大數據
然而神經網絡包含這麼多的節點,每一個節點包含很是多的參數,整個參數量實在是太大了,須要的計算量實在太大,可是沒有關係啊,咱們有大數據平臺,能夠匯聚多臺機器的力量一塊兒來計算,才能在有限的時間內獲得想要的結果。
人工智能能夠作的事情很是多,例如能夠鑑別垃圾郵件,鑑別黃色暴力文字和圖片等。這也是經歷了三個階段的。第一個階段依賴於關鍵詞黑白名單和過濾技術,包含哪些詞就是黃色或者暴力的文字。隨着這個網絡語言愈來愈多,詞也不斷的變化,不斷的更新這個詞庫就有點顧不過來。第二個階段時,基於一些新的算法,好比說貝葉斯過濾等,你不用管貝葉斯算法是什麼,可是這個名字你應該聽過,這個一個基於機率的算法。第三個階段就是基於大數據和人工智能,進行更加精準的用戶畫像和文本理解和圖像理解。
因爲人工智能算法可能是依賴於大量的數據的,這些數據每每須要面向某個特定的領域(例如電商,郵箱)進行長期的積累,若是沒有數據,就算有人工智能算法也白搭,因此人工智能程序不多像前面的IaaS和PaaS同樣,將人工智能程序給某個客戶安裝一套讓客戶去用,由於給某個客戶單獨安裝一套,客戶沒有相關的數據作訓練,結果每每是不好的。可是雲計算廠商每每是積累了大量數據的,因而就在雲計算廠商裏面安裝一套,暴露一個服務接口,好比您想鑑別一個文本是否是涉及黃色和暴力,直接用這個在線服務就能夠了。這種形勢的服務,在雲計算裏面稱爲軟件即服務,SaaS (Software AS A Service)
因而工智能程序做爲SaaS平臺進入了雲計算。
5、雲計算,大數據,人工智能過上了美好的生活
終於雲計算的三兄弟湊齊了,分別是IaaS,PaaS和SaaS,因此通常在一個雲計算平臺上,雲,大數據,人工智能都能找獲得。對一個大數據公司,積累了大量的數據,也會使用一些人工智能的算法提供一些服務。對於一我的工智能公司,也不可能沒有大數據平臺支撐。因此雲計算,大數據,人工智能就這樣整合起來,完成了相遇,相識,相知。