天天看點

Google發表的三篇論文是如何影響大資料行業發展的?google為什麼釋出這三篇文論?2004 年的大資料發展-萌芽期天才程式員-Doug Cutting閃亮登場軟體的價值點2007-2008年 發展期Facebook 又釋出了 Hive排程引擎Yarn引領潮流Spark嶄露頭角大資料流計算來了NoSQL的發展曆史竟驚人的相似最後

google早起最早盈利的項目就是搜尋引擎,那技術如何持續發展成為google面對的問題。

搜尋引擎主要就做兩件事情,一個是網頁抓取,一個是索引建構,而在這個過程中,有大量

的資料需要存儲和計算。

google 在 2004 年前後發表的三篇論文,也就是我們經常聽到的“三駕馬車”,分别是分布式檔案系統 gfs、大資料分布式計算架構mapreduce 和 nosql 資料庫系統 bigtable。

這“三駕馬車”其實就是用來解決這個問題的,

一個檔案系統、一個計算架構、一個資料庫系統。

現在你聽到分布式、大資料之類的詞,肯定一點兒也不陌生。

Google發表的三篇論文是如何影響大資料行業發展的?google為什麼釋出這三篇文論?2004 年的大資料發展-萌芽期天才程式員-Doug Cutting閃亮登場軟體的價值點2007-2008年 發展期Facebook 又釋出了 Hive排程引擎Yarn引領潮流Spark嶄露頭角大資料流計算來了NoSQL的發展曆史竟驚人的相似最後

2004年整個網際網路還處于懵懂時代,google 釋出的論文實在是讓業界為之一振,大家恍然大悟,原來還可以這麼玩。

因為那個時間段,大多數公司的關注點其實還是聚焦在單機上,在思考如何提升單機的性能,尋找更貴更好的伺服器。而 google 的思路是部署一個大規模的伺服器叢集,通過分布式的方式将海量資料存儲在這個叢集上,然後利用叢集上的所有機器進行資料計算。 這樣,google 其實不需要買很多很貴的伺服器,它隻要把這些普通的機器組織到一起,就非常厲害了。

彼時他正在開發開源搜尋引擎 nutch,閱讀了 google 的論文後,他非常興奮,緊接着就根據論文原理初步實作了類似 gfs 和 mapreduce 的功能。兩年後的 2006 年,doug cutting 将這些大資料相關的功能從 nutch 中分離了出來,然後啟動了一個獨立的項目專門開發維護大資料技術,這就是後來赫赫有名的 hadoop,主要包括 hadoop 分布式檔案系統 hdfs 和大資料計算引擎 mapreduce。

當我們回顧軟體開發的曆史,包括我們自己開發的軟體,你會發現,有的軟體在開發出來以後無人問津或者寥寥數人使用,這樣的軟體其實在所有開發出來的軟體中占大多數。而有的軟體則可能會開創一個行業,每年創造數百億美元的價值,創造百萬計的就業崗位,這些軟體曾經是 windows、linux、java,而現在這個名單要加上 hadoop 的名字。如果有時間,你可以簡單浏覽下 hadoop 的代碼,這個純用 java 編寫的軟體其實并沒有什麼高深的技術難點,使用的也都是一些最基礎的程式設計技巧,也沒有什麼出奇之處,但是它卻給社會帶來巨大的影響,甚至帶動一場深刻的科技革命,推動了人工智能的發展與進步。

Google發表的三篇論文是如何影響大資料行業發展的?google為什麼釋出這三篇文論?2004 年的大資料發展-萌芽期天才程式員-Doug Cutting閃亮登場軟體的價值點2007-2008年 發展期Facebook 又釋出了 Hive排程引擎Yarn引領潮流Spark嶄露頭角大資料流計算來了NoSQL的發展曆史竟驚人的相似最後

多思考一下,我們所開發軟體的價值點在哪裡?真正需要使用軟體實作價值的地方在哪裡?你應該關注業務、了解業務,有價值導向,用自己的技術為公司創造真正的價值,進而實作自己的人生價值。而不是整天埋頭在需求說明文檔裡,做一個沒有思考的代碼機器人。

hadoop 釋出之後,yahoo 很快就用了起來。大概又過了一年到了 2007 年,百度和阿裡巴巴也開始使用 hadoop 進行大資料存儲與計算。2008 年,hadoop 正式成為 apache 的頂級項目,後來 doug cutting 本人也成為了apache 基金會的主席。自此,hadoop 作為軟體開發領域的一顆明星冉冉升起。同年,專門營運 hadoop 的商業公司 cloudera 成立,hadoop 得到進一步的商業支援。這個時候,yahoo 的一些人覺得用 mapreduce 進行大資料程式設計太麻煩了,于是便開發了pig。pig 是一種腳本語言,使用類 sql 的文法,開發者可以用 pig 腳本描述要對大資料集上進行的操作,pig 經過編譯後會生成 mapreduce 程式,然後在 hadoop 上運作。編寫 pig 腳本雖然比直接 mapreduce 程式設計容易,但是依然需要學習新的腳本文法。

hive 支援使用 sql 文法來進行大資料計算,比如說你可以寫個 select 語句進行資料查詢,然後 hive 會把 sql 語句轉 成 ma reduce 的計算程式。這樣,熟悉資料庫的資料分析師和工程師便可以無門檻地使用大資料進行資料分 和處理了。hive 出現後極大 度地降低了 hadoop 的使用難度,迅速得到開發者和企業的追捧。

Google發表的三篇論文是如何影響大資料行業發展的?google為什麼釋出這三篇文論?2004 年的大資料發展-萌芽期天才程式員-Doug Cutting閃亮登場軟體的價值點2007-2008年 發展期Facebook 又釋出了 Hive排程引擎Yarn引領潮流Spark嶄露頭角大資料流計算來了NoSQL的發展曆史竟驚人的相似最後

2011 年的時候,facebook 大資料平台上運作的作業 90% 都來源于 hive。随後,衆多 h doop 周邊産品開始出現,大資料生态體系逐漸形成,其中包括:專門将關系資料庫中的資料導入導出到 hadoop 平台的 sqoop;針對大規模日志進行分布式收集、聚合和傳輸的 flume;mapreduce 工作流排程引擎 oozie 等。在 hadoop 早期,mapreduce 既是一個執行引擎,又是一個資源排程架構,伺服器叢集的資源排程管理由 mapreduce 自己完成。但是這樣不利于資源複用,也使得mapreduce 非常臃腫。于是一個新項目啟動了,将 mapreduce 執行引擎和資源排程分離開來,這就是 yarn。2012 年,yarn 成為一個獨立的項目開始營運,随後被各類大資料産品支援,成為大資料平台上最主流的資源排程系統。

2012 年,uc 伯克利 amp 實驗室(algorithms、machine 和 people 的縮寫)開發的 spark 開始嶄露頭角。當時 amp 實驗室的馬鐵博士發現使用 mapreduce 進行機器學習計算的時候性能非常差,因為機器學習算法通常需要進行很多次的疊代計算,而mapreduce 每執行一次 map 和 reduce 計算都需要重新啟動一次作業,帶來大量的無謂消耗。還有一點就是 mapreduce 主要使用磁盤作為存儲媒體,而 2012 年的時候,記憶體已經突破容量和成本限制,成為資料運作過程中主要的存儲媒體。spark 一經推出,立即受到業界的追捧,并逐漸替代 mapreduce 在企業應用中的地位。一般說來,像 mapreduce、spark 這類計算架構處理的業務場景都被稱作批處理計算,因為它們通常針對以“天”為機關産生的資料進行一次計算,然後得到需要的結果,這中間計算需要花費的時間大概是幾十分鐘甚至更長的時間。因為計算的資料是非線上得到的實時資料,而是曆史資料,是以這類計算也被稱為大資料離線計算。

Google發表的三篇論文是如何影響大資料行業發展的?google為什麼釋出這三篇文論?2004 年的大資料發展-萌芽期天才程式員-Doug Cutting閃亮登場軟體的價值點2007-2008年 發展期Facebook 又釋出了 Hive排程引擎Yarn引領潮流Spark嶄露頭角大資料流計算來了NoSQL的發展曆史竟驚人的相似最後

在大資料領域,還有另外一類應用場景,它們需要對實時産生的大量資料進行即時計算,比如對于遍布城市的監控攝像頭進行人臉識别和嫌犯追蹤。這類計算稱為大資料流計算,應地,有 storm、flink、spark streaming 等流計算架構來滿足此類大資料應用的場景。流式計算要處理的資料是實時線上産生的資料,是以這類計算也被稱為大資料實時計算。在典型的大資料的業務場景下,資料業務最通用的做法是,采用批處理的技術處理曆史全量資料,采用流式計算處理實時新增資料。而像 flink 這樣的計算引擎,可以同時支援流式計算和批處理計算。

Google發表的三篇論文是如何影響大資料行業發展的?google為什麼釋出這三篇文論?2004 年的大資料發展-萌芽期天才程式員-Doug Cutting閃亮登場軟體的價值點2007-2008年 發展期Facebook 又釋出了 Hive排程引擎Yarn引領潮流Spark嶄露頭角大資料流計算來了NoSQL的發展曆史竟驚人的相似最後

除了大資料批處理和流處理,nosql 系統處理的主要也是大規模海量資料的存儲與通路,是以也被歸為大資料技術。 nosql 曾經在 2011 年左右非常火爆,湧現出 hbase、cassandra 等許多優秀的産品,其中 hbase 是從 hadoop 中分離出來的、基于 hdfs 的nosql 系統。

我們回顧軟體發展的曆史會發現,差不多類似功能的軟體,它們出現的時間都非常接近,比如 linux 和 windows 都是在 90 年代初出現,java 開發中的各類 mvc 架構也基本都是同期出現,android 和 ios 也是前腳後腳問世

事物發展有自己的潮流和規律,當你身處潮流之中的時候,要緊緊抓住潮流的機會,想辦法脫穎而出,即使沒有成功,也會更加洞悉時代的脈搏,收獲珍貴的知識和經驗。而如果潮流已經退去,這個時候再去往這個方向上努力,隻會收獲迷茫與壓抑,對時代、對自己都沒有什麼幫助。正如google抓住了這個機會,是以他成功了,他引領了潮流。