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