在人工智能時代,不論是否從事大數(shù)據(jù)開發(fā),掌握大數(shù)據(jù)的原理和架構(gòu)早已成為每個工程師的技能。本書結(jié)合作者多年大數(shù)據(jù)開發(fā)、應用的經(jīng)驗,深入淺出地闡述大數(shù)據(jù)的完整知識體系,幫助讀者從不同視角找到大數(shù)據(jù)方向的突破口,真正從普通開發(fā)者晉升為擁有大數(shù)據(jù)思維并能解決復雜問題的技術專家。
本書一共分為7章,分別是大數(shù)據(jù)的前世今生與應用場景、Hadoop大數(shù)據(jù)原理與架構(gòu)、大數(shù)據(jù)生態(tài)體系主要產(chǎn)品原理與架構(gòu)、大數(shù)據(jù)開發(fā)實踐、大數(shù)據(jù)平臺與系統(tǒng)集成、大數(shù)據(jù)分析與運營、大數(shù)據(jù)算法與機器學習。
本書既可作為初學者了解大數(shù)據(jù)技術的入門指南,也可作為有一定經(jīng)驗的工程師深入理解大數(shù)據(jù)思維的有益參考。
為什么說每個軟件工程師都應該懂大數(shù)據(jù)
2012年的時候,我從阿里巴巴跳槽到Intel做大數(shù)據(jù)開發(fā)。當時很多人不理解,我為什么會從如日中天的互聯(lián)網(wǎng)公司跳槽到傳統(tǒng)的IT公司。
我是這樣考慮的:軟件編程技術出現(xiàn)已經(jīng)半個多世紀了,其核心價值就是把現(xiàn)實世界的業(yè)務操作搬到計算機上,通過計算機軟件和網(wǎng)絡進行業(yè)務和數(shù)據(jù)處理。我們常見的軟件系統(tǒng),不管是電子商務還是庫存管理,不管是搜索引擎還是收銀終端,都是如此。這一點價值巨大,可以成百上千倍地提高我們的生活和工作效率。
時至今日,能用計算機軟件提高效率的地方幾乎已經(jīng)被全部發(fā)掘過了,計算機軟件成為人們?nèi)粘I畹钠,人們已?jīng)習慣了計算機軟件的存在。在這種情況下,如果想讓軟件再成百上千倍地提高我們的生活和工作效率,使用以前的那套分析用戶需求和業(yè)務場景,進行軟件設計和開發(fā)的做法顯然是不可能的了。
那如何走出這個困局呢?我覺得,要想讓計算機軟件(包括互聯(lián)網(wǎng)應用)繼續(xù)提高我們的生活工作效率,就必須發(fā)掘出用戶自己都沒有發(fā)現(xiàn)的需求,必須洞悉用戶自己都不了解的自己。
計算機軟件不應該再像以前那樣,等用戶輸入操作,然后根據(jù)編寫好的邏輯執(zhí)行用戶的操作,而是應該能夠預測用戶的期望,在用戶還沒想好要做什么的情況下,主動提供操作建議和選項,提醒用戶應該做什么。
這聽起來很科幻,但實際上已經(jīng)出現(xiàn)了,那就是大數(shù)據(jù)技術和機器學習技術,也就是我們都耳熟能詳?shù)娜斯ぶ悄芗夹g。
現(xiàn)在回過頭來看,我當時的判斷是正確的。就在我加入Intel從事Hadoop開源軟件開發(fā)的第二年,也就是2013年,大數(shù)據(jù)技術開始火熱起來,從BAT到傳統(tǒng)的商業(yè)公司,紛紛在自己的軟件系統(tǒng)中大規(guī)模使用大數(shù)據(jù)技術,有的公司甚至稱自己為大數(shù)據(jù)公司,而2013年后來也被稱為大數(shù)據(jù)元年。
又過了3年,也就是2016年,Google的AlphaGo橫空出世,讓我們見識到了大數(shù)據(jù) 機器學習的巨大威力。
所以,我同意這樣一種說法:在未來,軟件開發(fā)將是面向AI編程,軟件的核心業(yè)務邏輯和價值將圍繞機器學習的結(jié)果(也就是AI)展開,軟件工程師的工作就是考慮如何將機器學習的結(jié)果更好地呈現(xiàn)出來,如何更好地實現(xiàn)人和AI的交互。
我曾經(jīng)跟一個同學討論這個觀點,他認同面向AI編程,但是他認為:這并不意味著我一定要懂AI,也不一定要懂大數(shù)據(jù)和機器學習,我只要懂業(yè)務,理解機器學習算出的結(jié)果就可以了。
真的是這樣嗎?只需要懂業(yè)務就能在面向AI編程的時代勝任軟件開發(fā)的工作嗎?
在阿西莫夫的科幻經(jīng)典巨作《銀河帝國:基地》中,描述了一個場景。
在銀河系,隨著戰(zhàn)爭的蔓延,很多星球的科技逐漸退步,到后來,他們雖然還有核電站等高科技產(chǎn)品,但是已經(jīng)不知道它們是如何運作的了。而在銀河系的邊緣,有一顆小星球,在大戰(zhàn)爆發(fā)前從銀河系各處轉(zhuǎn)移了大量的科技文獻,這顆小星球沒有加入戰(zhàn)爭,并將科學技術一直傳承了下去。
后來,當其他星球的科技產(chǎn)品出現(xiàn)問題的時候,就會向這顆小星球求援,小星球會派工程師前去維修。但是,他們并不管工程師叫工程師,而是叫僧侶;也不管核電站叫核電站,而是叫圣殿;維修也不叫維修,而是叫祈禱。他們的說法是:因為這顆星球上的人做了不該做的事,比如發(fā)動戰(zhàn)爭、破壞環(huán)境等,觸怒了神,所以神歸罪下來,讓他們失去能源,如果想恢復能源,就必須糾正自己的錯誤行為并向神祈禱贖罪。所以,當工程師進入核電站維修的時候,整個星球的人都跪下祈禱,當電力恢復的時候,大家紛紛稱頌神的偉大。
你看,科學和宗教并不是互斥的,科學也可以成為宗教,當人們面對自己不懂的東西的時候,會傾向于用宗教的原理去解釋。
如果未來是面向AI編程的,希望軟件工程師不要把AI當作什么的東西。當機器學習結(jié)果出現(xiàn)問題的時候,我們既不要陷入某種不可知的玄學之中,也不要無謂地抱怨什么人工智障,而是應該積極參與到問題的討論、分析和解決中去。這也是我的觀點,即使自己不做與大數(shù)據(jù)和機器學習相關的開發(fā),每個程序員也應該懂大數(shù)據(jù)和機器學習。
將來,數(shù)據(jù)會逐漸成為公司的核心資產(chǎn)和主要競爭力,公司的業(yè)務展開和產(chǎn)品進化也會朝著如何利用好數(shù)據(jù)價值的方向發(fā)展。如果你不懂大數(shù)據(jù)和機器學習,可能連基本的產(chǎn)品邏輯和商業(yè)意圖都搞不清楚。如果只懂編程,那么你的生存空間會越來越窄,發(fā)展也會處處受限。
如果說大數(shù)據(jù)技術和應用是一個技術的殿堂,那么希望本書不僅可以帶你找到進入大數(shù)據(jù)殿堂的鑰匙,也能透視殿堂里的結(jié)構(gòu)、裝飾、家具,告訴你為什么用這些元素可以構(gòu)建恢弘的殿堂,以及如何更好地利用這個殿堂的空間與設施,而不是讓你進入殿堂看到一張床就舒服地躺下,錯失了更美的風景。
學習大數(shù)據(jù)好的時間是十年前,其次就是現(xiàn)在!