一文讀懂雲端計算、大資料、人工智慧
最近我們和美國的“貿易戰”打的是如火如荼,這位“推特治國”的川普總統總是給人一種“政治嬰兒,商業天才”的感覺,貿易戰的目的有很大一部分被認為是遏制“中國製造2025”。中國製造2025是一系列巨集偉的計劃,能夠使中國完成民族復興,其中重點發展領域就是資訊科技相關的創新產業,具體一點就是目前火爆了的雲端計算、大資料、人工智慧。Ok,停。我們遇到了裝逼死角,如果有個妹子問:“哥哥,神馬是雲端計算、大資料、人工智慧啊?你跟人家講講嘛。”望著妹子崇拜的眼神你,那麼。這個時候小編的到來,讓你可以。
一、雲端計算
話說自然接種的雲是這麼形成的,各種各樣的小水滴凝結成雲,然後共享給大地上的生靈。雲端計算的名字就是模仿自然界中雲的形成而來的。它是通過各種方式收集網際網路中的軟硬體資源,然後按照需求共享給各個使用者使用。雲端計算主要就是對計算資源進行靈活有效的管理和分配,這些資源主要包含:計算資源、儲存資源、網路資源三個方面。
那什麼是計算資源、網路資源、儲存資源呢?比如說你買一臺筆記本,你想用這檯筆記本來看片片(壞笑.jpg)玩大型遊戲,那麼你就需要有一顆強勁的CPU、儘可能大的執行記憶體和能夠裝的下你慾望的硬碟。那麼CPU就是計算資源,你可能需要主頻高、核心數多的型號。硬碟就是儲存資源,要足夠大盡量的讀寫速度快,能夠滿足你追求“大又快”的需求。而記憶體是CPU和硬碟之間的橋樑,它的效能制約著整個計算機的效能。但是隻有這些還是不夠的,因為你如果連一個QQ都上不了,怎麼和妹子聯絡以達到你不可告人的目的呢?你的小片片也得是從網路上下載不是(當然小編不知道什麼是自拍),這就是網路資源。
但是物理裝置(比如一臺筆記本)是非常缺乏時間靈活性和空間靈活性的。例如:我想現在就買一臺大型伺服器,但是採購是需要時間的,買回來之後還需要機房等各種軟硬體環境的部署;後來我又想要一臺很小的電腦,CPU一顆、記憶體1G、硬碟20G,這樣的電腦現在可能都很難找到地方買。為了實現按需分配資源的功能有人想出來一個叫“虛擬化”的方法。通俗點講就是準備一臺效能非常強大的計算機(例如64核心的CPU、128G記憶體、256T的硬碟、10G的網路頻寬),然後根據使用者的需求,通過虛擬化的隔離技術,從這臺強大的計算機上劃分出一部分一部分形成一臺電腦(比如:2顆CPU、4G記憶體、500G硬碟、1G頻寬),每個使用者得到的這部分資源完全是透明化的,使用者自己會認為這就是一臺完整的計算機。軟體虛擬化的過程是非常快的,通常幾分鐘就可以搞定。這樣空間靈活性和時間靈活性就得到了比較好的解決。
不過虛擬化只是在使用者端解決了較好的靈活性,但是在後臺的執行端,工程師們需要手動的進行虛擬機器的分配,這個過程相對來說是比較複雜的,而且如果只是幾臺十幾臺的規模,那麼手動分配還可以實現,但是現在的網際網路規模動輒就是上萬臺、幾十萬臺,人工分配顯然已經不可能完成。人們就又想了一個辦法,把所有的計算機在邏輯層面放到一個池子裡,這個池子叫做資源池,然後通過排程演算法組建一個排程中心,不管使用者使用使用多少CPU、記憶體、硬碟、頻寬都可以通過申請由調動中心從資源池中選擇相應的資源組成虛擬機器分配給使用者,到此就可以稱作為雲計算了。當資源池資源不夠用了我們可以再向資源池中接入機房就可以了,而且這些機房可以在世界各地,這一系列操作對使用者來說都是透明的,對工程師來說只要保證排程中心和資源池穩定執行就好。
OK,到目前這個階段我們的雲端計算基本實現了時間靈活性和空間靈活性,實現了計算、儲存、網路等硬體資源的彈性利用。這也就是我們通常所說的基礎設施及服務,IaaS(Infranstracture as a Service)雲。但是人的慾望和惰性是無限,它們兩個一直是人類進步不竭的動力。IaaS雲創建出來的虛擬機器都是空的,也就是沒有裝任何軟體甚至是作業系統,如果一個電商公司在雙十一想要突發的增加1000臺機器,那麼他們就必須再手動重新按照配置相應的軟體,這裡面由大量的重複性工作,因為由很大一部分軟體是通用的。這就像我們買房子,如果用Iaas雲買,就類似買了毛坯房,我們每買一個房子都需要對房子進行刷牆、鋪地板磚等最基礎的操作,但如果是精裝修的房子(通用應用),我們只要按照我們的喜好添置傢俱和一些裝飾品就可以了(差異化應用),省去了很多不必要的麻煩。這樣“精裝修”的房子就類似我們所說的PaaS(Platform as a Service)雲。將一些一般都能用到的軟體和開發環境安裝好提供給使用者,使用者拿到虛擬機器之後可以直接或者只需經過很少的部署就可以使用,這就叫平臺及服務。
至此,我們解決了老的問題,新的問題又出現了(慾望啊慾望、懶惰啊懶惰),在實際應用中,我們的執行環境紛繁複雜、新舊版本交錯,使我們部署自己的應用時經常出錯,即便時使用指令碼進行自動化部署,但是隻要時部署環境有一丁點不同,就可能產生部署錯誤。於是我們引入了容器(Container)的概念。Container有集裝箱的意思,集裝箱的特點是標準(方方正正)、封裝(與外界隔離)。
在沒有集裝箱的時代,船員們在碼頭換船的時候都需要把物品全都搬下來,散落一地,然後再搬到另一個船上,而另一個船的構造能不能合理的放下這些物品還不一定,有了集裝箱之後,所有的東西裝成一個個集裝箱,每個船隻再儘量設定成符合放集裝箱的結構,這樣換船的時候直接從一個船搬到另一個船就好了,方便快捷。
我們的自主應用要實現這樣的形勢,就需要先將應用所需的基本環境和檔案、資料等資訊打包封裝,與其他資訊隔離,把這些封裝好的資訊做成“映象”,映象就類似在集裝箱關上門的那一刻,孫悟空喊了一聲“定”,把這些內容都儲存在了這一刻,使這些容器不管放到什麼環境下都是相同的內容。
容器太多也是雜亂無章,相應的又出現了一些對容器自動化部署、擴充套件、管理的平臺軟體。
雲計算髮展至此已經基本能夠滿足我們的需求了,從計算機誕生開始出現了很多軟硬體的商業公司,IBM這些靠硬體成長起來的公司至今依然是世界的龍頭,虛擬技術興起後,像VMware這樣的公司也是賺的盆滿鉢滿。但軟體不像硬體需要特別大的投資和非常雄厚的基礎,VMware公司的軟體是閉源的,也就是軟體的原始碼只有我自己知道,別人都不知道,誰用我的軟體誰就像我付錢,只要軟體成熟之後基本是一本萬利的,當然軟體的研發也不是輕而易舉的,有點類似於近來電影《我不是藥神》裡面的神藥。不過軟體技術遠不如研究新葯那麼難和耗時長,並且這個世界上有很多追求平等自由的人,有一些技術大牛看不慣一些資本家的壟斷,認為軟體應該是全世界人類智慧的結晶,應該服務於全人類,所以這些大牛就自己開發出來一些軟體,並且公佈到網際網路上,共大家免費自由使用。這些軟體就被成為開源軟體,當然現在很多軟體的開源原因很複雜,有得是為了情懷,有得是為了競爭,有得是為了賺更多的錢。
從硬體到虛擬化,從虛擬化到雲端計算,從雲端計算到容器再到容器的叢集,我們偉大的軟體工程師們開發了一系列的開源軟體,虛擬化的有Xen、KVM、雲端計算有openstack、容器有docker
容器叢集有kubernetes,眾所周知這些軟體都需要執行在一個作業系統之上,而開源作業系統Linux一經誕生,就技驚四座,以其小巧精湛、低成本、強穩定以及良好的移植和定製的特性,在全世界小到嵌入式裝置大到超級計算機和成千上萬的計算機叢集90%以上都在使用它。所以良好的掌握Linux是從事雲端計算行業的基礎和關鍵。
二、大資料
雲端計算主要集中在計算,而我們計算的東西叫什麼呢?這個就是資料,究竟什麼是資料,好像沒有一個確切的定義,廣義上來說,我們現實世界的事物抽象成的邏輯符號就叫做資料。資料是不具備任何含義的,比如“165”我們可以說它是一個數也可以說它是三個數,但它什麼意思都表達不出來,如果我們把“165”加工一下變成“165cm”就變成一個長度了,這個“165cm”就叫做資訊。資訊對我們來說是有意義的,不過計算機當中存放的時候資訊就又變成資料了。資訊雖然對我們有意義,但是用處太小或者資訊太雜亂,我們根本無從下手,如果我們把資訊整理歸納總結,梳理成冊,就變成了知識。知識對我們來說就有意義的多了,我們從小到大上學就是為了學習知識對吧,知識是人類進步的糧食。但是知識只有運用得當才能變成智慧,趙括就是隻有知識沒有智慧的人,而王陽明就是集天下之大成的智者。知識的運用叫做經驗,經驗和知識相輔相成不可偏廢,只有經驗沒有知識只能是低層次,只有知識沒有經驗只會是空中樓閣,不過有了經驗去學知識較難,有知識後去學經驗易。
|
|
|
|
那麼大資料是怎樣的呢?簡單的理解大資料就是體量非常非常巨大的資料。這麼大量的資料我們放著不用是非常愚蠢和可恥的,所以大資料技術也可以簡單的說成是將海量的資料轉換成智慧的這樣一個迴圈。通常我們需要這樣幾個步驟:
- 資料收集:一種方式是通過爬取將網際網路上的所有資訊都下載到一個數據中心;另一種是通過各種感測器(物聯網的概念)收集現實世界中的各種各樣的資料(比如:溫度、心跳等等);
- 資料儲存:收集到的資料需要根據一定的規則進行儲存下來,資料有得是具有一些共同的特點(比如各種表格)的被稱作結構化資料,還有很多沒有共同特點的叫做非結構化資料,這些所有的資料必須有效的儲存下來才能夠進行資料的二次利用(比如搜尋);
- 資料處理和分析:我們從各個渠道儲存下來的原始資料都是雜亂無章的,有的有用、有的沒用、有的不知道有沒有用,所以我們要對原始資料進行清洗、過濾、分類等一系列操作,得到資料之間的相互關係和相互作用。比如沃爾瑪超市就在大量購買資料中發現人們買男士用品的時候經常會買一包兒童紙尿褲,所以它們就把這兩類商品放到一塊兒,提高了使用者的購買效率;
- 資料檢索和挖掘:這一步是在上一步的基礎上進行更深入的探索,並且把結果放到網際網路上共人們使用。比如金融行業需要在海量的交易和其他相關資訊中分析出股市甚至是某種股票的漲跌,這需要更多專業的分析,如果出錯率很大,別人就不會為你的服務付費了。
這麼大量的資料需要經過這麼多步驟的運算,一臺機器明顯是不夠的,得需要成千上萬條機器,但是大資料的分析並不一定是每時每刻都在做的,比如我是一家財務公司,可能我一週只需要進行一次資料分析,而其他時間不需要這麼大量的計算機,那豈不是造成了很大的浪費,怎麼辦才好呢?大家想到了把,就是雲端計算,雲端計算在這裡就可以很好的和大資料融合了。
三、大資料
前兩天小編的同事小劉問小編你知道什麼車最貴嗎?小編這麼窮怎麼可能知道,然後他就說不是蘭博基尼不是勞斯萊斯而是女朋友的購物車。據悉他幫女朋友清理了一下網上的購物車,差點給清理破產了。這就是商家奸詐的地方了,女人好像天生對購物時0抵抗力,他女友在買任何東西的時候都會收到一系列相關的推薦,比如你想買一輛單車去騎行窮遊最後可能買了一艘遊艇去夏威夷自駕,買不起沒關係,還有駭人聽聞的親密付功能。小劉感嘆怎麼收集比他自己還了解他女朋友啊。這就是人工智慧的初步體驗了。提起人工只能你的印象是這個?這個?還是這個。沒錯,這也許是我們想象中的人工智慧該有的樣子(奧創好像有點跑偏了),其實人工智慧的概念早在二戰之前就提出了,人工智慧之父圖靈就提出過著名的圖靈測試方法來驗證機器是否具有智慧的特點。人工很好理解就是人為造的,但是智慧很難解釋清楚,它包含了太多的東西諸如意識、自我、心靈、無意識的精神等等,我們人類自己的智慧都還沒有研究清楚,所以說人工智慧究竟能發展到何種程度目前還是個未知數。但是讓機器模仿人類的行為、部分思考方式,利用演繹和推理解決實際問題還是可以實現的。
怎樣讓機器具有這樣的演繹、推理的功能呢?最主要的是演算法,我們現在的計算機通過各種演算法能夠證明數學公式了,但是數學推理由非常嚴謹的推理過程,是可以程式化的,但我們平時的生活就沒有那麼嚴謹了,比如“夏天能穿多少穿多少,冬天也是能穿多少穿多少”,這個機器就很難理解是什麼意思了。所以機器只進行邏輯推理還是不夠的,我們要交給它一些知識,不過教給計算機知識就太難了,得是語言專家才行,必須把語言的結構、語法、使用習慣等等都做成公式交給計算機,但是即便是這樣也是不行的,因為平時的生活中語言太千變萬化了,沒有人平時說話時嚴格按照語法來說的,並且還充斥著各種各樣的方言和俚語,是不可能都教給計算機的。
既然教不會就讓計算機自己學吧,怎麼學習呢?一般簡單的是通過統計學,把收集來的資訊進行歸納總結髮現一定的規律,例如計算機作詞:
我們隨便寫一串數字,然後按照數位依次在形容詞、名詞和動詞中取出一個詞,然後稍作加工就能變成:,這樣是不是有點意思了,當然真正的學習演算法要複雜的多。還有很多模仿人腦的演算法例如人工神經網路和深度學習演算法等,人類的腦子裡面不是儲存著大量的規則,也不是記錄著大量的統計資料,而是通過神經元的觸發實現的,每個神經元有從其它神經元的輸入,當接收到輸入時,會產生一個輸出來刺激其它神經元。於是大量的神經元相互反應,最終形成各種輸出的結果。當某些男人看到美女瞳孔會放大,絕不是大腦根據身材比例進行規則判斷,也不是將人生中看過的所有的美女都統計一遍,而是神經元從視網膜觸發到大腦再回到瞳孔。在這個過程中,其實很難總結出每個神經元對最終的結果起到了哪些作用,反正就是起作用了。如果你這次看見美女瞳孔沒有放大,讓美女和其他人跑了,你就會對策略進行微調,下次就不會這麼做了,當然運用到計算機上這些調整的策略還是非常有技巧的,需要演算法的高手來仔細的調整。
人工智慧說到底也都是一些列的演算法和演算法自己產生的演算法,這些演算法是需要資料作為養料進行餵養的,對於好的演算法來說,資料量越大可能產生的結果就越正確,就像alphgo要經過無數次的對弈才能提高自己的水平一樣。並且人工智慧對應的演算法是相當複雜和龐大的,單臺計算機是不可能在短時間內完成的,所以人工智慧就和雲端計算大資料緊密的結合在了一起。
我們上面說過人工智慧的演算法非常的複雜,那麼對程式設計師來說要通過程式設計實現這樣的演算法就會非常耗時,如果使用語法嚴格限制較多的語言編寫會很難實現,程式設計師的負擔也會非常大,在上世紀90年代出現的Python語言以其簡潔的語法、強大的第三方庫使它程式設計效率極高,在人工智慧領域大放異彩。
四、如何學習雲端計算、大資料、人工智慧
在貿易戰、世界經濟復甦撲朔迷離的大環境下,如何使自己今後立於不敗之地,那麼學習Linux運維、雲端計算、大資料、Python開發就會是一個非常好的選擇,大學裡面學這些課程需要四年啊,我們去哪裡學呢?對,就是馬哥教育!
馬哥教育全稱北京馬哥教育科技有限公司,於2007年由馬哥正式創辦,歷經十年發展,以“匠心精神,良心教育”為宗旨,以國際“MVP”體系為標準,培養了數萬名資深、專業的高階IT人才,80%以上學員在網際網路排名前300的企業高薪就業,擁有Linux運維、Python開發、雲端計算等多個高階學科。憑藉馬哥教育職業IT培訓的高品質和畢業學員的良好口碑,其已經成為業內知名網際網路公司重要人才戰略合作伙伴,獲得了百度、騰訊、阿里、中興、科大訊飛、大眾點評、51CTO、唯品會、京東、中國移動、 新浪、紅帽等網際網路巨頭的人才合作支援,2013年成為51CTO官方推薦合作機構,與多家IT網際網路企業簽訂專項人才培養計劃,畢業學員平均薪資達10K以上。