我眼中的大數據(一)

来源:https://www.cnblogs.com/hhhnicvscs/archive/2022/09/21/16716060.html
-Advertisement-
Play Games

前言 在正式落地談技術之前,先花一些篇幅說說大數據技術的發展史。我們常說的大數據技術,其實起源於Google在2004年前後發表的三篇論文,分別是分散式文件系統GFS、大數據分散式計算框架MapReduce和NoSQL資料庫系統BigTable(如果大家需要可以留言給我,我可以專門解讀一下)。 一、 ...


前言

在正式落地談技術之前,先花一些篇幅說說大數據技術的發展史。我們常說的大數據技術,其實起源於Google在2004年前後發表的三篇論文,分別是分散式文件系統GFS、大數據分散式計算框架MapReduce和NoSQL資料庫系統BigTable(如果大家需要可以留言給我,我可以專門解讀一下)。


一、從搜索引擎開始

搜索引擎主要就做兩件事情,一個是網頁抓取,一個是索引構建,在這個過程中,有大量的數據需要存儲和計算。當時的大數據其實就是用來解決這個問題的,一個文件系統、一個計算框架、一個資料庫系統。

在2004年那會兒,Google發佈的論文實在是讓業界為之一振,大家恍然大悟,原來還可以這麼玩。因為那個時間段,大多數公司在思考如何提升單機的性能,尋找更貴更好的伺服器。而Google的思路是部署一個大規模的伺服器集群,通過分散式的方式將海量數據存儲在這個集群上,然後利用集群上的所有機器進行數據計算。

當時Lucene開源項目的創始人Doug Cutting正在開發開源搜索引擎Nutch,閱讀了Google的論文後,他非常興奮,緊接著就根據論文原理初步實現了類似GFS和MapReduce的功能。

兩年後的2006年,Doug Cutting將這些大數據相關的功能從Nutch中分離了出來,然後啟動了一個獨立的項目專門開發維護大數據技術,這就是後來赫赫有名的Hadoop,主要包括Hadoop分散式文件系統HDFS和大數據計算引擎MapReduce。

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編程容易,但是依然需要學習新的腳本語法。於是Facebook又發佈了Hive。Hive支持使用SQL語法來進行大數據計算,比如說你可以寫個Select語句進行數據查詢,然後Hive會把SQL語句轉化成MapReduce的計算程式。這樣,熟悉資料庫的數據分析師和工程師便可以無門檻地使用大數據進行數據分析和處理了。Hive出現後極大程度地降低了Hadoop的使用難度,迅速得到開發者和企業的追捧。據說,2011年的時候,Facebook大數據平臺上運行的作業90%都來源於Hive。

在Hadoop早期,MapReduce既是一個執行引擎,又是一個資源調度框架,伺服器集群的資源調度管理由MapReduce自己完成。但是這樣不利於資源復用,也使得MapReduce非常臃腫。於是一個新項目啟動了,將MapReduce執行引擎和資源調度分離開來,這就是Yarn。2012年,Yarn成為一個獨立的項目開始運營,隨後被各類大數據產品支持,成為大數據平臺上最主流的資源調度系統

同樣是在2012年,Spark開始嶄露頭角。當時AMP實驗室的馬鐵博士發現使用MapReduce進行機器學習計算的時候性能非常差,因為機器學習演算法通常需要進行很多次的迭代計算,而MapReduce每執行一次Map和Reduce計算都需要重新啟動一次作業,帶來大量的消耗。還有一點就是MapReduce主要使用磁碟作為存儲介質,而2012年的時候,記憶體已經突破容量和成本限制,成為數據運行過程中主要的存儲介質。Spark一經推出,立即受到業界的追捧,並逐步替代MapReduce在企業應用中的地位。

一般說來,像MapReduce、Spark這類計算框架處理的業務場景都被稱作批處理計算,因為它們通常針對以“天”為單位產生的數據進行一次計算,然後得到需要的結果,這中間計算需要花費的時間大概是幾十分鐘甚至更長的時間。因為計算的數據是非線上得到的實時數據,而是歷史數據,所以這類計算也被稱為大數據離線計算

而在大數據領域,還有另外一類應用場景,它們需要對實時產生的大量數據進行即時計算,比如對於遍佈城市的監控攝像頭進行人臉識別和嫌犯追蹤。這類計算稱為大數據流計算,相應地,有Storm、Flink、Spark Streaming等流計算框架來滿足此類大數據應用的場景。 流式計算要處理的數據是實時線上產生的數據,所以這類計算也被稱為大數據實時計算

在典型的大數據的業務場景下,數據業務最通用的做法是,採用批處理的技術處理歷史全量數據,採用流式計算處理實時新增數據。而像Flink這樣的計算引擎,可以同時支持流式計算和批處理計算。

除了大數據批處理和流處理,NoSQL系統處理的主要也是大規模海量數據的存儲與訪問,所以也被歸為大數據技術。 NoSQL曾經在2011年左右非常火爆,涌現出HBase、Cassandra等許多優秀的產品,其中HBase是從Hadoop中分離出來的、基於HDFS的NoSQL系統。

上面的這些基本上都可以歸類為大數據引擎或者大數據框架。而大數據處理的主要應用場景包括數據分析、數據挖掘與機器學習。數據分析主要使用Hive、Spark SQL等SQL引擎完成;數據挖掘與機器學習則有專門的機器學習框架TensorFlow、Mahout以及MLlib等,內置了主要的機器學習和數據挖掘演算法。

二、結合人工智慧

在過去,受數據採集、存儲、計算能力的限制,只能通過抽樣的方式獲取小部分數據,無法得到完整的、全局的、細節的規律。而現在有了大數據,可以把全部的歷史數據都收集起來,統計其規律,進而預測正在發生的事情

這就是機器學習。

把歷史上人類圍棋對弈的棋譜數據都存儲起來,針對每一種盤面記錄如何落子可以得到更高的贏面。得到這個統計規律以後,就可以利用這個規律用機器和人下棋,每一步都計算落在何處將得到更大的贏面,於是我們就得到了一個會下棋的機器人,這就是前兩年轟動一時的AlphaGo,以壓倒性優勢下贏了人類的頂尖棋手。

再舉個和我們生活更近的例子。把人聊天的對話數據都收集起來,記錄每一次對話的上下文,如果上一句是問今天過得怎麼樣,那麼下一句該如何應對,通過機器學習可以統計出來。將來有人再問今天過得怎麼樣,就可以自動回覆下一句話,於是我們就得到一個會聊天的機器人。Siri、天貓精靈、小愛同學,這樣的語音聊天機器人在機器學習時代已經滿大街都是了。

將人類活動產生的數據,通過機器學習得到統計規律,進而可以模擬人的行為,使機器表現出人類特有的智能,這就是人工智慧AI。

現在我們對待人工智慧還有些不理智的態度,有的人認為人工智慧會越來越強大,將來會統治人類。實際上,稍微瞭解一點人工智慧的原理就會發現,這隻是大數據計算出來的統計規律而已,表現的再智能,也不可能理解這樣做的意義,而有意義才是人類智能的源泉。按目前人工智慧的發展思路,永遠不可能出現超越人類的智能,更不可能統治人類。

大數據從搜索引擎到機器學習,發展思路其實是一脈相承的,就是想發現數據中的規律併為我們所用。所以很多人把數據稱作金礦,大數據應用就是從這座蘊含知識寶藏的金礦中發掘中有商業價值的真金白銀出來。

數據中蘊藏著價值已經是眾所周知的事情了,那麼如何從這些龐大的數據中發掘出我們想要的知識價值,這正是大數據技術目前正在解決的事情,包括大數據存儲與計算,也包括大數據分析、挖掘、機器學習等應用。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • .NET 6 EFCore WebApi 使用 JMeter 進行吞吐量測試 開發環境 VS2022 .NET 6 測試環境 測試工具 介面壓力測試工具:JMeter 資料庫 MySQL 5.7 資料庫和WebApi服務在同一臺伺服器上,JMeter在本人筆記本上。 測試設置 200個線程併發,每個 ...
  • 一、 環境準備 本次配置基於DR負載均衡模式,設置一個VIP(Virtual IP)為19.50.67.173,用戶只需要訪問這個IP地址即可獲得後端服務 其中,負載均衡主機為19.50.67.165(LVS1),備機為 19.50.67.169(LVS2)。Web伺服器A為19.50.67.171 ...
  • forklift Mac版是一款強大的文件管理程式,彌補了Finder文件管理比較單一的功能,強大到能遠程連接Ftp,SFTP,Amazon S3,WebDAV,SMB,NIS,AFP等網路共用服務協議。相對其他文件管理器如Path Finder,forklift mac更加小巧快速。 除此之外Fo ...
  • PowerPoint 無法打開文件 出現的問題 今天下載老師放在學習通的ppt,居然不能打開,記錄一下 點擊修複後出現: 這並不是文件損壞了,而是powerpoint出於安全的考慮,為了保護我們的電腦,不能打開其他電腦的文件。 解決辦法 右鍵選擇屬性,進入常規界面,勾選解除鎖定,點擊引用,點擊確 ...
  • 個人超級電腦是一個新概念,目前這個市場類似上世紀70年的PC革命時代。本篇是回答一位用戶提問,LAXCUS分散式操作系統如何成為一臺“個人超級電腦”。 ...
  • mysql二進位安裝腳本部署 單實例 [[email protected] ~]# mkdir mysql //創建存放腳本目錄 [[email protected] ~]# ls anaconda-ks.cfg mysql [[email protected] ~]# cd mysql/ [[email protected] ...
  • 1.shell命令的執行機制:fork+exec執行命令(任何的shell都會執行) 2.shell中的用戶輸入處理 1 命令行參數:選項、參數 2 運行時輸入 3 read命令: 4 1.基本讀取、 5 2.超時處理-t選項、 6 3.隱藏方式讀取-s選項) 7 4.從文件中讀取 3.shell的 ...
  • 如果現在的我們離開了互聯網,生活會是什麼樣子? 互聯網++++,已經深刻滲透到人們的生活中。 不知道大家有沒有想過?每一個互聯網+結合的背後都是海量的存儲需求。你查看的每一個商品、組建的每一個戰隊、閱讀的每一篇文章,基於互聯網的每一個興趣愛好,都有它的key和value。 在 key-value 數 ...
一周排行
    -Advertisement-
    Play Games
  • Github / Gitee QQ群(1群) : 813100564 / QQ群(2群) : 579033769 視頻教學 介紹 MiniWord .NET Word模板引擎,藉由Word模板和數據簡單、快速生成文件。 Getting Started 安裝 nuget link : https:// ...
  • Array.Sort Array類中相當實用的我認為是Sort方法,相比起冗長的冒泡排序,它的出現讓排序更加的簡化 結果如下: 還可以聲明一個靜態方法用來專門調用指定數組排序,從名為 array 的一維數組中 a 索引處開始,到 b 元素 從小到大排序。 註意: a + b 不能大於 array 的 ...
  • 前言 在上一篇文章CLR類型系統概述里提到,當運行時掛起時, 垃圾回收會執行堆棧遍歷器(stack walker)去拿到堆棧上值類型的大小和堆棧根。這裡我們來翻譯BotR里一篇專門介紹Stackwalking的文章,希望能加深理解。 順便說一句,StackWalker在中文里似乎還沒有統一的翻譯,J ...
  • 使用過 nginx 的小伙伴應該都知道,這個中間件是可以設置跨域的,作為今天的主角,同樣的 反向代理中間件的 YARP 毫無意外也支持了跨域請求設置。 有些小伙伴可能會問了,怎樣才算是跨域呢? 在 HTML 中,一些標簽,例如 img、a 等,還有我們非常熟悉的 Ajax,都是可以指向非本站的資源的 ...
  • 什麼是Git Git 是一個開源的分散式版本控制系統,用於敏捷高效地處理任何或小或大的項目。 Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟體。 Git 與常用的版本控制工具 CVS, Subversion 等不同,它採用了分散式版本庫的 ...
  • 首先CR3是什麼,CR3是一個寄存器,該寄存器內保存有頁目錄表物理地址(PDBR地址),其實CR3內部存放的就是頁目錄表的記憶體基地址,運用CR3切換可實現對特定進程記憶體地址的強制讀寫操作,此類讀寫屬於有痕讀寫,多數驅動保護都會將這個地址改為無效,此時CR3讀寫就失效了,當然如果能找到CR3的正確地址... ...
  • 說明 onlyoffice為一款開源的office線上編輯組件,提供word/excel/ppt編輯保存操作 以下操作均基於centos8系統,officeonly鏡像版本7.1.2.23 鏡像下載地址:https://yunpan.360.cn/surl_y87CKKcPdY4 (提取碼:1f92 ...
  • 二叉樹查找指定的節點 前序查找的思路 1.先判斷當前節點的no是否等於要查找的 2.如果是相等,則返回當前節點 3.如果不等,則判斷當前節點的左子節點是否為空,如果不為空,則遞歸前序查找 4.如果左遞歸前序查找,找到節點,則返回,否繼續判斷,當前的節點的右子節點是否為空,如果不為空,則繼續向右遞歸前 ...
  • ##Invalid bound statement (not found)出現原因和解決方法 ###前言: 想必各位小伙伴在碼路上經常會碰到奇奇怪怪的事情,比如出現Invalid bound statement (not found),那今天我就來分析以下出現此問題的原因。 其實出現這個問題實質就是 ...
  • ###一、背景知識 爬蟲的本質就是一個socket客戶端與服務端的通信過程,如果我們有多個url待爬取,只用一個線程且採用串列的方式執行,那隻能等待爬取一個結束後才能繼續下一個,效率會非常低。 需要強調的是:對於單線程下串列N個任務,並不完全等同於低效,如果這N個任務都是純計算的任務,那麼該線程對c ...