隨著互聯(lián)網(wǎng)的蓬勃興起,物聯(lián)網(wǎng),云計(jì)算,大數(shù)據(jù),人工智能在大眾視野出現(xiàn)的越來(lái)越頻繁了。
創(chuàng)新互聯(lián)建站成都企業(yè)網(wǎng)站建設(shè)服務(wù),提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作網(wǎng)站開(kāi)發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格網(wǎng)站,提供周到的售前咨詢和貼心的售后服務(wù)。歡迎咨詢做網(wǎng)站需要多少錢(qián):028-86922220
?
云計(jì)算相當(dāng)于人的大腦,是物聯(lián)網(wǎng)的神經(jīng)中樞。云計(jì)算是基于互聯(lián)網(wǎng)的相關(guān)服務(wù)的增加、使用和交付模式,通常涉及通過(guò)互聯(lián)網(wǎng)來(lái)提供動(dòng)態(tài)易擴(kuò)展且經(jīng)常是虛擬化的資源。
大數(shù)據(jù)相當(dāng)于人的大腦從小學(xué)到大學(xué)記憶和存儲(chǔ)的海量知識(shí),這些知識(shí)只有通過(guò)消化,吸收、再造才能創(chuàng)造出更大的價(jià)值。
人工智能打個(gè)比喻為一個(gè)人吸收了人類大量的知識(shí)(數(shù)據(jù)),不斷的深度學(xué)習(xí)、進(jìn)化成為一方高人。人工智能離不開(kāi)大數(shù)據(jù),更是基于云計(jì)算平臺(tái)完成深度學(xué)習(xí)進(jìn)化。
而物聯(lián)網(wǎng)是互聯(lián)網(wǎng)的應(yīng)用拓展,類似以前的“互聯(lián)網(wǎng)+”,也就是結(jié)合互聯(lián)網(wǎng)的業(yè)務(wù)和應(yīng)用,核心是以用戶體驗(yàn)為核心的應(yīng)用創(chuàng)新。
我們主要講一下其中的“大數(shù)據(jù)”。
大數(shù)據(jù)的定義
在 2001 年左右,Gartner 就大數(shù)據(jù)提出了如下定義(目前仍是關(guān)于大數(shù)據(jù)的權(quán)威解釋):大數(shù)據(jù)指高速 (Velocity) 涌現(xiàn)的大量 (Volume) 的多樣化 (Variety) 數(shù)據(jù)。這一定義表明大數(shù)據(jù)具有 3V 特性。
簡(jiǎn)而言之,大數(shù)據(jù)指越來(lái)越龐大、越來(lái)越復(fù)雜的數(shù)據(jù)集,特別是來(lái)自全新數(shù)據(jù)源的數(shù)據(jù)集,其規(guī)模之大令傳統(tǒng)數(shù)據(jù)處理軟件束手無(wú)策,卻能幫助我們解決以往非常棘手的業(yè)務(wù)難題。
?
大數(shù)據(jù)的價(jià)值和真實(shí)性
在過(guò)去幾年里,大數(shù)據(jù)的定義又新增加了兩個(gè) "V":價(jià)值 (Value) 和 真實(shí)性 (Veracity)。
首先,數(shù)據(jù)固然蘊(yùn)含著價(jià)值,但是如果不通過(guò)適當(dāng)方法將其價(jià)值挖掘出來(lái),數(shù)據(jù)就毫無(wú)用處。其次,只有真實(shí)、可靠的數(shù)據(jù)才有意義。
如今,大數(shù)據(jù)已成為一種資本,全球各個(gè)大型技術(shù)公司無(wú)不基于大數(shù)據(jù)工作原理,在各種大數(shù)據(jù)用例中通過(guò)持續(xù)分析數(shù)據(jù)提高運(yùn)營(yíng)效率,促進(jìn)新產(chǎn)品研發(fā),他們所創(chuàng)造的大部分價(jià)值無(wú)不來(lái)自于他們掌握的數(shù)據(jù)。
目前,眾多前沿技術(shù)突破令數(shù)據(jù)存儲(chǔ)和計(jì)算成本呈指數(shù)級(jí)下降。相比過(guò)去,企業(yè)能夠以更低的經(jīng)濟(jì)投入更輕松地存儲(chǔ)更多數(shù)據(jù),而憑借經(jīng)濟(jì)、易于訪問(wèn)的海量大數(shù)據(jù),您可以輕松做出更準(zhǔn)確、更精準(zhǔn)的業(yè)務(wù)決策。
然而,從大數(shù)據(jù)工作原理角度來(lái)講,大數(shù)據(jù)價(jià)值挖掘是一個(gè)完整的探索過(guò)程而不僅僅是數(shù)據(jù)分析,它需要富有洞察力的分析師、業(yè)務(wù)用戶和管理人員在大數(shù)據(jù)用例中有針對(duì)性地提出有效問(wèn)題、識(shí)別數(shù)據(jù)模式、提出合理假設(shè)并準(zhǔn)確開(kāi)展行為預(yù)測(cè)。
大數(shù)據(jù)的歷史
雖然大數(shù)據(jù)這個(gè)概念是最近才提出的,但大型數(shù)據(jù)集的起源卻可追溯至 1960 - 70 年代。當(dāng)時(shí)數(shù)據(jù)世界正處于萌芽階段,全球第一批數(shù)據(jù)中心和首個(gè)關(guān)系數(shù)據(jù)庫(kù)便是在那個(gè)時(shí)代出現(xiàn)的。
2005 年左右,人們開(kāi)始意識(shí)到用戶在使用 Facebook、YouTube 以及其他在線服務(wù)時(shí)生成了海量數(shù)據(jù)。同一年,專為存儲(chǔ)和分析大型數(shù)據(jù)集而開(kāi)發(fā)的開(kāi)源框架 Hadoop 問(wèn)世,NoSQL 也在同一時(shí)期開(kāi)始慢慢普及開(kāi)來(lái)。
Hadoop 及后來(lái) Spark 等開(kāi)源框架的問(wèn)世對(duì)于大數(shù)據(jù)的發(fā)展具有重要意義,正是它們降低了數(shù)據(jù)存儲(chǔ)成本,讓大數(shù)據(jù)更易于使用。在隨后幾年里,大數(shù)據(jù)數(shù)量進(jìn)一步呈爆炸式增長(zhǎng)。時(shí)至今日,全世界的“用戶”— 不僅有人,還有機(jī)器 — 仍在持續(xù)生成海量數(shù)據(jù)。
隨著物聯(lián)網(wǎng) (IoT) 的興起,如今越來(lái)越多的設(shè)備接入了互聯(lián)網(wǎng),它們大量收集客戶的使用模式和產(chǎn)品性能數(shù)據(jù),而機(jī)器學(xué)習(xí)的出現(xiàn)也進(jìn)一步加速了數(shù)據(jù)量的增長(zhǎng)。
然而,盡管已經(jīng)出現(xiàn)了很長(zhǎng)一段時(shí)間,人們對(duì)大數(shù)據(jù)的利用才剛剛開(kāi)始。今天,云計(jì)算進(jìn)一步釋放了大數(shù)據(jù)的潛力,通過(guò)提供真正的彈性 / 可擴(kuò)展性,它讓開(kāi)發(fā)人員能夠輕松啟動(dòng) Ad Hoc 集群來(lái)測(cè)試數(shù)據(jù)子集。
大數(shù)據(jù)和數(shù)據(jù)分析的優(yōu)勢(shì):
1.大數(shù)據(jù)意味著更多信息,可為您提供更全面的洞察。
2.更全面的洞察意味著更高的可靠性,有助于您開(kāi)發(fā)全新解決方案。
其次,大數(shù)據(jù)還具有大量、高速、多樣化、密度低四大特性。
大量性:大數(shù)據(jù)與傳統(tǒng)數(shù)據(jù)最大的差異在于資料量,資料量遠(yuǎn)大于傳統(tǒng)數(shù)據(jù),例如抖音數(shù)據(jù)流、百度點(diǎn)擊流,面對(duì)的是海量低密度的數(shù)據(jù),大數(shù)據(jù)的數(shù)據(jù)量通常高達(dá)數(shù)十PB。也因?yàn)橘Y料量大,無(wú)法以傳統(tǒng)的方式儲(chǔ)存處理,因此衍生出大數(shù)據(jù)這一新興科學(xué)。
高速性:大數(shù)據(jù)與傳統(tǒng)數(shù)據(jù)最大的不同點(diǎn),就是生成速度快。由于網(wǎng)際網(wǎng)路興起與資訊設(shè)備普及,以用戶突破20億人的臉書(shū)為例,如果每個(gè)用戶每天發(fā)一條消息,就會(huì)有20億筆資料。每一個(gè)人隨時(shí)隨地都可以創(chuàng)造數(shù)據(jù),數(shù)據(jù)生成的速度已非過(guò)去可比擬。
多樣性:多樣化是指可用的數(shù)據(jù)類型眾多,隨著大數(shù)據(jù)的興起,文本、音頻和視頻等數(shù)據(jù)類型不斷涌現(xiàn),它們需要經(jīng)過(guò)額外的預(yù)處理操作才能真正提供洞察和支持性元數(shù)據(jù)。由于形式多元復(fù)雜,大數(shù)據(jù)儲(chǔ)存也需要不同于傳統(tǒng)數(shù)據(jù)的儲(chǔ)存技術(shù)。
密度低:數(shù)據(jù)價(jià)值密度相對(duì)較低,隨著互聯(lián)網(wǎng)以及物聯(lián)網(wǎng)的廣泛應(yīng)用,信息感知無(wú)處不在,信息海量,但價(jià)值密度較低。以視頻為例,一小時(shí)的視頻,在不間斷的監(jiān)控過(guò)程中,可能有用的數(shù)據(jù)僅僅只有一兩秒。
大數(shù)據(jù)的挑戰(zhàn)
1.安全挑戰(zhàn)
盡管大數(shù)據(jù)由于應(yīng)用范圍廣泛,已成為各領(lǐng)域的發(fā)展趨勢(shì),但數(shù)據(jù)的公布有時(shí)會(huì)伴隨使用者隱私的曝光,比如FaceBook資料外泄、Google+個(gè)人外泄風(fēng)波等因數(shù)據(jù)外泄而引發(fā)隱私問(wèn)題的事件層出不窮。用戶的哪些數(shù)據(jù)是可以獲取、哪些是不允許讀取,始終存在侵犯用戶隱私的法律風(fēng)險(xiǎn)。
2..技術(shù)創(chuàng)新
大數(shù)據(jù)需要從底層芯片到基礎(chǔ)軟件再到應(yīng)用分析軟件等信息產(chǎn)業(yè)全產(chǎn)業(yè)鏈的支撐,無(wú)論是新型計(jì)算平臺(tái)、分布式計(jì)算架構(gòu),還是大數(shù)據(jù)處理、分析和呈現(xiàn)方面與國(guó)外均存在較大差距,對(duì)開(kāi)源技術(shù)和相關(guān)生態(tài)系統(tǒng)的影響力仍然較弱,總體上難以滿足各行各業(yè)大數(shù)據(jù)應(yīng)用需求。
3.成本過(guò)高
運(yùn)營(yíng)商需要處理的數(shù)據(jù)量巨大,基本都是以PB為單位,處理這些數(shù)據(jù)需要巨大的投入。
4.實(shí)時(shí)性
具有實(shí)時(shí)性的數(shù)據(jù)才有價(jià)值,存儲(chǔ)的數(shù)據(jù)數(shù)據(jù)時(shí)間越長(zhǎng),數(shù)據(jù)的價(jià)值就越低。在如今這個(gè)快節(jié)奏的社會(huì),每一天的市場(chǎng)都瞬息萬(wàn)變,品牌商通過(guò)大數(shù)據(jù)分析用戶的需求,如果得到的用戶數(shù)據(jù)太過(guò)陳舊,參考這些數(shù)據(jù)來(lái)規(guī)劃產(chǎn)品的方向,可能會(huì)對(duì)企業(yè)的發(fā)展造成毀滅性的打擊。
無(wú)論哪個(gè)行業(yè),想要在當(dāng)今的形勢(shì)下取得成功,都必須能夠不斷地從數(shù)據(jù)中挖掘業(yè)務(wù)價(jià)值,因此數(shù)據(jù)的保護(hù)離不開(kāi)存儲(chǔ)器,當(dāng)下市面上用于大數(shù)據(jù)的存儲(chǔ)器主要有固態(tài)硬盤(pán),混合硬盤(pán),傳統(tǒng)硬盤(pán)。
固態(tài)硬盤(pán)(SSD),由控制單元和存儲(chǔ)單元,組成。固態(tài)硬盤(pán)的接口規(guī)格、定義、功能和用途與普通硬盤(pán)相同,形狀和尺寸也與普通硬盤(pán)相同。廣泛應(yīng)用于軍事、車(chē)輛、工業(yè)控制、視頻監(jiān)控、網(wǎng)絡(luò)監(jiān)控、網(wǎng)絡(luò)終端、電力、醫(yī)療、航空、導(dǎo)航設(shè)備等領(lǐng)域。
優(yōu)點(diǎn):讀寫(xiě)速度快;震動(dòng);低功耗。無(wú)噪音;工作溫度范圍廣;缺點(diǎn):容量??;壽命有限;價(jià)格高。
混合硬盤(pán)是一種由傳統(tǒng)硬盤(pán)和閃存模塊組成的大容量存儲(chǔ)設(shè)備。閃存處理存儲(chǔ)器中最常寫(xiě)入或恢復(fù)的數(shù)據(jù)。許多公司都在提供不同的技術(shù),他們希望這些技術(shù)能在高端系統(tǒng)中流行起來(lái),特別是筆記本電腦和掌上電腦。
與傳統(tǒng)硬盤(pán)相比,混合硬盤(pán)具有許多優(yōu)勢(shì):更快的數(shù)據(jù)存儲(chǔ)和恢復(fù)應(yīng)用程序,如文字處理器;縮短系統(tǒng)啟動(dòng)時(shí)間;降低功耗;減少熱量產(chǎn)生;延長(zhǎng)硬盤(pán)壽命;筆記本電腦和筆記本電腦電池壽命;降低噪音水平:
傳統(tǒng)硬盤(pán)指的是機(jī)械硬盤(pán)(HDD),電腦最基本的內(nèi)存,我們常說(shuō)電腦硬盤(pán)C盤(pán),D盤(pán)是磁盤(pán)分區(qū),屬于硬盤(pán)。目前普通硬盤(pán)的容量有80G、128g、160g、256g、320g、500g、750g、1TB、2TB等,按容量可分為3.5英寸、2.5英寸、1.8英寸、5400rpm/7200rpm/10000rpm等。
通過(guò)物聯(lián)網(wǎng)產(chǎn)生、收集海量的數(shù)據(jù)存儲(chǔ)于云平臺(tái),再通過(guò)大數(shù)據(jù)分析,甚至更高形式的人工智能為人類的生產(chǎn)活動(dòng),生活所需提供更好的服務(wù),這一切所產(chǎn)生的數(shù)據(jù)承載者——存儲(chǔ)器,在第四次工業(yè)革命進(jìn)化的方向中,存儲(chǔ)行業(yè)也將是一顆亮眼的星。
大數(shù)據(jù)技術(shù)發(fā)展史:大數(shù)據(jù)的前世今生
今天我們常說(shuō)的大數(shù)據(jù)技術(shù),其實(shí)起源于Google在2004年前后發(fā)表的三篇論文,也就是我們經(jīng)常聽(tīng)到的“三駕馬車(chē)”,分別是分布式文件系統(tǒng)GFS、大數(shù)據(jù)分布式計(jì)算框架MapReduce和NoSQL數(shù)據(jù)庫(kù)系統(tǒng)BigTable。
你知道,搜索引擎主要就做兩件事情,一個(gè)是網(wǎng)頁(yè)抓取,一個(gè)是索引構(gòu)建,而在這個(gè)過(guò)程中,有大量的數(shù)據(jù)需要存儲(chǔ)和計(jì)算。這“三駕馬車(chē)”其實(shí)就是用來(lái)解決這個(gè)問(wèn)題的,你從介紹中也能看出來(lái),一個(gè)文件系統(tǒng)、一個(gè)計(jì)算框架、一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)。
現(xiàn)在你聽(tīng)到分布式、大數(shù)據(jù)之類的詞,肯定一點(diǎn)兒也不陌生。但你要知道,在2004年那會(huì)兒,整個(gè)互聯(lián)網(wǎng)還處于懵懂時(shí)代,Google發(fā)布的論文實(shí)在是讓業(yè)界為之一振,大家恍然大悟,原來(lái)還可以這么玩。
因?yàn)槟莻€(gè)時(shí)間段,大多數(shù)公司的關(guān)注點(diǎn)其實(shí)還是聚焦在單機(jī)上,在思考如何提升單機(jī)的性能,尋找更貴更好的服務(wù)器。而Google的思路是部署一個(gè)大規(guī)模的服務(wù)器集群,通過(guò)分布式的方式將海量數(shù)據(jù)存儲(chǔ)在這個(gè)集群上,然后利用集群上的所有機(jī)器進(jìn)行數(shù)據(jù)計(jì)算。 這樣,Google其實(shí)不需要買(mǎi)很多很貴的服務(wù)器,它只要把這些普通的機(jī)器組織到一起,就非常厲害了。
當(dāng)時(shí)的天才程序員,也是Lucene開(kāi)源項(xiàng)目的創(chuàng)始人Doug Cutting正在開(kāi)發(fā)開(kāi)源搜索引擎Nutch,閱讀了Google的論文后,他非常興奮,緊接著就根據(jù)論文原理初步實(shí)現(xiàn)了類似GFS和MapReduce的功能。
兩年后的2006年,Doug Cutting將這些大數(shù)據(jù)相關(guān)的功能從Nutch中分離了出來(lái),然后啟動(dòng)了一個(gè)獨(dú)立的項(xiàng)目專門(mén)開(kāi)發(fā)維護(hù)大數(shù)據(jù)技術(shù),這就是后來(lái)赫赫有名的Hadoop,主要包括Hadoop分布式文件系統(tǒng)HDFS和大數(shù)據(jù)計(jì)算引擎MapReduce。
當(dāng)我們回顧軟件開(kāi)發(fā)的歷史,包括我們自己開(kāi)發(fā)的軟件,你會(huì)發(fā)現(xiàn),有的軟件在開(kāi)發(fā)出來(lái)以后無(wú)人問(wèn)津或者寥寥數(shù)人使用,這樣的軟件其實(shí)在所有開(kāi)發(fā)出來(lái)的軟件中占大多數(shù)。而有的軟件則可能會(huì)開(kāi)創(chuàng)一個(gè)行業(yè),每年創(chuàng)造數(shù)百億美元的價(jià)值,創(chuàng)造百萬(wàn)計(jì)的就業(yè)崗位,這些軟件曾經(jīng)是Windows、Linux、Java,而現(xiàn)在這個(gè)名單要加上Hadoop的名字。
如果有時(shí)間,你可以簡(jiǎn)單瀏覽下Hadoop的代碼,這個(gè)純用Java編寫(xiě)的軟件其實(shí)并沒(méi)有什么高深的技術(shù)難點(diǎn),使用的也都是一些最基礎(chǔ)的編程技巧,也沒(méi)有什么出奇之處,但是它卻給社會(huì)帶來(lái)巨大的影響,甚至帶動(dòng)一場(chǎng)深刻的科技革命,推動(dòng)了人工智能的發(fā)展與進(jìn)步。
我覺(jué)得,我們?cè)谧鲕浖_(kāi)發(fā)的時(shí)候,也可以多思考一下,我們所開(kāi)發(fā)軟件的價(jià)值點(diǎn)在哪里?真正需要使用軟件實(shí)現(xiàn)價(jià)值的地方在哪里?你應(yīng)該關(guān)注業(yè)務(wù)、理解業(yè)務(wù),有價(jià)值導(dǎo)向,用自己的技術(shù)為公司創(chuàng)造真正的價(jià)值,進(jìn)而實(shí)現(xiàn)自己的人生價(jià)值。而不是整天埋頭在需求說(shuō)明文檔里,做一個(gè)沒(méi)有思考的代碼機(jī)器人。
Hadoop發(fā)布之后,Yahoo很快就用了起來(lái)。大概又過(guò)了一年到了2007年,百度和阿里巴巴也開(kāi)始使用Hadoop進(jìn)行大數(shù)據(jù)存儲(chǔ)與計(jì)算。
2008年,Hadoop正式成為Apache的頂級(jí)項(xiàng)目,后來(lái)Doug Cutting本人也成為了Apache基金會(huì)的主席。自此,Hadoop作為軟件開(kāi)發(fā)領(lǐng)域的一顆明星冉冉升起。
同年,專門(mén)運(yùn)營(yíng)Hadoop的商業(yè)公司Cloudera成立,Hadoop得到進(jìn)一步的商業(yè)支持。
這個(gè)時(shí)候,Yahoo的一些人覺(jué)得用MapReduce進(jìn)行大數(shù)據(jù)編程太麻煩了,于是便開(kāi)發(fā)了Pig。Pig是一種腳本語(yǔ)言,使用類SQL的語(yǔ)法,開(kāi)發(fā)者可以用Pig腳本描述要對(duì)大數(shù)據(jù)集上進(jìn)行的操作,Pig經(jīng)過(guò)編譯后會(huì)生成MapReduce程序,然后在Hadoop上運(yùn)行。
編寫(xiě)Pig腳本雖然比直接MapReduce編程容易,但是依然需要學(xué)習(xí)新的腳本語(yǔ)法。于是Facebook又發(fā)布了Hive。Hive支持使用SQL語(yǔ)法來(lái)進(jìn)行大數(shù)據(jù)計(jì)算,比如說(shuō)你可以寫(xiě)個(gè)Select語(yǔ)句進(jìn)行數(shù)據(jù)查詢,然后Hive會(huì)把SQL語(yǔ)句轉(zhuǎn)化成MapReduce的計(jì)算程序。
這樣,熟悉數(shù)據(jù)庫(kù)的數(shù)據(jù)分析師和工程師便可以無(wú)門(mén)檻地使用大數(shù)據(jù)進(jìn)行數(shù)據(jù)分析和處理了。Hive出現(xiàn)后極大程度地降低了Hadoop的使用難度,迅速得到開(kāi)發(fā)者和企業(yè)的追捧。據(jù)說(shuō),2011年的時(shí)候,F(xiàn)acebook大數(shù)據(jù)平臺(tái)上運(yùn)行的作業(yè)90%都來(lái)源于Hive。
隨后,眾多Hadoop周邊產(chǎn)品開(kāi)始出現(xiàn),大數(shù)據(jù)生態(tài)體系逐漸形成,其中包括:專門(mén)將關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入導(dǎo)出到Hadoop平臺(tái)的Sqoop;針對(duì)大規(guī)模日志進(jìn)行分布式收集、聚合和傳輸?shù)腇lume;MapReduce工作流調(diào)度引擎Oozie等。
在Hadoop早期,MapReduce既是一個(gè)執(zhí)行引擎,又是一個(gè)資源調(diào)度框架,服務(wù)器集群的資源調(diào)度管理由MapReduce自己完成。但是這樣不利于資源復(fù)用,也使得MapReduce非常臃腫。于是一個(gè)新項(xiàng)目啟動(dòng)了,將MapReduce執(zhí)行引擎和資源調(diào)度分離開(kāi)來(lái),這就是Yarn。2012年,Yarn成為一個(gè)獨(dú)立的項(xiàng)目開(kāi)始運(yùn)營(yíng),隨后被各類大數(shù)據(jù)產(chǎn)品支持,成為大數(shù)據(jù)平臺(tái)上最主流的資源調(diào)度系統(tǒng)。
同樣是在2012年,UC伯克利AMP實(shí)驗(yàn)室(Algorithms、Machine和People的縮寫(xiě))開(kāi)發(fā)的Spark開(kāi)始嶄露頭角。當(dāng)時(shí)AMP實(shí)驗(yàn)室的馬鐵博士發(fā)現(xiàn)使用MapReduce進(jìn)行機(jī)器學(xué)習(xí)計(jì)算的時(shí)候性能非常差,因?yàn)闄C(jī)器學(xué)習(xí)算法通常需要進(jìn)行很多次的迭代計(jì)算,而MapReduce每執(zhí)行一次Map和Reduce計(jì)算都需要重新啟動(dòng)一次作業(yè),帶來(lái)大量的無(wú)謂消耗。還有一點(diǎn)就是MapReduce主要使用磁盤(pán)作為存儲(chǔ)介質(zhì),而2012年的時(shí)候,內(nèi)存已經(jīng)突破容量和成本限制,成為數(shù)據(jù)運(yùn)行過(guò)程中主要的存儲(chǔ)介質(zhì)。Spark一經(jīng)推出,立即受到業(yè)界的追捧,并逐步替代MapReduce在企業(yè)應(yīng)用中的地位。
一般說(shuō)來(lái),像MapReduce、Spark這類計(jì)算框架處理的業(yè)務(wù)場(chǎng)景都被稱作批處理計(jì)算,因?yàn)樗鼈兺ǔa槍?duì)以“天”為單位產(chǎn)生的數(shù)據(jù)進(jìn)行一次計(jì)算,然后得到需要的結(jié)果,這中間計(jì)算需要花費(fèi)的時(shí)間大概是幾十分鐘甚至更長(zhǎng)的時(shí)間。因?yàn)橛?jì)算的數(shù)據(jù)是非在線得到的實(shí)時(shí)數(shù)據(jù),而是歷史數(shù)據(jù),所以這類計(jì)算也被稱為大數(shù)據(jù)離線計(jì)算。
而在大數(shù)據(jù)領(lǐng)域,還有另外一類應(yīng)用場(chǎng)景,它們需要對(duì)實(shí)時(shí)產(chǎn)生的大量數(shù)據(jù)進(jìn)行即時(shí)計(jì)算,比如對(duì)于遍布城市的監(jiān)控?cái)z像頭進(jìn)行人臉識(shí)別和嫌犯追蹤。這類計(jì)算稱為大數(shù)據(jù)流計(jì)算,相應(yīng)地,有Storm、Flink、Spark Streaming等流計(jì)算框架來(lái)滿足此類大數(shù)據(jù)應(yīng)用的場(chǎng)景。 流式計(jì)算要處理的數(shù)據(jù)是實(shí)時(shí)在線產(chǎn)生的數(shù)據(jù),所以這類計(jì)算也被稱為大數(shù)據(jù)實(shí)時(shí)計(jì)算。
在典型的大數(shù)據(jù)的業(yè)務(wù)場(chǎng)景下,數(shù)據(jù)業(yè)務(wù)最通用的做法是,采用批處理的技術(shù)處理歷史全量數(shù)據(jù),采用流式計(jì)算處理實(shí)時(shí)新增數(shù)據(jù)。而像Flink這樣的計(jì)算引擎,可以同時(shí)支持流式計(jì)算和批處理計(jì)算。
除了大數(shù)據(jù)批處理和流處理,NoSQL系統(tǒng)處理的主要也是大規(guī)模海量數(shù)據(jù)的存儲(chǔ)與訪問(wèn),所以也被歸為大數(shù)據(jù)技術(shù)。 NoSQL曾經(jīng)在2011年左右非?;鸨?,涌現(xiàn)出HBase、Cassandra等許多優(yōu)秀的產(chǎn)品,其中HBase是從Hadoop中分離出來(lái)的、基于HDFS的NoSQL系統(tǒng)。
我們回顧軟件發(fā)展的歷史會(huì)發(fā)現(xiàn),差不多類似功能的軟件,它們出現(xiàn)的時(shí)間都非常接近,比如Linux和Windows都是在90年代初出現(xiàn),Java開(kāi)發(fā)中的各類MVC框架也基本都是同期出現(xiàn),Android和iOS也是前腳后腳問(wèn)世。2011年前后,各種NoSQL數(shù)據(jù)庫(kù)也是層出不群,我也是在那個(gè)時(shí)候參與開(kāi)發(fā)了阿里巴巴自己的NoSQL系統(tǒng)。
事物發(fā)展有自己的潮流和規(guī)律,當(dāng)你身處潮流之中的時(shí)候,要緊緊抓住潮流的機(jī)會(huì),想辦法脫穎而出,即使沒(méi)有成功,也會(huì)更加洞悉時(shí)代的脈搏,收獲珍貴的知識(shí)和經(jīng)驗(yàn)。而如果潮流已經(jīng)退去,這個(gè)時(shí)候再去往這個(gè)方向上努力,只會(huì)收獲迷茫與壓抑,對(duì)時(shí)代、對(duì)自己都沒(méi)有什么幫助。
但是時(shí)代的浪潮猶如海灘上的浪花,總是一浪接著一浪,只要你站在海邊,身處這個(gè)行業(yè)之中,下一個(gè)浪潮很快又會(huì)到來(lái)。你需要敏感而又深刻地去觀察,略去那些浮躁的泡沫,抓住真正潮流的機(jī)會(huì),奮力一搏,不管成敗,都不會(huì)遺憾。
正所謂在歷史前進(jìn)的邏輯中前進(jìn),在時(shí)代發(fā)展的潮流中發(fā)展。通俗的說(shuō),就是要在風(fēng)口中飛翔。
上面我講的這些基本上都可以歸類為大數(shù)據(jù)引擎或者大數(shù)據(jù)框架。而大數(shù)據(jù)處理的主要應(yīng)用場(chǎng)景包括數(shù)據(jù)分析、數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)。數(shù)據(jù)分析主要使用Hive、Spark SQL等SQL引擎完成;數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)則有專門(mén)的機(jī)器學(xué)習(xí)框架TensorFlow、Mahout以及MLlib等,內(nèi)置了主要的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法。
此外,大數(shù)據(jù)要存入分布式文件系統(tǒng)(HDFS),要有序調(diào)度MapReduce和Spark作業(yè)執(zhí)行,并能把執(zhí)行結(jié)果寫(xiě)入到各個(gè)應(yīng)用系統(tǒng)的數(shù)據(jù)庫(kù)中,還需要有一個(gè)大數(shù)據(jù)平臺(tái)整合所有這些大數(shù)據(jù)組件和企業(yè)應(yīng)用系統(tǒng)。
圖中的所有這些框架、平臺(tái)以及相關(guān)的算法共同構(gòu)成了大數(shù)據(jù)的技術(shù)體系,我將會(huì)在專欄后面逐個(gè)分析,幫你能夠?qū)Υ髷?shù)據(jù)技術(shù)原理和應(yīng)用算法構(gòu)建起完整的知識(shí)體系,進(jìn)可以專職從事大數(shù)據(jù)開(kāi)發(fā),退可以在自己的應(yīng)用開(kāi)發(fā)中更好地和大數(shù)據(jù)集成,掌控自己的項(xiàng)目。
希望對(duì)您有所幫助!~
一、B樹(shù)的起源
B樹(shù),最早是由德國(guó)計(jì)算機(jī)科學(xué)家Rudolf Bayer等人于1972年在論文 《Organization and Maintenance of Large Ordered Indexes》提出的,不過(guò)我去看了看原文,發(fā)現(xiàn)作者也沒(méi)有解釋為什么就叫B-trees了,所以把B樹(shù)的B,簡(jiǎn)單地解釋為Balanced或者Binary都不是特別嚴(yán)謹(jǐn),也許作者就是取其名字Bayer的首字母命名的也說(shuō)不定啊……
二、B樹(shù)長(zhǎng)啥樣
還是直接看圖比較清楚,圖中所示,B樹(shù)事實(shí)上是一種平衡的多叉查找樹(shù),也就是說(shuō)最多可以開(kāi)m個(gè)叉(m=2),我們稱之為m階b樹(shù),為了體現(xiàn)本博客的良心之處,不同于其他地方都能看到2階B樹(shù),這里特意畫(huà)了一棵5階B樹(shù) 。
總的來(lái)說(shuō),m階B樹(shù)滿足以下條件:
每個(gè)節(jié)點(diǎn)至多可以擁有m棵子樹(shù)
根節(jié)點(diǎn),只有至少有2個(gè)節(jié)點(diǎn)(要么極端情況,就是一棵樹(shù)就一個(gè)根節(jié)點(diǎn),單細(xì)胞生物,即是根,也是葉,也是樹(shù))
非根非葉的節(jié)點(diǎn)至少有的Ceil(m/2)個(gè)子樹(shù)(Ceil表示向上取整,圖中5階B樹(shù),每個(gè)節(jié)點(diǎn)至少有3個(gè)子樹(shù),也就是至少有3個(gè)叉)
非葉節(jié)點(diǎn)中的信息包括[n,A0,K1,A1,K2,A2,…,Kn,An],,其中n表示該節(jié)點(diǎn)中保存的關(guān)鍵字個(gè)數(shù),K為關(guān)鍵字且KiKi+1,A為指向子樹(shù)根節(jié)點(diǎn)的指針
從根到葉子的每一條路徑都有相同的長(zhǎng)度,也就是說(shuō),葉子節(jié)在相同的層,并且這些節(jié)點(diǎn)不帶信息,實(shí)際上這些節(jié)點(diǎn)就表示找不到指定的值,也就是指向這些節(jié)點(diǎn)的指針為空
B樹(shù)的查詢過(guò)程和二叉排序樹(shù)比較類似,從根節(jié)點(diǎn)依次比較每個(gè)結(jié)點(diǎn),因?yàn)槊總€(gè)節(jié)點(diǎn)中的關(guān)鍵字和左右子樹(shù)都是有序的,所以只要比較節(jié)點(diǎn)中的關(guān)鍵字,或者沿著指針就能很快地找到指定的關(guān)鍵字,如果查找失敗,則會(huì)返回葉子節(jié)點(diǎn),即空指針
例如查詢圖中字母表中的K
從根節(jié)點(diǎn)P開(kāi)始,K的位置在P之前,進(jìn)入左側(cè)指針
左子樹(shù)中,依次比較C、F、J、M,發(fā)現(xiàn)K在J和M之間
沿著J和M之間的指針,繼續(xù)訪問(wèn)子樹(shù),并依次進(jìn)行比較,發(fā)現(xiàn)第一個(gè)關(guān)鍵字K即為指定查找的值
三、Plus版——B+樹(shù)
作為B樹(shù)的加強(qiáng)版,B+樹(shù)與B樹(shù)的差異在于:
有n棵子樹(shù)的節(jié)點(diǎn)含有n個(gè)關(guān)鍵字(也有認(rèn)為是n-1個(gè)關(guān)鍵字)
所有的葉子節(jié)點(diǎn)包含了全部的關(guān)鍵字,及指向含這些關(guān)鍵字記錄的指針,且葉子節(jié)點(diǎn)本身根據(jù)關(guān)鍵字自小而大順序連接
非葉子節(jié)點(diǎn)可以看成索引部分,節(jié)點(diǎn)中僅含有其子樹(shù)(根節(jié)點(diǎn))中的最大(或最?。╆P(guān)鍵字
請(qǐng)點(diǎn)擊輸入圖片描述
B+樹(shù)的查找過(guò)程,與B樹(shù)類似,只不過(guò)查找時(shí),如果在非葉子節(jié)點(diǎn)上的關(guān)鍵字等于給定值,并不終止,而是繼續(xù)沿著指針直到葉子節(jié)點(diǎn)位置。因此在B+樹(shù),不管查找成功與否,每次查找都是走了一條從根到葉子節(jié)點(diǎn)的路徑