大數(shù)據(jù)導論PPT完整全套教學課件_第1頁
大數(shù)據(jù)導論PPT完整全套教學課件_第2頁
大數(shù)據(jù)導論PPT完整全套教學課件_第3頁
大數(shù)據(jù)導論PPT完整全套教學課件_第4頁
大數(shù)據(jù)導論PPT完整全套教學課件_第5頁
已閱讀5頁,還剩553頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

大數(shù)據(jù)導論

BIGDATATechnology第1章什么是大數(shù)據(jù)第2章大數(shù)據(jù)技術(shù)基礎(chǔ)第3章數(shù)據(jù)采集與預處理第4章大數(shù)據(jù)存儲與管理第5章大數(shù)據(jù)計算框架第6章數(shù)據(jù)挖掘第7章數(shù)據(jù)可視化第8章大數(shù)據(jù)與云計算第9章大數(shù)據(jù)與人工智能第1章什么是大數(shù)據(jù)

本章主要內(nèi)容如下。(1)人類信息文明的發(fā)展。(2)大數(shù)據(jù)時代的來臨。(3)大數(shù)據(jù)的主要特征。(4)大數(shù)據(jù)的社會價值。1.1人類信息文明的發(fā)展

總體來看,人類的信息文明起源于電子計算機技術(shù)的產(chǎn)生,尤其電子采集、電子存儲、電子處理和電子顯示整個電子信息處理全部流程的技術(shù)實現(xiàn),標志著整個人類信息文明相關(guān)技術(shù)鏈條的成熟。隨著整個信息鏈條節(jié)點的逐步壯大,人類信息文明終于被開啟,并且極大地改變著人類生活的各個方面。人類信息文明是人類文明極大發(fā)展后由量變到質(zhì)變的產(chǎn)物,同時更集中體現(xiàn)了人類整體文明的發(fā)展智慧,極大地豐富了人類的生產(chǎn)和生活方式,尤其提高了人類生產(chǎn)的效率和生活的質(zhì)量。1.2大數(shù)據(jù)時代的來臨

根據(jù)IBM公司前首席執(zhí)行官郭士納的觀點,IT領(lǐng)域基本每隔15年都會迎來一次重大的技術(shù)變革(見表

1-1)。1980

年前后,個人微型計算機(Microcomputer)逐步普及,尤其是隨著制造技術(shù)的完善帶來的計算機銷售價格的大幅降低,使計算機逐步進入企業(yè)和千家萬戶,大大提高了整個社會的生產(chǎn)力,同時豐富了家庭的生活方式,人類迎來了第一次信息化浪潮。Intel、AMD、IBM、Apple、Microsoft、聯(lián)想等信息企業(yè)成為第一次信息浪潮的“弄潮兒”。信息技術(shù)的發(fā)展和不斷的快速革新才造就了信息量的指數(shù)級增長,而信息量的不斷堆積直接造就了大數(shù)據(jù)概念的出現(xiàn)。隨著相關(guān)技術(shù)的不斷成熟,人們終于迎來了大數(shù)據(jù)時代。信息化浪潮發(fā)生時間標志解決的問題企業(yè)界代表第一次1980年前后個人計算機信息處理Intel、AMD、IBM、Apple、Microsoft、聯(lián)想等第二次1995年前后互聯(lián)網(wǎng)信息傳輸Yahoo、Google、阿里巴巴、百度、騰訊等第三次2010年前后大數(shù)據(jù)信息挖掘Amazon、Google、IBM、VMWare、Cloudera等表1-1 3次信息化浪潮1.2.1信息技術(shù)的發(fā)展大數(shù)據(jù)時代的到來得益于信息科技的跨越式持久發(fā)展,而信息技術(shù)主要解決的是信息采集、信息存儲、信息處理和信息顯示4個核心問題。這4個核心問題的相關(guān)技術(shù)的不斷成熟才真的支撐了整個大數(shù)據(jù)時代的全面到來,具體的技術(shù)發(fā)展表現(xiàn)如下。1.信息采集技術(shù)的不斷完善和實時程度的不斷提升大數(shù)據(jù)時代的到來離不開信息的大量采集。數(shù)據(jù)采集技術(shù)隨著人類信息文明的發(fā)展已經(jīng)有了質(zhì)的飛躍(見圖

1-1)。大數(shù)據(jù)技術(shù)主要依附于數(shù)字信息,就數(shù)字信息的采集技術(shù)而言,現(xiàn)在的數(shù)字信息采集方法已經(jīng)十分完善,文字、圖片、音頻、視頻等多維度的數(shù)字信息的采集手段和技術(shù)已經(jīng)十分完備。數(shù)據(jù)的采集越來越實時化,隨處可見實時音頻直播和實時視頻傳播??梢哉f信息的采集環(huán)節(jié)已經(jīng)基本實現(xiàn)實時化,而信息延遲主要在信息傳輸和信息處理階段。圖1-1信息采集的最新技術(shù)2.信息存儲技術(shù)的不斷提升計算機硬盤的快速發(fā)展促進了高安全性和高擴展性的商業(yè)領(lǐng)域信息存儲乃至信息積累,而移動端閃存的快速發(fā)展則拉動了個體生活和社會公共事務(wù)方面的快速信息積累,兩者相輔相成,共同提供了大數(shù)據(jù)時代的信息體量支撐。3.信息處理速度和處理能力的急速提升信息處理速度主要依靠計算機處理核心CPU的運算能力。CPU單核心處理能力的演變長期遵循摩爾定律(見圖

1-2),即CPU的運算速度隨著時間呈現(xiàn)指數(shù)增長趨勢,所以在很長時間內(nèi),行業(yè)的發(fā)展主要集中在提高CPU單個核心的運算主頻上。圖1-2CPU單核心運算速度摩爾定律

而隨著摩爾定律的漸漸失效,尤其是伴隨著提高CPU單核心主頻帶來的商業(yè)成本的成倍增加,直接促使技術(shù)模式由簡單的提高單核心主頻向多核心多線程發(fā)展,即增加單個CPU的處理核心的數(shù)量的同時增加內(nèi)存和CPU聯(lián)絡(luò)的線程數(shù)量和通信帶寬,這樣就可以保證多核心的同時運轉(zhuǎn)。CPU的實際運算因核心數(shù)量的增加,同樣實現(xiàn)了運算速度的十分可觀的高速提升。4.信息顯示技術(shù)的完備和日臻成熟信息的顯示技術(shù)尤其是可視化技術(shù)近些年有了突破性進展,特別是隨著圖形像素技術(shù)的不斷提升,圖形顯示越來越細膩,圖形顯示水平已經(jīng)越來越趨于逼真和生動化(見圖1-3)。圖1-3多彩的數(shù)據(jù)可視化手段

圖形顯示技術(shù)的發(fā)展突破了簡單文字顯示和圖表顯示的技術(shù)界限,信息顯示由一維、二維顯示拓展到了三維乃至更多維度顯示。這樣的顯示技術(shù)帶來了整個大數(shù)據(jù)行業(yè)的騰飛:首先,帶給人們更好的視覺和感官享受,讓信息技術(shù)更好、更快地融入信息時代;其次,帶來了新的連帶技術(shù)的發(fā)展,諸如圖形化數(shù)據(jù)庫、圖像識別及人工智能等技術(shù)的全面發(fā)展;最后,信息顯示的發(fā)展和日臻完善,給整個信息技術(shù)帶來了從量到質(zhì)的跨越式發(fā)展,并且會繼續(xù)更加深遠地影響整個大數(shù)據(jù)時代的發(fā)展。1.2.2數(shù)據(jù)產(chǎn)生方式的變革大數(shù)據(jù)時代的到來依托于信息技術(shù)的不斷革新和發(fā)展,但是僅靠信息技術(shù)的發(fā)展,還是不能完全促使大數(shù)據(jù)時代的最終來臨。信息技術(shù)的發(fā)展只能為大數(shù)據(jù)時代的來臨帶來技術(shù)上的鋪墊和積淀。大數(shù)據(jù)時代的來臨必須依托于數(shù)據(jù)量的爆炸式增長和完善,而這在很大程度上取決于數(shù)據(jù)產(chǎn)生方式的變革。

可以說信息技術(shù)的發(fā)展促進了數(shù)據(jù)產(chǎn)生方式的變革,而反過來數(shù)據(jù)產(chǎn)生方式的革新也倒逼了信息技術(shù)的不斷完善和發(fā)展,兩者的發(fā)展是相輔相成和互相促進的。接下來就看看數(shù)據(jù)產(chǎn)生方式的變革歷程(見圖

1-4)。圖1-4數(shù)據(jù)生產(chǎn)方式的變革1.傳統(tǒng)大型商業(yè)領(lǐng)域業(yè)務(wù)運營數(shù)據(jù)產(chǎn)生方式的變化可以說傳統(tǒng)大型商業(yè)領(lǐng)域業(yè)務(wù)運營數(shù)據(jù)的采集是整個數(shù)據(jù)行業(yè)的開始,因為銀行、商鋪、保險、證券、股票、零售等商業(yè)數(shù)據(jù)的隱私性和保密性要求,直接激發(fā)了人們對信息行業(yè)發(fā)展的需求。同時這些傳統(tǒng)的商業(yè)部門也完成了整個大數(shù)據(jù)行業(yè)的早期數(shù)據(jù)積累,尤其是對數(shù)據(jù)量變方面的貢獻。由于整個商業(yè)領(lǐng)域有大量的保密且極其重要的數(shù)據(jù)需要妥善保存和隨時處理,同時伴隨著商業(yè)全球化的擴張和整個世界經(jīng)濟在過去半個世紀尤其是第二次世界大戰(zhàn)以后飛速的發(fā)展,都促使傳統(tǒng)商業(yè)領(lǐng)域的數(shù)據(jù)量大幅增加。

商業(yè)數(shù)據(jù)由過去的波浪形增長方式變成了指數(shù)型的爆炸式增長方式。這種數(shù)據(jù)產(chǎn)生方式的變化直接倒逼了信息技術(shù)的發(fā)展,包括傳統(tǒng)數(shù)據(jù)庫技術(shù)、數(shù)據(jù)檢索標準語言—SQL、大型商業(yè)數(shù)據(jù)中心、全球商業(yè)數(shù)據(jù)網(wǎng)絡(luò)等新的數(shù)據(jù)技術(shù)的發(fā)展,而這些技術(shù)都為傳統(tǒng)商業(yè)運營所產(chǎn)生的大量數(shù)據(jù)提供存儲和處理。2.互聯(lián)網(wǎng)時代數(shù)據(jù)產(chǎn)生方式的變化全球海底電纜連通世界五大洲,促使萬維網(wǎng)全球數(shù)據(jù)連通;通信衛(wèi)星的全球組網(wǎng),再一次在移動端將整個人類聯(lián)系在了一起,讓每個人在智能手機的幫助下可以全球通達;與此同時,全球定位系統(tǒng)也實現(xiàn)向民用領(lǐng)域開放,目前以美國為首的GPS全球定位系統(tǒng)的民用服務(wù)已經(jīng)到了十分便利和極其精確的程度。

海底電纜、移動通信和全球定位系統(tǒng)3個大的信息核心技術(shù)的發(fā)展,讓人們終于迎來了互聯(lián)網(wǎng)時代的大規(guī)模數(shù)據(jù)產(chǎn)生方式。這樣的數(shù)據(jù)產(chǎn)生方式促成了數(shù)據(jù)量的量變。全球移動通信用戶逐年增加,而每一位終端用戶都是獨立的鮮活個體,其任何一秒鐘產(chǎn)生的共享數(shù)據(jù)量都是驚人的,同時是不斷更新和活躍的,全球人類第一次真的匯聚在“地球村”。3.物聯(lián)網(wǎng)(IOT)加快了數(shù)據(jù)產(chǎn)生方式的變革全球科技巨頭都在積極布局物聯(lián)網(wǎng),而物聯(lián)網(wǎng)的數(shù)據(jù)產(chǎn)生方式是完全實時的,這樣的數(shù)據(jù)產(chǎn)生方式再次刷新了數(shù)據(jù)產(chǎn)生的量級,即便最簡單的地下車庫視頻監(jiān)控或商場的超市自動視頻采集設(shè)備每天所產(chǎn)生的數(shù)據(jù)量都是天文數(shù)字,更別說全球聯(lián)網(wǎng)實現(xiàn)的物聯(lián)網(wǎng)全流程運作。

物聯(lián)網(wǎng)旨在將實物世界與信息數(shù)據(jù)實現(xiàn)完全的對應(yīng)和聯(lián)絡(luò),物聯(lián)網(wǎng)時代在很大程度上在于對世界存在的實物進行信息標記、調(diào)度、利用、處理、再利用,然后對整個鏈條的信息化實物進行掌控。而這樣的信息模式會造成終端數(shù)據(jù)量的再次質(zhì)的飛躍,同時更為重要的是造成實時數(shù)據(jù)流的爆炸式增長。這樣的數(shù)據(jù)產(chǎn)生方式是前所未有的,也最終在互聯(lián)網(wǎng)信息時代催生出大數(shù)據(jù)時代后再次把大數(shù)據(jù)時代的未來推到了前所未有的高度。

綜上所述,大數(shù)據(jù)時代的發(fā)展實際經(jīng)歷了20世紀90年代到21世紀初的萌芽階段。這個階段與數(shù)據(jù)商業(yè)運營模式的產(chǎn)生階段對應(yīng),主要的大數(shù)據(jù)研究方向為商務(wù)智能、數(shù)據(jù)倉庫和數(shù)據(jù)建模,目的在于為大型傳統(tǒng)商業(yè)提供業(yè)務(wù)咨詢、開拓銷售市場,以及維護客戶關(guān)系。隨著互聯(lián)網(wǎng)技術(shù)的不斷成熟,尤其是Web2.0時代的到來,大數(shù)據(jù)時代也發(fā)展到21世紀前10年的技術(shù)成熟期。

這個階段也正好與互聯(lián)網(wǎng)時代的大眾數(shù)據(jù)產(chǎn)生階段對應(yīng),主要的大數(shù)據(jù)研究方向是網(wǎng)絡(luò)資源搜索、社交網(wǎng)絡(luò)、大眾媒體、政務(wù)大型對公平臺等的平臺大數(shù)據(jù)處理,目的在于更好地利用互聯(lián)網(wǎng)系統(tǒng)產(chǎn)生的大量數(shù)據(jù),更好地為人們的生產(chǎn)、生活和銷售市場帶來私人訂制或者群體定制式的信息服務(wù)。2010年以后,大數(shù)據(jù)時代終于到了大規(guī)模應(yīng)用期,這個階段與物聯(lián)網(wǎng)實時數(shù)據(jù)產(chǎn)生階段對應(yīng),目的在于拓展大數(shù)據(jù)技術(shù),實現(xiàn)人工智能。1.3大數(shù)據(jù)的主要特征1.3.1大數(shù)據(jù)的數(shù)據(jù)特征大數(shù)據(jù)數(shù)據(jù)層次的特征是最先被整個大數(shù)據(jù)行業(yè)所認識、所定義的,其中最為經(jīng)典的是大數(shù)據(jù)的4V特征,即數(shù)據(jù)量巨大(HugeVolume)、數(shù)據(jù)類型繁多(Variety)、信息處理速度快(Velocity)、價值密度低(Value)。1.數(shù)據(jù)量巨大根據(jù)著名咨詢機構(gòu)IDC(InternetDataCenter)做出的預測,人類社會產(chǎn)生的數(shù)據(jù)一直都在以每年

50%的速度增長,基本每兩年就增長一倍。這個預測被形象地稱為“數(shù)據(jù)量摩爾定律”。這樣的預測有望隨大數(shù)據(jù)時代和人工智能時代的來臨而打破。數(shù)據(jù)量的真實增長會是怎樣的只有明天才有結(jié)論,但是數(shù)據(jù)量大卻是大數(shù)據(jù)時代牢不可動的第一標簽。2.數(shù)據(jù)類型繁多從數(shù)據(jù)產(chǎn)生方式的幾次改變就可以體會到數(shù)據(jù)類型跟隨時代的變革。大型商業(yè)運營階段產(chǎn)生的數(shù)據(jù)類型多為傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)。這些數(shù)據(jù)多為隱私性和安全性級別都十分高的商業(yè)、貿(mào)易、物流,以及財務(wù)、保險、股票等的傳統(tǒng)支柱行業(yè)數(shù)據(jù)。而互聯(lián)網(wǎng)時代產(chǎn)生的數(shù)據(jù)類型多為非結(jié)構(gòu)化的電子商務(wù)交易數(shù)據(jù)、社交網(wǎng)絡(luò)數(shù)據(jù)、圖片定位數(shù)據(jù),以及商業(yè)智能報表、監(jiān)控錄像、衛(wèi)星遙感數(shù)據(jù)等非結(jié)構(gòu)化和二維碼像素數(shù)據(jù)。

互聯(lián)網(wǎng)時代數(shù)據(jù)類型的改變也促進了新型數(shù)據(jù)庫技術(shù)的大力發(fā)展,如NoSQL和NewSQL等數(shù)據(jù)庫技術(shù)都得到了長足的發(fā)展,而這一切都是為了滿足新數(shù)據(jù)類型的數(shù)據(jù)存儲和高效利用的需要。IoT、人工智能時代的數(shù)據(jù)產(chǎn)生方式是多種多樣的,其產(chǎn)生的數(shù)據(jù)類型也是多種多樣的。3.信息處理速度快大量的數(shù)據(jù)、繁雜的數(shù)據(jù)類型,必然要求較快的信息處理速度。近年來計算機核心處理單元CPU的綜合信息處理能力呈現(xiàn)指數(shù)級增長。實際上,CPU運算速度的增長分為兩個階段:第一個階段,行業(yè)的關(guān)注重點是單個核心主頻的不斷提升,單核心的CPU速度經(jīng)歷了飛速的發(fā)展期;到了21世紀初,再提高單核心的主頻已經(jīng)出現(xiàn)了很大的工業(yè)困難,并且從成本的角度也不再符合整個市場的需求,因此行業(yè)領(lǐng)導者諸如Intel和AMD公司都把提高信息的處理速度的方式轉(zhuǎn)變到多核心聯(lián)動處理。4.價值密度低數(shù)據(jù)量雖然巨大,但是人們關(guān)注的其中有用的信息卻不容易被發(fā)現(xiàn),這是大數(shù)據(jù)時代數(shù)據(jù)的一個很大特點。數(shù)據(jù)量級巨大,人們需要的有價值的數(shù)據(jù)資料和數(shù)據(jù)決策卻難以得到,這就需要專業(yè)人員根據(jù)各自行業(yè)的需求,通過特定的技術(shù)手段和研究方法,在海量的價值密度極低的數(shù)據(jù)海洋里找到合適的數(shù)據(jù)集,經(jīng)過具體可行的數(shù)據(jù)分析和挖掘方法去得到可以利用的高密度價值的數(shù)據(jù),促進低密度數(shù)據(jù)的高價值信息提取,從而實現(xiàn)大數(shù)據(jù)的科學合理利用。1.3.2大數(shù)據(jù)的技術(shù)特征大數(shù)據(jù)的這4個著眼于數(shù)據(jù)層次的特征是被整個大數(shù)據(jù)行業(yè)公認的,也是本書必須予以尊重的。顯然4V特征很好地描述了整個大數(shù)據(jù)的數(shù)據(jù)層次權(quán)威特征,但是大數(shù)據(jù)的主要特征顯然不僅僅表現(xiàn)在數(shù)據(jù)層次。從技術(shù)層次看,大數(shù)據(jù)的技術(shù)特征也是可圈可點的,而這些技術(shù)特征決定了我們不僅要著眼于大數(shù)據(jù)的數(shù)據(jù)層次,還要注重大數(shù)據(jù)行業(yè)技術(shù)的方方面面。這些技術(shù)特征基本可以總結(jié)為如下幾點。1.大數(shù)據(jù)時代的技術(shù)是開放性的2.大數(shù)據(jù)時代的技術(shù)是平臺化的3.大數(shù)據(jù)時代的技術(shù)是基于新型的實驗訓練性質(zhì)的數(shù)學算法實現(xiàn)的4.大數(shù)據(jù)時代的技術(shù)最終期待實現(xiàn)人工智能管理和機器人代工1.4大數(shù)據(jù)的社會價值

大數(shù)據(jù)的社會價值主要體現(xiàn)在以下幾個方面。1.大數(shù)據(jù)為各個行業(yè)帶來了行業(yè)規(guī)劃和行業(yè)決策的整體升級及精準化2.大數(shù)據(jù)為行業(yè)的整體發(fā)展注入更加公平和充沛的活力3.大數(shù)據(jù)從實際意義上促進了信息技術(shù)產(chǎn)業(yè)與工業(yè)企業(yè)的深度融合4.大數(shù)據(jù)極大地提升了企業(yè)自主創(chuàng)新能力,為新技術(shù)和新方法的出現(xiàn)提供高效信息咨詢大數(shù)據(jù)導論

BIGDATATechnology第2章大數(shù)據(jù)技術(shù)基礎(chǔ)

本章主要內(nèi)容如下。(1)計算機操作系統(tǒng)。(2)編程語言。(3)數(shù)據(jù)庫。(4)算法。(5)大數(shù)據(jù)系統(tǒng)。(6)大數(shù)據(jù)應(yīng)用開發(fā)流程。2.1計算機操作系統(tǒng)

本章首先介紹計算機操作系統(tǒng),幫助讀者建立對大數(shù)據(jù)技術(shù)基礎(chǔ)的整體印象。2.1.1什么是操作系統(tǒng)操作系統(tǒng)(OperatingSystem,OS)實際是一整套程序的組合體,這套程序的主要任務(wù)是管理計算機的所有活動和驅(qū)動計算機的整體硬件。計算機硬件包括輸入單元(主要指鍵盤和鼠標等)、輸出單元(顯示器、音響等)、CPU和主存儲器等主要部分。

操作系統(tǒng)可以統(tǒng)籌協(xié)調(diào)計算機硬件系統(tǒng)的工作,具體就是通過操作系統(tǒng)的工作使CPU可以進行邏輯與數(shù)值運算,主存儲器能夠加載應(yīng)用數(shù)據(jù)與程序代碼,硬盤可以順利存入與讀出信息,輸入設(shè)備、輸出設(shè)備可以根據(jù)需要實時寫入、寫出必要信息等。因此,操作系統(tǒng)實際是整個計算機硬件系統(tǒng)的“CEO”,擔負著整個計算機硬件系統(tǒng)的管理、協(xié)調(diào)和運作的全部任務(wù)。1.系統(tǒng)呼叫接口2.程序管理3.內(nèi)存管理4.文件系統(tǒng)管理5.硬件裝置的驅(qū)動

2.1.2Linux操作系統(tǒng)Linux系統(tǒng)基本經(jīng)歷了3個發(fā)展階段。1.單一個人維護階段2.廣大黑客志愿者加入階段3.Linux核心的細分工、快速發(fā)展階段

Linux的核心版本編號如圖2-1所示,自3.0以后的版本都遵循統(tǒng)一的編碼標準,并且基本上后續(xù)的版本都是在前序版本的基礎(chǔ)上經(jīng)過完善后再開發(fā)出來的。圖2-1Linux核心版本編號注解

Linux的核心版本是LinuxKernel的版本,此外還有LinuxDistribution,兩者的關(guān)系如圖2-2所示。LinuxDistribution是專門為使用者量身打造的LinuxKernel+Software+Tools的可安全安裝程序的綜合發(fā)布版本,可幫助日常使用者在Linux系統(tǒng)下完成工作和其他相關(guān)任務(wù)。圖2-2LinuxKernel與LinuxDistribution

目前LinuxDistribution主要分為兩大系統(tǒng):一種是使用RPM(Red-HatPackageManager)方式安裝軟件的系統(tǒng),主要包括RHEL、SuSE、Fedora等;另一種是使用Debian的DPKG方式安裝軟件的系統(tǒng),包括Ubuntu、Debian、B2D等。具體的主要版本如表2-1所示。機構(gòu)RPM軟件管理DPKG軟件管理其他未分類商業(yè)公司RHEL(RedHat)SuSE(MicroFocus)Ubuntu(Canonical)

社區(qū)單位FedoraCentOSOpenSuSEDebianB2DGentoo表2-1 LinuxDistribution主要版本

目前Linux的主要應(yīng)用場景如下。(1)企業(yè)環(huán)境的應(yīng)用,主要包括網(wǎng)絡(luò)服務(wù)器(目前最熱門的應(yīng)用)、關(guān)鍵任務(wù)的應(yīng)用(金融數(shù)據(jù)庫、大型企業(yè)網(wǎng)管環(huán)境)、學術(shù)機構(gòu)的高效能運算任務(wù)等。(2)個人環(huán)境的使用,主要包括桌面計算機系統(tǒng)(實現(xiàn)和Windows系統(tǒng)一樣的桌面操作系統(tǒng))、手持系統(tǒng)(PDA、手機端系統(tǒng)如Android)、嵌入式系統(tǒng)(包括路由器、防火墻、IP分享器、交換機等)。(3)云端的運用,主要包括云程序(云端虛擬機資源)、云端設(shè)備等。2.2編程語言

語言可以使人們以更加規(guī)范、方便和快捷的方式進行交流。自然語言的作用顯然是使人們更加高效地交流不同的思想和文化,編程語言則是為了實現(xiàn)人與計算機之間的交流而設(shè)計的語言。隨著計算機技術(shù)的不斷發(fā)展和完善,編程語言已經(jīng)得到了長足的發(fā)展,并被廣泛地應(yīng)用于實際,已經(jīng)成為人們與計算機進行深入“交流”的必需工具。2.2.1編程語言的發(fā)展與種類隨著電氣革命的深入,人們終于在

20

世紀40年代制造出了可以用于實際計算的晶體管計算機。這時候的計算機體積相當大,同時能耗巨大。伴隨著晶體管計算機的誕生,人們也編寫了第一種真正意義上的編程語言,這就是機器語言。對普通人來說,機器語言基本就是“天書”,因為它完全是用0和1的機器代碼來寫成的,然后被光電閱讀機記錄在穿孔卡片上,作為晶體管計算機的讀入/讀出數(shù)據(jù),如圖2-3所示。圖2-3記錄在穿孔卡片上的機器語言

機器語言太難理解和書寫,且極易出錯,匯編語言(AssemblyLanguage)就應(yīng)運而生。實際上匯編語言是使用助記符(Mnemonics)來代替機器指令的操作碼(0和1的指令集),用標號(Label)和地址符號(Symbol)分別來代替機器指令或者操作數(shù)值的存儲地址,其大體的工作原理如圖

2-4

所示。機器語言和匯編語言統(tǒng)稱為低級語言(1946—1953年)。圖2-4匯編語言大體的工作原理

與機器語言相比,匯編語言確實有了很大的進步,但是人們希望讓編程語言與自然語言無縫對接,于是編程語言進入了高級語言(High-LevelProgrammingLanguage)時代(1954年至今)。相對于機器語言的機器碼(MachineCode),高級語言基本以人們的日常語言為基礎(chǔ),基本上人們易于接受的文字就是構(gòu)成高級語言的基本詞匯。由于早期的計算機技術(shù)都主要由美國主導,因此高級語言基本都是以英語為藍本的。因為英語是國際語言且簡單易懂,程序基本上都是用英文實現(xiàn)的,所以想成為合格的編程人員,英語基礎(chǔ)是必不可少的。接下來我們就大體看看整個高級語言的發(fā)展歷程。

1954年,JohnBackus在紐約正式發(fā)布人類第一個高級編程語言FORTRAN(FORmulaTRANslator的幾個字母的縮寫拼合)Ⅰ,從字面翻譯(公式翻譯語言)就知道其主要是用來做數(shù)學數(shù)值計算尤其是科學計算的。FORTRANⅠ的功能簡單,但它的開創(chuàng)性工作在社會上引起了極大的反響。1957年,第一個FORTRAN編譯器在IBM704計算機上實現(xiàn),并首次成功運行了FORTRAN程序。隨后在1960年出現(xiàn)了第一個結(jié)構(gòu)化語言Algol(AlgorithmicLanguage),它是算法語言的鼻祖,目的在于純粹面向描述計算過程,其語法也是用嚴格的公式化的方法說明的。

同時,值得一提的是,Algol60是程序設(shè)計語言發(fā)展史上的一個里程碑,它標志著程序設(shè)計語言成為一門獨立的學科。1964年,美國達特茅斯學院的J.Kemeny和T.Kurtz開發(fā)了BASIC(BeginnersAllPurposeSymbolicIntroductionCode),該語言只有26個變量、17條語句,是初學編程人員的福音。

后來,編程語言發(fā)展到了使用編譯器的階段,出現(xiàn)了我們都熟知的C語言(Compilerlanguage)。這種語言的核心在于編譯器,而編譯器的作用就是把某種語言寫的代碼轉(zhuǎn)變?yōu)闄C器語言,從而讓計算機識別并運行。高級語言經(jīng)過編譯器時代的發(fā)展,過渡到面向?qū)ο髸r代(1995年開始),編程人員終于可以針對特殊的對象進行一對一的編程處理。業(yè)內(nèi)稱這種方法為面向?qū)ο蟪绦蛟O(shè)計(Object-OrientedProgramming,OOP)。

隨著面向?qū)ο蟪绦蛟O(shè)計語言的不斷成熟,IDE(IntegratedDevelopEnvironment)作為提供程序開發(fā)環(huán)境的應(yīng)用程序開始得到發(fā)展。IDE一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面工具,也就是集成了代碼編寫功能、分析功能、編譯功能、調(diào)試功能等一體化的開發(fā)軟件服務(wù)套件。這樣的集成開發(fā)環(huán)境大大方便了編程人員的開發(fā)工作。隨著Java語言的全球風靡,與之相關(guān)的IDE也不斷地發(fā)展起來。

下面我們總結(jié)一下目前市場上的所用編程語言。(1)Java的使用者最多。(2)C和C++在嵌入式開發(fā)方面的地位不可動搖。(3)C#迅速崛起。(4)其他程序如Ruby、JSP、JavaScript、PHP等也占據(jù)了一定的市場。(5)未來的編程語言是動態(tài)語言如Python的天下。2.2.2Python語言Python語言誕生于1991年(比Java還早,最早發(fā)行于1994年),并且一直是比較流行的十大計算機語言之一。Python可以應(yīng)用在命令行窗口、圖形用戶界面(包括Web)、客戶端和服務(wù)器端Web、大型網(wǎng)站后端、云服務(wù)(第三方管理服務(wù)器)、移動設(shè)備、嵌入式設(shè)備等許多的計算環(huán)境下。從一次性的腳本到幾十萬行的系統(tǒng),Python都可以進行游刃有余的開發(fā)。

Python語言自身的優(yōu)點和在實際應(yīng)用方面的便捷性。首先介紹命令行終端窗口。命令行終端窗口就是我們所熟知的shell程序,它是操作系統(tǒng)內(nèi)置的可直接由系統(tǒng)核心提供命令運行并顯示結(jié)果的編程語言。Windows下的shell即是我們稱為CMD的命令行終端,其運行后綴為.bat的BATCH格式文件。Linux和其他的UNIX操作系統(tǒng)(包括macOSX等)有很多的shell程序,其中,最為人們所熟知的便是bash(或其簡寫sh)程序語言。shell一般是程序人員接觸的第一種程序語言,其百行之后的擴展性很差,同時運行速度一般,如下就是一段shell程序。

然后,我們再來看看C和C++。它們都是底層語言,應(yīng)用在十分重視程序運行效率和做硬件嵌入式開發(fā)的場景時具有很好的效果,但是人們很難學習,并且有許多細微的地方需要做縝密的處理,稍微不小心就會發(fā)生程序全盤崩潰的情況。Java語言雖然解決了很多C和C++的問題,但是代碼實在繁雜,讓人無所適從。

靜態(tài)語言之所以為靜態(tài),是因為其中的變量類型是整個程序流程都不能改變的,也就是整數(shù)就是整數(shù)(int),字符串就是字符串(string)。因此,靜態(tài)語言要求編程人員去聲明每個變量的類型及其內(nèi)存使用額度、使用方法,當然這樣的結(jié)果就是計算機很容易把程序編譯為更底層的機器代碼,可以十分高效地管理內(nèi)存和變量的應(yīng)用等。Perl可以說是一門十分經(jīng)典的動態(tài)語言,雖然其有很不錯的擴展庫,卻不能改變其語法繁雜的現(xiàn)實。

Ruby是一門新興的動態(tài)語言,其參照了Perl的很多技術(shù)特點,并且因為Web開發(fā)框架Rubyonrails而一炮走紅。PHP主要在Web開發(fā)領(lǐng)域非常流行,因為其可以輕松地結(jié)合HTML和代碼。

Python

是高級的動態(tài)語言,同時程序的代碼可讀性很強,方便編程人員移植和修改。事實上,Python的程序包可以說是目前所有編程語言中最為強大和更新速度最快的。從語言本身角度來說,Python編寫簡單,應(yīng)用廣泛,是初學編程人員的最佳選擇之一。2.3數(shù)據(jù)庫

數(shù)據(jù)庫技術(shù)是信息技術(shù)的核心技術(shù)。顯然大數(shù)據(jù)時代仍然要依賴數(shù)據(jù)庫技術(shù)提供可靠、安全、高效的數(shù)據(jù)存儲和查詢服務(wù),這樣才能支持整個大數(shù)據(jù)行業(yè)的可持續(xù)發(fā)展。2.3.1SQL數(shù)據(jù)庫的發(fā)展與成熟1970年,IBM公司的研究員E.F.Codd博士提出的關(guān)系模型的概念奠定了整個關(guān)系模型的理論基礎(chǔ)。1970年,關(guān)系模型建立后,IBM公司在SanJose實驗室投入了大量的人力、物力研究相關(guān)的可實施的關(guān)系型數(shù)據(jù)庫。這就是著名的SystemR數(shù)據(jù)庫項目,其初始目的在于論證關(guān)系型數(shù)據(jù)庫的可行性。

SQL最早在1986年由ANSI(AmericanNationalStandardsInstitution)認定為關(guān)系型數(shù)據(jù)庫語言的美國標準,同年即公布了標準的SQL文本。時至今日,ANSI已經(jīng)公布了有關(guān)SQL的3個版本。基本可以說SQL數(shù)據(jù)庫已經(jīng)發(fā)展到了品類齊全、種類繁多的產(chǎn)品格局,既有符合商業(yè)引用標準的大型數(shù)據(jù)庫系統(tǒng),也有別具風格、完全開源的個人版本,并且隨著數(shù)據(jù)庫技術(shù)的不斷發(fā)展,SQL數(shù)據(jù)庫還會不斷地成熟和完善,為大數(shù)據(jù)技術(shù)的發(fā)展提供強有力的支撐。2.3.2NoSQL數(shù)據(jù)庫及其特點NoSQL是一種不同于SQL的數(shù)據(jù)庫管理系統(tǒng)設(shè)計方式,其采用了不同于傳統(tǒng)關(guān)系模式的數(shù)據(jù)組織模型,這些組織模型主要包括鍵-值、列族、文檔等非關(guān)系模型。NoSQL數(shù)據(jù)庫具有以下3個方面的特點。1.優(yōu)秀的可擴展性SQL數(shù)據(jù)庫嚴格遵守ACID設(shè)計原則,所以一般很難實現(xiàn)硬件存儲設(shè)備的“橫向擴展”(多集群機器聯(lián)動服務(wù))。2.方便多用的數(shù)據(jù)類型承載能力相對于SQL數(shù)據(jù)庫只能處理“表數(shù)據(jù)”,即嚴格結(jié)構(gòu)化的數(shù)據(jù)類型,NoSQL數(shù)據(jù)庫在設(shè)計之初就放棄了傳統(tǒng)數(shù)據(jù)庫的關(guān)系數(shù)據(jù)模型,旨在滿足大數(shù)據(jù)的處理需求,采用諸如鍵-值、列族、文件集等多樣的新型數(shù)據(jù)模型,并且對圖形數(shù)據(jù)的兼容性也日漸提升。3.NoSQL數(shù)據(jù)服務(wù)與云計算可以緊密融合云計算和云服務(wù)是當前時代的信息服務(wù)高地,其很多特點如水平擴展、多用戶并行處理、遠程登錄操控等都可以與NoSQL數(shù)據(jù)庫實現(xiàn)無縫對接,使NoSQL數(shù)據(jù)庫在大數(shù)據(jù)時代更加如魚得水。2.3.3NoSQL數(shù)據(jù)庫的分類近年來,NoSQL數(shù)據(jù)庫技術(shù)發(fā)展勢頭迅猛,雖然其種類繁多,但是歸結(jié)起來,典型的NoSQL數(shù)據(jù)庫通常包括鍵-值數(shù)據(jù)庫、列族數(shù)據(jù)庫、文檔數(shù)據(jù)庫和圖形數(shù)據(jù)庫4種類型(見圖2-5和圖2-6)。圖2-5鍵-值和列族數(shù)據(jù)庫圖2-6文檔和圖形數(shù)據(jù)庫1.鍵-值數(shù)據(jù)庫正如圖2-5(a)顯示的圖例一樣,鍵-值數(shù)據(jù)庫(Key-ValueDataBase)主要包括負責索引的Key和對應(yīng)的儲存實質(zhì)內(nèi)容的Value兩個部分,其具有理論上無限的橫向擴展性,但是其犧牲的是SQL數(shù)據(jù)庫中的條件查詢功能,只能針對具體的Key進行單一查詢。表2-2詳細描述了鍵-值數(shù)據(jù)庫的相關(guān)特征。鍵-值數(shù)據(jù)庫細節(jié)相關(guān)說明行業(yè)產(chǎn)品Redis、Riak、SimpleDB、Chordliss、Scalaris、Memcached數(shù)據(jù)模型Key-Value數(shù)據(jù)對行業(yè)引用內(nèi)存緩沖,諸如會話、配置文件、參數(shù)、購物車等商業(yè)實例百度云(Redis)、Twitter(RedisandMemcached)、YouTube(Memcached)等優(yōu)點橫向擴展優(yōu)秀、存取針對性好、利于大批量并行處理不足條件化查詢基本不能滿足表2-2 鍵-值數(shù)據(jù)庫的相關(guān)特征2.列族數(shù)據(jù)庫列族數(shù)據(jù)庫(Column-FamilyDataBase)從行的性質(zhì)上看與鍵-值數(shù)據(jù)庫類似,只是列族數(shù)據(jù)庫每個行鍵索引指向的是一個列族,而每行的列族數(shù)量可以由數(shù)據(jù)庫管理者自己制定和規(guī)劃,這樣相對鍵-值數(shù)據(jù)庫每個行鍵只能針對一個數(shù)據(jù)屬性的不足得到了大大的改善。同時,列族數(shù)據(jù)庫支持不同類型的數(shù)據(jù)訪問模式,同一個列族可以被同時一起放入計算機內(nèi)存之中,這樣雖然消耗了內(nèi)存存儲,卻帶來了更好的數(shù)據(jù)響應(yīng)性能。表2-3具體描述了列族數(shù)據(jù)庫的相關(guān)特征。列族數(shù)據(jù)庫細節(jié)相關(guān)說明行業(yè)產(chǎn)品BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS等數(shù)據(jù)模型Key-ColumFamily數(shù)據(jù)模塊行業(yè)引用大數(shù)據(jù)分布式數(shù)據(jù)存儲和管理商業(yè)實例Ebay(Cassandra)、NASA(Cassandra)、Facebook(HBase)等優(yōu)點查找迅速、擴展性強且數(shù)據(jù)存儲屬性充分、利于分布式部署不足功能一般表2-3 列族數(shù)據(jù)庫的相關(guān)特征3.文檔數(shù)據(jù)庫如圖2-6(a)所示,文檔數(shù)據(jù)庫(DocumentDataBase)的數(shù)據(jù)模式實際是一個鍵-值對應(yīng)一個文件,而文檔是數(shù)據(jù)庫的最小單位。雖然每一種文檔數(shù)據(jù)庫的部署都有所不同,但是基本都是文檔以某種標準化格式封裝并對數(shù)據(jù)進行加密,然后運用XML、YAML、JSON、BSON等多種格式進行數(shù)據(jù)解碼,或者也可以使用PDF、Office等二進制形式文檔。表2-4具體描述了其相關(guān)特征。文檔數(shù)據(jù)庫細節(jié)相關(guān)說明行業(yè)產(chǎn)品CouchDB、MongoDB、Terrastore、ThruDB、RavenDB、SISODB、RaptorDB、CloudKit、Perservere、Jackrabbit等數(shù)據(jù)模型Key-Document數(shù)據(jù)模塊行業(yè)引用存儲、應(yīng)用、管理面向文檔的數(shù)據(jù)或者類似于文檔的半結(jié)構(gòu)化、非結(jié)構(gòu)化文檔數(shù)據(jù)商業(yè)實例百度云數(shù)據(jù)庫(MongoDB)、NBCNews(RabenDB)等優(yōu)點方便處理非結(jié)構(gòu)化文檔數(shù)據(jù),兼容擴展性良好不足查詢困難表2-4 文檔數(shù)據(jù)庫的相關(guān)特征4.圖形數(shù)據(jù)庫圖形數(shù)據(jù)庫(GraphDataBase)以圖形為數(shù)據(jù)庫基礎(chǔ),每一個圖形代表一個數(shù)據(jù)庫節(jié)點。同時,其組織模式以圖論為基礎(chǔ),將一個圖簡化為一個數(shù)學概念,其表示了一個對象結(jié)合,而不同圖形對象直接的關(guān)系則用關(guān)系鍵-值對來標明。圖形數(shù)據(jù)庫的數(shù)據(jù)模型設(shè)計理念以圖形為主題,可以高效地存儲不同圖形節(jié)點之間的關(guān)系,專門用于處理具有高度相互關(guān)聯(lián)關(guān)系的數(shù)據(jù),并使其以圖形節(jié)點形式展現(xiàn),十分適用于社交網(wǎng)絡(luò)、模式識別、依賴分析、推薦系統(tǒng)及路徑尋找等應(yīng)用場景。表

2-5

具體描述了圖形數(shù)據(jù)庫的相關(guān)特征。圖形數(shù)據(jù)庫細節(jié)相關(guān)說明行業(yè)產(chǎn)品Neo4J、OrientDB、InfoGrid、InfiniteGraph、GraphDB等數(shù)據(jù)模型GraphNode-relation數(shù)據(jù)模塊行業(yè)引用社交網(wǎng)絡(luò)、推薦系統(tǒng)等相互關(guān)聯(lián)度大行業(yè)商業(yè)實例Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)等優(yōu)點清晰、高效地展示具體實體事務(wù)間的相互關(guān)系和聯(lián)絡(luò)情況不足圖形數(shù)據(jù)占用大量存儲空間表2-5 圖形數(shù)據(jù)庫的相關(guān)特征2.3.4NewSQL數(shù)據(jù)庫近年來,人們越來越意識到NoSQL數(shù)據(jù)庫的技術(shù)不足,尤其難以滿足海量數(shù)據(jù)查詢和數(shù)據(jù)挖掘方面的需求,于是NewSQL數(shù)據(jù)庫的概念開始逐步升溫。NewSQL綜合了NoSQL和SQL數(shù)據(jù)庫的技術(shù)優(yōu)勢,它既能像NoSQL數(shù)據(jù)庫一樣具有對海量數(shù)據(jù)足夠優(yōu)秀的擴展和并發(fā)處理能力,同時也具備SQL數(shù)據(jù)庫對ACID和結(jié)構(gòu)化快速高效查詢的特點。

目前市場上具有代表性的NewSQL數(shù)據(jù)庫主要包括Spanner、Clustrix、GenieDB、ScalArc、Schooner、VoltDB、RethinkDB、Akiban、CodeFutures、ScaleBase、Translattice、NimbusDB、Drizzle、Tokutek、JustOneDB等。但是,在嚴格意義上符合NewSQL數(shù)據(jù)庫全部標準的理想NewSQL數(shù)據(jù)庫或者標準的NewSQL數(shù)據(jù)庫目前還沒有出現(xiàn)。2.4算法

算法(Algorithm)是數(shù)學處理的靈魂和核心,也是實現(xiàn)現(xiàn)實事務(wù)數(shù)學化、公式化和邏輯化處理的橋梁,可以說算法是信息時代連通現(xiàn)實社會和虛擬世界的立交橋。本節(jié)我們重點關(guān)注傳統(tǒng)算法和大數(shù)據(jù)時代算法的區(qū)別。2.4.1什么是算法算法是解決方案的準確而完整的描述,實質(zhì)是一系列解決問題的高度符合邏輯性和可執(zhí)行性的指令集合,其代表著用系統(tǒng)的方法描述解決問題的策略與機制。其具體包括把符合算法要求的數(shù)據(jù)按照一定的數(shù)據(jù)結(jié)構(gòu)方式進行準備、完整輸入并存儲,經(jīng)過綜合算法指令的步步實現(xiàn)后,在確認每個步驟合理完成后進行最后的結(jié)果輸出和展現(xiàn)。

只要算法結(jié)果是正常輸出的,判斷算法好壞的最重要指標就是結(jié)果的優(yōu)劣了,然后就是算法的可行性、執(zhí)行效率和對計算機的硬件要求。算法的可行性主要指算法指令集的運行流暢性和對數(shù)據(jù)集的包容性;執(zhí)行效率最主要的是程序的執(zhí)行速度和糾錯能力;而對計算機硬件的要求則主要考慮經(jīng)濟性和現(xiàn)實性。一個算法的評價標準主要從這3個方面來判定。

本書關(guān)注大數(shù)據(jù),因此我們關(guān)注的算法也重點針對數(shù)據(jù)方面,即數(shù)據(jù)算法。傳統(tǒng)的數(shù)據(jù)算法和現(xiàn)在大數(shù)據(jù)時代的數(shù)據(jù)算法是有很大區(qū)別的,數(shù)據(jù)的數(shù)量、類型、采集方式、存儲方式、應(yīng)用場景等各個方面都出現(xiàn)了很大的變化。隨著時代的發(fā)展,數(shù)據(jù)算法的目的和方式都在深刻地變化著。如圖

2-7

所示,我們把傳統(tǒng)的數(shù)據(jù)算法叫作數(shù)據(jù)分析,數(shù)據(jù)分析的目的在于對已有的數(shù)據(jù)進行描述性分析,重點在于發(fā)現(xiàn)數(shù)據(jù)隱含的規(guī)律,進行商業(yè)分析和處理;我們把大數(shù)據(jù)時代的數(shù)據(jù)算法稱為數(shù)據(jù)科學,可將其應(yīng)用于數(shù)據(jù)未來預測。表2-6具體說明了兩者的區(qū)別。圖2-7數(shù)據(jù)分析與數(shù)據(jù)科學項目數(shù)據(jù)分析(傳統(tǒng)的數(shù)據(jù)算法)數(shù)據(jù)科學(大數(shù)據(jù)時代的數(shù)據(jù)算法)算法目的對歷史數(shù)據(jù)的總結(jié)分析對未來趨勢的預估和預判實質(zhì)工作數(shù)據(jù)分析和數(shù)據(jù)優(yōu)化數(shù)據(jù)發(fā)現(xiàn)、挖掘、規(guī)整和可視化實現(xiàn)結(jié)果分析報表和數(shù)據(jù)儀表盤數(shù)據(jù)產(chǎn)品典型工具Hive、Impala、SparkSQL、HBase等MLlib、Mahout等典型技術(shù)ETL和多元統(tǒng)計分析預測分析技術(shù)需求數(shù)據(jù)工程師、SQL工程師、數(shù)據(jù)編程統(tǒng)計分析、機器學習、數(shù)據(jù)編程表2-6 傳統(tǒng)的數(shù)據(jù)算法與大數(shù)據(jù)時代的數(shù)據(jù)算法的區(qū)別2.4.2大數(shù)據(jù)時代的算法數(shù)據(jù)科學在于深入挖掘隱藏在數(shù)據(jù)深層次的信息并以此為基礎(chǔ)創(chuàng)造數(shù)據(jù)產(chǎn)品并提供商業(yè)預測和推斷。表2-6已經(jīng)對數(shù)據(jù)科學做了比較系統(tǒng)和全面的整體介紹,而本小節(jié)重點在于數(shù)據(jù)科學的數(shù)據(jù)算法,顯然目前最成熟、最流行的便是機器學習(MachineLearning)。機器學習是在不設(shè)定任何前提規(guī)則的情況下由計算機完成學習,進而進行相應(yīng)判斷工作的科學。抽象地講,就是讓計算機模擬人類的思維學習方式去對海量的數(shù)據(jù)和邏輯關(guān)系進行學習研究,通過計算機的算法給出結(jié)論和判斷。

機器學習作為算法理論,是一門涉及多領(lǐng)域的交叉學科,包括概率論、數(shù)理統(tǒng)計、神經(jīng)網(wǎng)絡(luò)、線性代數(shù)、數(shù)值分析、計算機算法實現(xiàn)等多方面的知識,包含數(shù)學、計算機、哲學、人體學等的多種基礎(chǔ)科學。其最終目的在于專門研究如何用計算機模擬或者說實現(xiàn)人類的學習行為,以通過計算機的模擬學習獲取新的知識和技能,并通過學習得來的“智慧”和理論來指導實現(xiàn)數(shù)據(jù)的分析和應(yīng)用,尤其是對未來的預測和判斷。

機器學習具有顯著的技術(shù)特征和計算特色,主要包括如下技術(shù)優(yōu)勢。(1)由于機器學習全部基于數(shù)據(jù),排除了人類主觀意識的干擾和經(jīng)驗主義,其學習或者說預測結(jié)果更加可信,并且隨著數(shù)據(jù)量的增加帶來更高的精確性。(2)機器學習可以由計算機實現(xiàn)自動的數(shù)據(jù)預測和一系列的數(shù)據(jù)推薦產(chǎn)品級應(yīng)用。(3)機器學習算法理論上可以在毫秒級別實現(xiàn)并給出學習結(jié)果,這就允許我們進行事務(wù)的實時分析處理和運用,相比人類管理的層層審批制效率提高很多。(4)機器學習算法擴展性良好,理論上可以處理所有可用數(shù)據(jù)。

下面我們簡單總結(jié)機器學習的不足。(1)機器學習的算法需要有些提前的預判(打標簽),并且需要盡量完善、充實數(shù)據(jù)。(2)機器學習一般不能得到100%正確的預測結(jié)果,具有一定的風險。表

2-7

詳細介紹了目前較流行的機器學習算法,具體的算法內(nèi)容我們會在后續(xù)的章節(jié)中詳述。機器學習分類常用算法監(jiān)督類學習分類算法(自然貝葉斯、決策樹、隨機森林等)回歸類算法(線性回歸、邏輯回歸、支持向量機等)無監(jiān)督學習聚類算法(距離聚類、快速聚類等)抽維算法(主因子、典型相關(guān)等)自動推薦系統(tǒng)協(xié)同過濾特征提取特征抽取和事務(wù)轉(zhuǎn)換最優(yōu)化處理最優(yōu)化算法(諸如最短距離等)表2-7 目前較流行的機器學習算法2.5大數(shù)據(jù)系統(tǒng)2.5.1Hadoop平臺Hadoop平臺是Apache的開源的、理論上可無限擴展的分布式計算平臺,其設(shè)計的初始目的是讓大型計算機集群對海量的數(shù)據(jù)進行常規(guī)編程計算實現(xiàn)。利用Hadoop大數(shù)據(jù)平臺,應(yīng)用人員可以讓少到一臺、多到幾千臺計算機一起提供本地獨立存儲和運算的計算框架。相對于傳統(tǒng)單獨、高效同時也昂貴的存儲和計算中心,Hadoop平臺旨在應(yīng)用廉價的商用計算機集群,這樣顯然會有幾臺計算機存在不可靠性。而Hadoop集群框架在設(shè)計之初即考慮到會出現(xiàn)這樣的安全隱患,只有在出現(xiàn)大規(guī)模的集群崩潰的情況下,開發(fā)應(yīng)用人員才需要做出人工處理。1.Hadoop平臺的主要模塊(1)HadoopCommonHadoopCommon是平臺統(tǒng)一的集成,用來支持其他模塊的共同工作,它就好比是計算機系統(tǒng)的主板,用來連通其他組件。(2)HDFSHDFS全稱為HadoopDistributedFileSystem,它是平臺提供的分布式集群存儲框架,支持平臺對海量數(shù)據(jù)進行集群存儲,并且保證數(shù)據(jù)的可靠、穩(wěn)定和安全。(3)YARNYARN即YetAnotherResourceNegotiator,是Hadoop平臺的集群資源管理和工作流程控制框架。(4)MapReduceMapReduce是平臺YARN框架管理下的分布式集群高效計算框架。2.Hadoop平臺的基本特征(1)Hadoop平臺的三大組成①可靠、高效的分布式大數(shù)據(jù)存儲框架—HDFS。②用于并行集群處理的計算框架—MapReduce、Crunch、Cascading、Hive、Tez、Impala、pig、Mahout等。③平臺集群資源管理器—YARN和Slider。(2)Hadoop平臺在經(jīng)濟、商業(yè)和技術(shù)領(lǐng)域的適應(yīng)性和優(yōu)勢①經(jīng)濟性。②商業(yè)性。③技術(shù)性。(3)Hadoop平臺的典型技術(shù)特點①商業(yè)實用性強。②糾錯能力強。③優(yōu)秀的隨時可擴展性。④簡單實用。2.5.2Spark平臺Hadoop平臺在處理海量大數(shù)據(jù)方面的技術(shù)優(yōu)勢使其在整個大數(shù)據(jù)時代得到了飛速的發(fā)展,也得到了頂端互聯(lián)網(wǎng)科技巨頭如Google、Facebook、百度、阿里巴巴等企業(yè)極大的青睞和商業(yè)上的成功運用。但是,Hadoop平臺下的MR(MapReduce)分布式計算框架存在致命的缺陷,因為MR只能進行一次性編程計算處理,即MR只能從HDFS中一次取出數(shù)據(jù)計算,然后再存入HDFS,所以MR就很難進行海量數(shù)據(jù)的迭代運算。

如果有幾十次的迭代過程,那么編程人員必須進行相同數(shù)量的人工編程,同時計算機集群也要進行同樣次數(shù)的數(shù)據(jù)存入和提取,這樣是十分低效的。為了解決Hadoop平臺MR分布式計算框架的這些問題,人們開始尋找新的分布式計算框架,以保證新的技術(shù)框架可以進行很好的迭代處理,同時最好可以省去大數(shù)據(jù)平臺不斷讀出和寫入分布式數(shù)據(jù)庫的集群工作量。這個時候Spark分布式計算平臺就應(yīng)運而生了,當然Spark平臺的出現(xiàn)不僅是大數(shù)據(jù)分布式運算的實際技術(shù)需求,也是信息計算不斷發(fā)展完善才最終實現(xiàn)的。圖2-8給出了計算機的運算技術(shù)趨勢。圖2-8計算機的運算技術(shù)趨勢

顯然由圖2-8可知,只有當高速設(shè)備的價格便宜到一定程度后才能被充分發(fā)掘和利用。由圖2-9可知,計算機內(nèi)存運算的速度和效率是比較高的。圖2-9計算機內(nèi)存運算的速度和效率對比

Spark最初是2009年由加州大學伯克利分校的RAD實驗室開啟的研究項目,此后RAD實驗室更名為AMPLab,此項目組在利用開源平臺HadoopMapReduce分布式運算框架后意識到了其在迭代運算方面的不足,開始計劃通過內(nèi)存計算的方式改進MR的相關(guān)運算不足的缺陷,于是在2011年,AMPLab發(fā)展了更高運算部分的Shark和SparkStreaming,這些組件被稱為BerkeleyDataAnalyticsStack(BDAS)。這些都是Spark正式版本的主要組成部分,Spark作為開源項目最開始版本,完成于2010年3月,此后于2013年6月轉(zhuǎn)為Apache軟件基金會旗下的頂級開源項目。由于Hadoop也是Apache軟件基金會旗下的頂級大數(shù)據(jù)平臺項目,這樣無疑加速了

Spark

的發(fā)展,其具體發(fā)行版本如圖

2-10所示。圖2-10Spark的發(fā)行版本項目MapReduceSpark實用性不容易編程、不實用有良好的API接口,方便對接編程,很實用特點初始實現(xiàn)分布式計算實現(xiàn)分布式內(nèi)存計算迭代運算幾乎不能實現(xiàn)迭代運算,每次MR都要進行數(shù)據(jù)的重新讀入和加載可以將迭代數(shù)據(jù)集直接加載到內(nèi)存處理,實現(xiàn)內(nèi)存環(huán)境下的直接迭代運算容錯性由HDFS分布式存儲框架實現(xiàn)內(nèi)存數(shù)據(jù)集直接實現(xiàn)執(zhí)行模型只能進行批處理批處理、迭代處理、流處理均可支持的編程語言類型主要是JavaJava、Scala、Python、R等表2-8 Spark與MapReduce的區(qū)別2.6大數(shù)據(jù)的數(shù)據(jù)類型

大數(shù)據(jù)的主要數(shù)據(jù)類型包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)(見圖

2-11),非結(jié)構(gòu)化數(shù)據(jù)越來越成為數(shù)據(jù)的主要部分。IDC的調(diào)查報告顯示:企業(yè)中80%的數(shù)據(jù)都是非結(jié)構(gòu)化數(shù)據(jù),這些數(shù)據(jù)每年約增長60%。大數(shù)據(jù)就是互聯(lián)網(wǎng)發(fā)展到現(xiàn)今階段的一種表象或特征而已,沒有必要神話它或?qū)λ3志次分模谝栽朴嬎銥榇淼募夹g(shù)創(chuàng)新大幕的襯托下,這些原本看起來很難收集和使用的數(shù)據(jù)開始很容易地被利用起來。在各行各業(yè)的不斷創(chuàng)新下,大數(shù)據(jù)會逐步為人類創(chuàng)造更多的價值。圖2-11大數(shù)據(jù)的主要數(shù)據(jù)類型2.6.1結(jié)構(gòu)化數(shù)據(jù)簡單來說,結(jié)構(gòu)化數(shù)據(jù)就是傳統(tǒng)關(guān)系型數(shù)據(jù)庫數(shù)據(jù),也稱作行數(shù)據(jù),是由二維表結(jié)構(gòu)來邏輯表達和實現(xiàn)的數(shù)據(jù),嚴格地遵循數(shù)據(jù)格式與長度規(guī)范,主要通過關(guān)系型數(shù)據(jù)庫進行存儲和管理。結(jié)構(gòu)化數(shù)據(jù)標記是一種能讓網(wǎng)站以更好的姿態(tài)展示在搜索結(jié)果中的方式,搜索引擎都支持標準的結(jié)構(gòu)化數(shù)據(jù)標記。結(jié)構(gòu)化數(shù)據(jù)可以通過固有鍵值獲取相應(yīng)信息,并且數(shù)據(jù)的格式嚴格固定,如RDBMSdata。最常見的結(jié)構(gòu)化就是模式化,結(jié)構(gòu)化數(shù)據(jù)也就是模式化數(shù)據(jù)。

大多數(shù)傳統(tǒng)數(shù)據(jù)技術(shù)應(yīng)用主要基于結(jié)構(gòu)化數(shù)據(jù),如銀行業(yè)數(shù)據(jù)、保險業(yè)數(shù)據(jù)、政府企事業(yè)單位數(shù)據(jù)等主要依托結(jié)構(gòu)化數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)也是傳統(tǒng)行業(yè)依托大數(shù)據(jù)技術(shù)提高綜合競爭力和創(chuàng)新能力的主要數(shù)據(jù)類型。2.6.2半結(jié)構(gòu)化數(shù)據(jù)半結(jié)構(gòu)化數(shù)據(jù)和普通純文本相比具有一定的結(jié)構(gòu)性,但和具有嚴格理論模型的關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)相比更靈活。它是一種適用于數(shù)據(jù)庫集成的數(shù)據(jù)模型,也就是說,適于描述包含在兩個或多個數(shù)據(jù)庫(這些數(shù)據(jù)庫含有不同模式的相似數(shù)據(jù))中的數(shù)據(jù)。它是一種標記服務(wù)的基礎(chǔ)模型,用于在Web上共享信息。人們對半結(jié)構(gòu)化數(shù)據(jù)模型感興趣主要是它的靈活性。特別地,半結(jié)構(gòu)化數(shù)據(jù)是“無模式”的。更準確地說,其數(shù)據(jù)是自描述的。它攜帶了關(guān)于其模式的信息,并且這樣的模式可以隨時間在單一數(shù)據(jù)庫內(nèi)任意改變。這種靈活性可能使查詢處理更加困難,但它給用戶提供了顯著的優(yōu)勢。

半結(jié)構(gòu)化數(shù)據(jù)的結(jié)構(gòu)模式具有下述特征。①數(shù)據(jù)結(jié)構(gòu)自描述性。結(jié)構(gòu)與數(shù)據(jù)相交融,在研究和應(yīng)用中不需要區(qū)分“元數(shù)據(jù)”和“一般數(shù)據(jù)”(兩者合二為一)。②數(shù)據(jù)結(jié)構(gòu)描述的復雜性。結(jié)構(gòu)難以納入現(xiàn)有的各種描述框架,實際應(yīng)用中不易進行清晰的理解與把握。③數(shù)據(jù)結(jié)構(gòu)描述的動態(tài)性。數(shù)據(jù)變化通常會導致結(jié)構(gòu)模式變化,整體上具有動態(tài)的結(jié)構(gòu)模式。

常規(guī)的數(shù)據(jù)模型如E-R模型、關(guān)系模型和對象模型的特點恰恰與上述特征相反,因為這些常規(guī)數(shù)據(jù)模型是結(jié)構(gòu)化數(shù)據(jù)模型。而相對于結(jié)構(gòu)化數(shù)據(jù),半結(jié)構(gòu)化數(shù)據(jù)的構(gòu)成更為復雜和不確定,從而也具有更高的靈活性,能夠適應(yīng)更為廣泛的應(yīng)用需求。其實,用半結(jié)構(gòu)化的視角看待數(shù)據(jù)是非常合理的。沒有模式的限定,數(shù)據(jù)可以自由地流入系統(tǒng),還可以自由地更新,更便于客觀地描述事物。在使用時模式才應(yīng)該起作用,使用者若要獲取數(shù)據(jù)就應(yīng)當構(gòu)建需要的模式來檢索數(shù)據(jù)。由于不同的使用者構(gòu)建不同的模式,數(shù)據(jù)將被最大化利用。這才是使用數(shù)據(jù)的最自然的方式。2.6.3非結(jié)構(gòu)化數(shù)據(jù)非結(jié)構(gòu)化數(shù)據(jù)是與結(jié)構(gòu)化數(shù)據(jù)相對的,不適合用數(shù)據(jù)庫二維表來表現(xiàn),包括所有格式的辦公文檔、XML、HTML、各類報表、圖片、音頻、視頻信息等。支持非結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫采用多值字段、子字段和變長字段機制進行數(shù)據(jù)項的創(chuàng)建和管理,被廣泛應(yīng)用于全文檢索和各種多媒體信息處理領(lǐng)域。非結(jié)構(gòu)化數(shù)據(jù)不可以通過鍵值獲取相應(yīng)信息。非結(jié)構(gòu)化數(shù)據(jù)一般指無法結(jié)構(gòu)化的數(shù)據(jù),如圖片、文件、超媒體等典型信息,在互聯(lián)網(wǎng)上的信息內(nèi)容形式中占據(jù)了很大比例。

隨著“互聯(lián)網(wǎng)+”戰(zhàn)略的實施,越來越多的非結(jié)構(gòu)化數(shù)據(jù)將不斷產(chǎn)生。據(jù)預測,非結(jié)構(gòu)化數(shù)據(jù)將占所有數(shù)據(jù)的

70%~80%,甚至更高。經(jīng)過多年的發(fā)展,結(jié)構(gòu)化數(shù)據(jù)分析和挖掘技術(shù)已經(jīng)形成了相對比較成熟的技術(shù)體系。也正是由于非結(jié)構(gòu)化數(shù)據(jù)中沒有限定結(jié)構(gòu)形式,表示靈活,蘊含了豐富的信息。因此,綜合來看,在大數(shù)據(jù)分析和挖掘中,掌握非結(jié)構(gòu)化數(shù)據(jù)處理技術(shù)是至關(guān)重要的。

目前,其問題在于語言表達的靈活性和多樣性,具體的非結(jié)構(gòu)化數(shù)據(jù)處理技術(shù)包括:①Web頁面信息內(nèi)容提取;②結(jié)構(gòu)化處理(含文本的詞匯切分、詞性分析、歧義處理等);③語義處理(含實體提取、詞匯相關(guān)度分析、句子相關(guān)度分析、篇章相關(guān)度分析、句法分析等);④文本建模(含向量空間模型、主題模型等);⑤隱私保護(含社交網(wǎng)絡(luò)的連接型數(shù)據(jù)處理、位置軌跡型數(shù)據(jù)處理等)。這些技術(shù)所涉及的技術(shù)較廣,在情感分類、客戶語音挖掘、法律文書分析等許多領(lǐng)域被廣泛地應(yīng)用。2.7大數(shù)據(jù)應(yīng)用的開發(fā)流程

本節(jié)主要介紹大數(shù)據(jù)應(yīng)用的開發(fā)流程。典型的大數(shù)據(jù)應(yīng)用開發(fā)流程如圖2-12所示。圖2-12典型的大數(shù)據(jù)應(yīng)用開發(fā)流程1.提出商業(yè)需求并做出初步設(shè)想2.根據(jù)需求確定必需的數(shù)據(jù)集3.數(shù)據(jù)采集4.數(shù)據(jù)預處理5.數(shù)據(jù)分析和挖掘6.大數(shù)據(jù)產(chǎn)品可視化2.8數(shù)據(jù)科學算法的應(yīng)用流程

大數(shù)據(jù)時代的數(shù)據(jù)算法是數(shù)據(jù)科學(DataScience)的算法,旨在通過海量的數(shù)據(jù),經(jīng)過科學的商業(yè)思維和新興的大數(shù)據(jù)算法,對事物的未來發(fā)展和決策做科學有效的指導和預測,進而得到科學、高效的商業(yè)決策和合適、精準的市場預測與評估,為企業(yè)的科學發(fā)展和規(guī)劃提供積極有效的大數(shù)據(jù)支撐。典型的數(shù)據(jù)科學算法應(yīng)用流程如圖2-13所示。1.科學假設(shè)和建模2.評測有效性3.根據(jù)評測結(jié)果提出改進意見4.交流項目進展圖2-13典型的數(shù)據(jù)科學算法應(yīng)用流程大數(shù)據(jù)導論

BIGDATATechnology第3章數(shù)據(jù)采集與預處理

本章主要內(nèi)容如下。(1)大數(shù)據(jù)的來源。(2)數(shù)據(jù)的采集方法。(3)數(shù)據(jù)預處理流程。3.1大數(shù)據(jù)的來源1.信息管理系統(tǒng)企業(yè)內(nèi)部使用的信息管理系統(tǒng),包括辦公自動化系統(tǒng)、業(yè)務(wù)管理系統(tǒng)等。信息管理系統(tǒng)主要通過用戶輸入和系統(tǒng)二次加工的方式產(chǎn)生數(shù)據(jù),其產(chǎn)生的數(shù)據(jù)大多數(shù)為結(jié)構(gòu)化數(shù)據(jù),通常存儲在數(shù)據(jù)庫中。2.網(wǎng)絡(luò)信息系統(tǒng)基于網(wǎng)絡(luò)運行的信息系統(tǒng)即網(wǎng)絡(luò)信息系統(tǒng)是大數(shù)據(jù)產(chǎn)生的重要方式,如電子商務(wù)系統(tǒng)、社交網(wǎng)絡(luò)、社會媒體、搜索引擎等,都是常見的網(wǎng)絡(luò)信息系統(tǒng)。網(wǎng)絡(luò)信息系統(tǒng)產(chǎn)生的大數(shù)據(jù)多為半結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。在本質(zhì)上,網(wǎng)絡(luò)信息系統(tǒng)是信息管理系統(tǒng)的延伸,是專屬于某個領(lǐng)域的應(yīng)用,具備某個特定的目的。3.物聯(lián)網(wǎng)系統(tǒng)物聯(lián)網(wǎng)是新一代信息技術(shù),其核心和基礎(chǔ)仍然是互聯(lián)網(wǎng),是在互聯(lián)網(wǎng)基礎(chǔ)上延伸和擴展的網(wǎng)絡(luò),其用戶端延伸和擴展到了任何物品與物品之間,進行信息交換和通信,而其具體實現(xiàn)是通過傳感技術(shù)獲取外界的物理、化學、生物等數(shù)據(jù)信息。4.科學實驗系統(tǒng)科學實驗系統(tǒng)主要用于科學技術(shù)研究,可以由真實的實驗產(chǎn)生數(shù)據(jù),也可以通過模擬方式獲取仿真數(shù)據(jù)。大數(shù)據(jù)的數(shù)據(jù)類型按來源可分為傳統(tǒng)商業(yè)數(shù)據(jù)、互聯(lián)網(wǎng)數(shù)據(jù)與物聯(lián)網(wǎng)數(shù)據(jù)。3.1.1傳統(tǒng)商業(yè)數(shù)據(jù)傳統(tǒng)商業(yè)數(shù)據(jù)是來自于企業(yè)ERP系統(tǒng)、各種POS終端及網(wǎng)上支付系統(tǒng)等業(yè)務(wù)系統(tǒng)的數(shù)據(jù),傳統(tǒng)商業(yè)是主要的數(shù)據(jù)來源。3.1.2互聯(lián)網(wǎng)數(shù)據(jù)這里的互聯(lián)網(wǎng)數(shù)據(jù)是指網(wǎng)絡(luò)空間交互過程中產(chǎn)生的大量數(shù)據(jù),包括通信記錄及

QQ、微信、微博等社交媒體產(chǎn)生的數(shù)據(jù),其數(shù)據(jù)復雜且難以被利用。互聯(lián)網(wǎng)數(shù)據(jù)具有大量化、多樣化、快速化等特點。1.大量化在信息化時代背景下,網(wǎng)絡(luò)空間數(shù)據(jù)增長迅猛,數(shù)據(jù)集合規(guī)模已實現(xiàn)了從

GB

級到PB級的飛躍,互聯(lián)網(wǎng)數(shù)據(jù)則需要通過ZB表示。2.多樣化互聯(lián)網(wǎng)數(shù)據(jù)的類型多樣化,包括結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。3.快速化互聯(lián)網(wǎng)數(shù)據(jù)一般以數(shù)據(jù)流形式快速產(chǎn)生,且具有動態(tài)變化的特征,其時效性要求用戶必須準確掌握互聯(lián)網(wǎng)數(shù)據(jù)流,以更好地利用這些數(shù)據(jù)。

互聯(lián)網(wǎng)是大數(shù)據(jù)信息的主要來源,能夠采集什么樣的信息、采集到多少信息及哪些類型的信息,直接影響著大數(shù)據(jù)應(yīng)用功能最終效果的發(fā)揮。信息數(shù)據(jù)采集需要考慮采集量、采集速度、采集范圍和采集類型,信息數(shù)據(jù)采集速度可以達到秒級甚至還能更快;采集范圍涉及微博、論壇、博客,新聞網(wǎng)、電商網(wǎng)站、分類網(wǎng)站等各種網(wǎng)頁;采集類型包括文本、數(shù)據(jù)、URL、圖片、視頻、音頻等。3.1.3物聯(lián)網(wǎng)數(shù)據(jù)物聯(lián)網(wǎng)指在計算機互聯(lián)網(wǎng)的基礎(chǔ)上,利用射頻識別、傳感器、紅外感應(yīng)器、無線數(shù)據(jù)通信等技術(shù),構(gòu)造一個覆蓋世界上萬事萬物的TheInternetof

Things,也就是“實現(xiàn)物物相連的互聯(lián)網(wǎng)絡(luò)”。其內(nèi)涵包含兩個方面:一是物聯(lián)網(wǎng)的核心和基礎(chǔ)仍是互聯(lián)網(wǎng),是在互聯(lián)網(wǎng)基礎(chǔ)之上延伸和擴展的一種網(wǎng)絡(luò);二是其用戶端延伸和擴展到了任何物品與物品之間。

物聯(lián)網(wǎng)的定義:通過射頻識別(RadioFrequencyIDentification,RFID)裝置、傳感器、紅外感應(yīng)器、全球定位系統(tǒng)、激光掃描器等信息傳感設(shè)備,按約定的協(xié)議,把任何物品與互聯(lián)網(wǎng)相連接,以進行信息交換和通信,從而實現(xiàn)智慧化識別、定位、跟蹤、監(jiān)控和管理的一種網(wǎng)絡(luò)體系。物聯(lián)網(wǎng)數(shù)據(jù)是除了人和服務(wù)器之外,在射頻識別、物品、設(shè)備、傳感器等節(jié)點產(chǎn)生的大量數(shù)據(jù),包括射頻識別裝置、音頻采集器、視頻采集器、傳感器、全球定位設(shè)備、辦公設(shè)備、家用設(shè)備和生產(chǎn)設(shè)備等產(chǎn)生的數(shù)據(jù)。

物聯(lián)網(wǎng)數(shù)據(jù)的主要特點如下。(1)物聯(lián)網(wǎng)中的數(shù)據(jù)量更大。(2)物聯(lián)網(wǎng)中的數(shù)據(jù)傳輸速率更高。(3)物聯(lián)網(wǎng)中的數(shù)據(jù)更加多樣化。(4)物聯(lián)網(wǎng)對數(shù)據(jù)真實性的要求更高。3.2數(shù)據(jù)的采集方法

數(shù)據(jù)采集技術(shù)是數(shù)據(jù)科學的重要組成部分,已廣泛應(yīng)用于國民經(jīng)濟和國防建設(shè)的各個領(lǐng)域,并且隨著科學技術(shù)的發(fā)展,尤其是計算機技術(shù)的發(fā)展和普及,數(shù)據(jù)采集技術(shù)具有更廣泛的發(fā)展前景。大數(shù)據(jù)的采集技術(shù)為大數(shù)據(jù)處理的關(guān)鍵技術(shù)之一。3.2.1系統(tǒng)日志的采集方法很多互聯(lián)網(wǎng)企業(yè)都有自己的海量數(shù)據(jù)采集工具,多用于系統(tǒng)日志采集,如Facebook公司的Scribe、Hadoop平臺的Chukwa、Cloudera公司的Flume等。這些工具均采用分布式架構(gòu),能滿足每秒數(shù)百兆的日志數(shù)據(jù)采集和傳輸需求。1.ScribeScribe是Facebook公司開源的日志收集系統(tǒng),在Facebook公司內(nèi)部已經(jīng)得到大量的應(yīng)用。Scribe可以從各種日志源上收集日志,存儲到一個中央存儲系統(tǒng)[其可以是網(wǎng)絡(luò)文件系統(tǒng)(NetworkFileSystem,NFS)、分布式文件系統(tǒng)等],以便于進行集中的統(tǒng)計分析處理。Scribe為日志的“分布式收集,統(tǒng)一處理”提供了一個可擴展的、高容錯的方案。Scribe架構(gòu)如圖3-1所示。圖3-1Scribe架構(gòu)(1)ScribeAgentScribeAgent實際上是一個ThriftClient,也是向Scribe發(fā)送數(shù)據(jù)的唯一方法。Scribe內(nèi)部定義了一個Thrift接口,用戶使用該接口將數(shù)據(jù)發(fā)送給不同的對象。ScribeAgent發(fā)送的每條數(shù)據(jù)記錄包含一個種類(Category)和一個信息(Massage)。(2)ScribeScribe接收ThriftAgent發(fā)送的數(shù)據(jù),它從各種數(shù)據(jù)源上收集數(shù)據(jù),放到一個共享隊列上,然后推送到后端的中央存儲系統(tǒng)上。當中央存儲系統(tǒng)出現(xiàn)故障時,Scribe可以暫時把日志寫到本地文件中,待中央存儲系統(tǒng)恢復性能后,Scribe再把本地日志續(xù)傳到中央存儲系統(tǒng)上。Scribe在處理數(shù)據(jù)時根據(jù)Category將不同主題的數(shù)據(jù)存儲到不同目錄中,以便于分別進行處理。(3)中央存儲系統(tǒng)存儲系統(tǒng)實際上就是Scribe中的store,當前Scribe支持非常多的store類型,包括文件、Buffer或數(shù)據(jù)庫。2.ChukwaChukwa

提供了一種對大數(shù)據(jù)量日志類數(shù)據(jù)的采集、存儲、分析和展示的全套解決方案和框架。在數(shù)據(jù)生命周期的各個階段,Chukwa能夠提供近乎完美的解決方案。Chukwa可以用于監(jiān)控大規(guī)模(2000個以上節(jié)點,每天產(chǎn)生數(shù)據(jù)量在TB級別)Hadoop集群的整體運行情況并對它們的日志進行分析。Chukwa結(jié)構(gòu)如圖3-2所示。圖3-2Chukwa架構(gòu)(1)適配器(ChukwaAdapter)適配器是直接采集數(shù)據(jù)的接口和工具。每種類型的數(shù)據(jù)對應(yīng)一個Adapter,目前包括的數(shù)據(jù)類型有命令行輸出、log文件和httpSender等。同時用戶也可以自己實現(xiàn)一個Adapter來滿足需求。(2)代理(ChukwaAgent)Agent給Adapter提供各種服務(wù),包括啟動和關(guān)閉Adapter,將Adapter收集的數(shù)據(jù)通過HTTP傳遞給Collector,并定期記錄Adapter狀態(tài),以便Adapter出現(xiàn)故障后能迅速恢復。一個Agent可以管理多個Adapter。(3)收集器(ChukwaCollector)它負責對多個數(shù)據(jù)源發(fā)來的數(shù)據(jù)進行合并,并定時寫入集群。因為Hadoop集群擅長處理少量的大文件,而對大量小文件的處理則不是它的強項。針對這一點,Collector可以將數(shù)據(jù)先進行部分合并,再寫入集群,防止大量小文件的寫入。(4)多路分配器(ChukwaDemux)它利用MapReduce對數(shù)據(jù)進行分類、排序和去重。(5)存儲系統(tǒng)Chukwa采用了HDFS作為存儲系統(tǒng)。HDFS的設(shè)計初衷是支持大文件存儲和小并發(fā)高速寫的應(yīng)用場景,而日志系統(tǒng)的特點恰好相反,它需要支持高并發(fā)低速率的寫和大量小文件的存儲,因此Chukwa框架使用多個部件,使HDFS滿足日志系統(tǒng)的需求。(6)數(shù)據(jù)展示Chukwa不是一個實時錯誤監(jiān)控系統(tǒng),它分析的數(shù)據(jù)是分鐘級別的,能夠展示集群中作業(yè)運行的時間、占用的

CPU

及故障節(jié)點等整個集群的性能變化,能夠幫助集群管理者監(jiān)控和解決問題。3.FlumeFlume是Cloudera公司提供的分布式、可靠和高可用的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時,F(xiàn)lume能對數(shù)據(jù)進行簡單處理,并寫入各種數(shù)據(jù)接收方,如文本、HDFS、HBase等。Flume可以被看作是一個管道式的日志數(shù)據(jù)處理系統(tǒng),其中數(shù)據(jù)流由事件(Event)貫穿始終。Event是Flume的基本數(shù)據(jù)單位,它包含日志數(shù)據(jù)并且攜帶消息頭,其中日志數(shù)據(jù)由字節(jié)數(shù)組組成,這些Event由外部數(shù)據(jù)源生成。

Flume運行的核心是Agent。Flume以Agent為最小的獨立運行單位,一個Agent就是一個JVM。在實際日志系統(tǒng)中,F(xiàn)lume由多個Agent串行或并行組成,完成不同日志數(shù)據(jù)的分析。每個Agent是一個完整的數(shù)據(jù)收集工具,并包含3個核心組件(見圖3-3),一個Agent可以包含多個Source、Channel或Sink。圖3-3Flume核心結(jié)構(gòu)(1)SourceSource是數(shù)據(jù)的收集端,負責將數(shù)據(jù)采集后進行特殊的格式化,將數(shù)據(jù)封裝到事件(Event)中,然后將事件推入Channel中。Flume提供了很多內(nèi)置的Source類型,支持Avro、log4j、syslog、UNIX終端輸出和httppost等不同格式的數(shù)據(jù)源,可以讓應(yīng)用程序同已有的Source直接打交道。如果內(nèi)置的Source無法滿足需求,用戶可自定義Source。(2)ChannelChannel是連接Source和Sink的組件,我們可以將它看作一個數(shù)據(jù)的緩沖區(qū),它可以將事件暫存到內(nèi)存中,也可以持久化存儲到本地磁盤上,直到Sink處理完該事件。Channel支持將數(shù)據(jù)存在內(nèi)存、JDBC、File等其他持久化存儲系統(tǒng)中。(3)SinkSink從Channel中取出事件,然后將數(shù)據(jù)發(fā)送到別處(可以是文件系統(tǒng)、數(shù)據(jù)庫、HDFS,也可以是其他Agent的Source)。在日志數(shù)據(jù)較少時,它可以將數(shù)據(jù)存儲在文件系統(tǒng)中,并且設(shè)定一定的時間間隔定時保存數(shù)據(jù)。

Flume使用事務(wù)性的方式保證傳送事件整個過程的可靠性。Sink必須在事件被存入Channel后,或者已經(jīng)被傳達到下一個目的地,才能把事件從Channel中刪除掉,這里的目的地包括下一個Agent、HDFS等。這樣數(shù)據(jù)流里的事件無論是在一個Agent里還是在多個Agent之間流轉(zhuǎn),都能保證可靠,因此以上的事務(wù)性保證了事件被成功存儲起來。例如,F(xiàn)lume支持在本地保存一份文件Channel作為備份,當Channel將事件存在內(nèi)存隊列里時,雖然處理速度快,但丟失的話無法恢復,這時可以將備份的數(shù)據(jù)進行恢復使用。

由于Flume提供了大量內(nèi)置的Source、Channel和Sink類型,而不同類型的Source、Channel和Sink可以自由組合。因此,多個Agent可以基于用戶設(shè)置的配置文件,靈活地組合進行協(xié)同工作,如圖3-4所示。圖3-4多Agent協(xié)同工作

Flume支持設(shè)置Sink的容錯和負載均衡技術(shù)(見圖3-5),這樣可以保證在一個Agent失效的情況下,整個系統(tǒng)仍能正常收集數(shù)據(jù),同時也不會因為Agent處于超負荷的工作狀態(tài),影響整個系統(tǒng)的運行效率。圖3-5Flume負載均衡和容錯3.2.2網(wǎng)頁數(shù)據(jù)的采集方法網(wǎng)絡(luò)大數(shù)據(jù)有許多不同于自然科學數(shù)據(jù)的特點,包括多源異構(gòu)、交互性、時效性、社會性、突發(fā)性和高噪聲等,不但非結(jié)構(gòu)化數(shù)據(jù)多,而且數(shù)據(jù)的實時性強。大量數(shù)據(jù)都是隨機動態(tài)產(chǎn)生的。網(wǎng)絡(luò)數(shù)據(jù)采集稱為“網(wǎng)頁抓屏”“數(shù)據(jù)挖掘”或“網(wǎng)絡(luò)收割”,通過“網(wǎng)絡(luò)爬蟲”程序?qū)崿F(xiàn)。網(wǎng)絡(luò)爬蟲一般是先“爬”到對應(yīng)的網(wǎng)頁上,再把需要的信息“鏟”下來。1.瀏覽器背后的網(wǎng)頁各式各樣的瀏覽器為我們提供了便捷的網(wǎng)站訪問方式,用戶只需要打開瀏覽器,鍵入想要訪問的鏈接,然后輕按回車鍵就可以讓網(wǎng)頁上的圖片、文字等內(nèi)容展現(xiàn)在面前。實際上,網(wǎng)頁上的內(nèi)容經(jīng)過了瀏覽器的渲染?,F(xiàn)在的瀏覽器大都提供了查看網(wǎng)頁源代碼的功能,我們可以利用這個功能查看網(wǎng)頁的實現(xiàn)方式。

另外,獲取網(wǎng)頁的過程是一個HTTP交互的過程。通常是瀏覽器向網(wǎng)頁所在的服務(wù)器發(fā)送一個Request請求,服務(wù)器收到請求后回給一個Response。Request里面會用一個Get方法告訴服務(wù)器我們需要什么內(nèi)容,一般都是我們所需要訪問的網(wǎng)址,服務(wù)器解析了Get后就回給本地網(wǎng)頁的內(nèi)容。網(wǎng)絡(luò)爬蟲模仿瀏覽器發(fā)送一個Get方法給服務(wù)器獲取網(wǎng)頁內(nèi)容。2.初識網(wǎng)絡(luò)爬蟲瀏覽器可以讓服務(wù)器發(fā)送一些數(shù)據(jù)到那些對接無線(或有線)網(wǎng)絡(luò)接口的應(yīng)用上。本節(jié)選用Python來實現(xiàn)網(wǎng)絡(luò)爬蟲的一些功能。輸出結(jié)果為importurllibfrombs4importBeautifulSouphtml=urllib.request.urlopen("")bsObj=BeautifulSoup(html,'lxml')print(bsObj.title)<title>百度一下,就知道</title>

urllib是Python的標準庫,提供網(wǎng)絡(luò)操作,包含從網(wǎng)絡(luò)請求數(shù)據(jù),處理cookie,甚至改變?nèi)缯埱箢^、用戶代理這樣的元數(shù)據(jù)函數(shù)。BeautifulSoup提供解析文檔抓取數(shù)據(jù)的函數(shù),可以方便地從網(wǎng)頁抓取數(shù)據(jù)。3.爬蟲的重要模塊網(wǎng)絡(luò)爬蟲可以獲取互聯(lián)網(wǎng)中網(wǎng)頁的內(nèi)容。它需要從網(wǎng)頁中抽取用戶需要的屬性內(nèi)容,并對抽取出的數(shù)據(jù)進行處理,轉(zhuǎn)換成適應(yīng)需求的格式存儲下來,供后續(xù)使用。

網(wǎng)絡(luò)爬蟲采集和處理數(shù)據(jù)包括如下3個重要模塊。采集模塊:負責從互聯(lián)網(wǎng)上抓取網(wǎng)頁,并抽取需要的數(shù)據(jù),包括網(wǎng)頁內(nèi)容抽取和網(wǎng)頁中鏈接的抽取。數(shù)據(jù)處理模塊:對采集模塊獲取的數(shù)據(jù)進行處理,包括對網(wǎng)頁內(nèi)容的格式轉(zhuǎn)換和鏈接的過濾。數(shù)據(jù)模塊:經(jīng)過處理的數(shù)據(jù)可以分為3類。第一類是SiteURL,即需要抓取數(shù)據(jù)的網(wǎng)站URL信息;第二類是SpiderURL,即已經(jīng)抓取過數(shù)據(jù)的網(wǎng)頁URL;第三類是Content,即經(jīng)過抽取的網(wǎng)頁內(nèi)容。

網(wǎng)絡(luò)爬蟲通過上述3個模塊獲取網(wǎng)頁中用戶需要的內(nèi)容。它從一個或若干初始網(wǎng)頁的URL開始,獲得初始網(wǎng)頁上的URL,在抓取網(wǎng)頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統(tǒng)的特定停止條件。4.爬蟲的基本工作流程爬蟲的基本工作流程如圖3-6所示。(1)從

SiteURL

中抽取一個或多個目標鏈接寫入

URL

隊列,作為爬蟲爬取信息的起點。(2)爬蟲的網(wǎng)頁分析模塊從URL隊列中讀取鏈接。(3)從Internet中獲取該鏈接的網(wǎng)頁信息。(4)從網(wǎng)頁內(nèi)容中抽取所需屬性的內(nèi)容值。圖3-6爬蟲的基本工作流程(5)將獲取的網(wǎng)頁內(nèi)容值寫入數(shù)據(jù)庫的Content,并將此URL存入SpiderURL。(6)從當前網(wǎng)頁中抽取新的網(wǎng)頁鏈接。(7)從數(shù)據(jù)庫中讀取已經(jīng)爬取過內(nèi)容的網(wǎng)頁地址,即SpiderURL中的鏈接地址。(8)將抽取出的URL和已經(jīng)抓取過的URL進行比較,以過濾URL。(9)如果該網(wǎng)頁地址沒有被抓取過,則將該地址寫入SiteURL;如果該地址已經(jīng)被抓取過,則放棄存儲此網(wǎng)頁鏈接。5.爬蟲的網(wǎng)頁抓取策略網(wǎng)絡(luò)爬蟲從網(wǎng)站首頁獲取網(wǎng)頁內(nèi)容和鏈接信息后,會根據(jù)一定的搜索策略從隊列中選擇下一步要抓取的網(wǎng)頁URL,并重復執(zhí)行上述過程,直至達到爬蟲程序滿足某一條件時才停止。因此,待抓取URL隊列是爬蟲很重要的一部分。待抓取URL隊列中的URL以何種順序排列是一個很重要的問題,因為涉及先抓取哪個頁面,后抓取哪個頁面。而決定這些URL排列順序的方法,叫作抓取策略。一般一個網(wǎng)頁會存在很多鏈接,而鏈接指向的網(wǎng)頁中又會有很多鏈接,甚至有可能兩個網(wǎng)頁中又包含了同一鏈接等,這些網(wǎng)頁鏈接的關(guān)系可以看作一個有向圖,如圖

3-7

所示。圖3-7URL抓取策略(1)深度優(yōu)先遍歷策略深度優(yōu)先遍歷策略指網(wǎng)絡(luò)爬蟲會從起始頁開始,一個鏈接一個鏈接地跟蹤下去,處理完這條線路之后再轉(zhuǎn)入下一個起始頁,繼續(xù)跟蹤鏈接。如圖3-7所示,從首頁A開始,A網(wǎng)頁有B鏈接,先抓取B網(wǎng)頁;而B網(wǎng)頁包含鏈接E和F,接著抓取E鏈接;當網(wǎng)頁E中不再有鏈接時則抓取B中的鏈接F。對網(wǎng)頁B中的鏈接抓取完后再對C和D網(wǎng)頁采用同樣的深度遍歷方法進行抓取。深度優(yōu)先遍歷策略盡可能對縱深方向進行搜索,直至所有鏈接被抓取完畢。(2)寬度優(yōu)先遍歷策略寬度優(yōu)先遍歷策略的基本思想是將首頁中發(fā)現(xiàn)的鏈接直接插入待抓取URL隊列的末尾,即網(wǎng)絡(luò)爬蟲會先抓取起始網(wǎng)頁中所有的鏈接網(wǎng)頁,然后再選擇其中的一個鏈接網(wǎng)頁,繼續(xù)抓取在此網(wǎng)頁中鏈接的所有網(wǎng)頁。如圖3-7所示,寬度優(yōu)先遍歷路徑:首先抓取A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論