《大數(shù)據(jù)導(dǎo)論(第2版)》全套教學(xué)課件_第1頁(yè)
《大數(shù)據(jù)導(dǎo)論(第2版)》全套教學(xué)課件_第2頁(yè)
《大數(shù)據(jù)導(dǎo)論(第2版)》全套教學(xué)課件_第3頁(yè)
《大數(shù)據(jù)導(dǎo)論(第2版)》全套教學(xué)課件_第4頁(yè)
《大數(shù)據(jù)導(dǎo)論(第2版)》全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩343頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

大數(shù)據(jù)導(dǎo)論全套可編輯PPT課件章節(jié)名稱16學(xué)時(shí)方案32學(xué)時(shí)方案48學(xué)時(shí)方案1大數(shù)據(jù)與數(shù)據(jù)科學(xué)1242數(shù)據(jù)采集與預(yù)處理2463數(shù)據(jù)存儲(chǔ)2464大數(shù)據(jù)處理2465數(shù)據(jù)分析2466數(shù)據(jù)可視化2447數(shù)據(jù)安全與隱私2468大數(shù)據(jù)應(yīng)用2469數(shù)據(jù)思維124第一章

大數(shù)據(jù)與數(shù)據(jù)科學(xué)全套可編輯PPT課件

2011年麥肯錫就報(bào)告稱,到2018年,僅美國(guó)就可能面臨14萬(wàn)至19萬(wàn)人的深度分析人才短缺,以及150萬(wàn)懂得如何利用大數(shù)據(jù)分析做出有效決策的經(jīng)理和分析師的短缺。為了有效地解決當(dāng)今的許多大數(shù)據(jù)問(wèn)題,一門叫做數(shù)據(jù)科學(xué)(datascience)的學(xué)科應(yīng)運(yùn)而生。用數(shù)據(jù)的方法研究科學(xué)、用科學(xué)的方法研究數(shù)據(jù),數(shù)據(jù)科學(xué)是一門培養(yǎng)有能力應(yīng)對(duì)大數(shù)據(jù)時(shí)代挑戰(zhàn)的人才的學(xué)科。摘要1.1什么是大數(shù)據(jù)1.2大數(shù)據(jù)的發(fā)展1.4數(shù)據(jù)科學(xué)的概念1.3大數(shù)據(jù)時(shí)代的挑戰(zhàn)目錄CONTENT1.5數(shù)據(jù)科學(xué)的由來(lái)1.6數(shù)據(jù)科學(xué)的應(yīng)用場(chǎng)景1.1什么是大數(shù)據(jù)PART12019年4月10日9時(shí)(北京時(shí)間10日2時(shí)),天文學(xué)家們宣布,首次捕捉到黑洞真容。視界望遠(yuǎn)鏡一個(gè)晚上所產(chǎn)生的數(shù)據(jù)量高達(dá)2PB(1PB=1000TB=1000000

GB)幫助天文學(xué)家分析出來(lái)黑洞的周圍有什么,這些東西以什么樣的狀態(tài)存在,還可以拼接出黑洞的動(dòng)態(tài)影像。1.1什么是大數(shù)據(jù)天文學(xué)大數(shù)據(jù)M87中心超大質(zhì)量黑洞1.1.1大數(shù)據(jù)的概念規(guī)模龐大,結(jié)構(gòu)復(fù)雜,難以通過(guò)現(xiàn)有商業(yè)工具和技術(shù)在可容忍的時(shí)間內(nèi)獲取、管理和處理的數(shù)據(jù)集。維

科大數(shù)據(jù)是具有大規(guī)模、分布式、多樣性和/或時(shí)效性的數(shù)據(jù),這些特點(diǎn)決定了必須采用新的技術(shù)架構(gòu)和分析方法才能有效地挖掘這些新資源的商業(yè)價(jià)值。麥

錫“大數(shù)據(jù)”是需要新處理模式才能具有更強(qiáng)的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量、高增長(zhǎng)率和多樣化的信息資產(chǎn)。高

納McKinsey&Company麥肯錫公司是世界級(jí)領(lǐng)先的全球管理咨詢公司,是由美國(guó)芝加哥大學(xué)商學(xué)院教授詹姆斯·麥肯錫(JamesO’McKinsey)于1926年在美國(guó)創(chuàng)建。Gartner高德納全球最具權(quán)威的IT研究與顧問(wèn)咨詢公司,成立于1979年,總部設(shè)在美國(guó)康涅狄克州斯坦福。1.1.1大數(shù)據(jù)的概念SAS軟

所SAS是數(shù)據(jù)分析領(lǐng)域的佼佼者。SAS軟

所大數(shù)據(jù)描述了非常大量的數(shù)據(jù)——包括結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。但重要的不是數(shù)據(jù)量。重要的是組織如何處理數(shù)據(jù)。大數(shù)據(jù)可以被分析,以獲得有助于做出更好決策和商業(yè)戰(zhàn)略行為。美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究院由具有規(guī)模巨大、種類繁多、增長(zhǎng)速度快和變化多樣化,且需要一個(gè)可擴(kuò)展體系結(jié)構(gòu)來(lái)有效存儲(chǔ)、處理和分析的廣泛的數(shù)據(jù)集組成。NIST美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)、生物和工程方面的基礎(chǔ)和應(yīng)用研究,以及測(cè)量技術(shù)和測(cè)試方法方面的研究,提供標(biāo)準(zhǔn)、標(biāo)準(zhǔn)參考數(shù)據(jù)及有關(guān)服務(wù),在國(guó)際上享有很高的聲譽(yù)。隨著傳感器、智能設(shè)備、社交媒體、物聯(lián)網(wǎng)、移動(dòng)計(jì)算等新的數(shù)據(jù)媒介不斷涌現(xiàn),產(chǎn)生的數(shù)據(jù)類型無(wú)以計(jì)數(shù)。一個(gè)規(guī)模中等的城市視頻監(jiān)控信息一天就能產(chǎn)生幾百TB的數(shù)據(jù)量。1.1.2大數(shù)據(jù)的特征數(shù)

Volume種

類Variety在一小時(shí)的視頻中,有用的數(shù)據(jù)可能僅僅只有一兩秒,但是卻會(huì)非常重要。現(xiàn)在許多專家已經(jīng)將大數(shù)據(jù)等同于黃金和石油,這表示大數(shù)據(jù)當(dāng)中蘊(yùn)含了無(wú)限的商業(yè)價(jià)值。大數(shù)據(jù)的數(shù)據(jù)產(chǎn)生、處理和分析的速度快。大數(shù)據(jù)的快速處理能力充分體現(xiàn)出它與傳統(tǒng)的數(shù)據(jù)處理技術(shù)的本質(zhì)區(qū)別。1.1.2大數(shù)據(jù)的特征速度

Velocity價(jià)值

Value1.1.3大數(shù)據(jù)的結(jié)構(gòu)類型結(jié)構(gòu)化數(shù)據(jù)款號(hào)上市年份顏色材質(zhì)0012019黑棉0022018白桑蠶絲0032019紅滌綸1.1.3大數(shù)據(jù)的結(jié)構(gòu)類型半結(jié)構(gòu)化數(shù)據(jù)、準(zhǔn)結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)半結(jié)構(gòu)化數(shù)據(jù),例如有模式定義的和自描述的可擴(kuò)展標(biāo)記語(yǔ)言[XML]數(shù)據(jù)文件。準(zhǔn)結(jié)構(gòu)化數(shù)據(jù),帶有不規(guī)則的數(shù)據(jù)格式,但是可以通過(guò)工具規(guī)則化,例如,可能包含不一致的數(shù)據(jù)值和格式的網(wǎng)頁(yè)點(diǎn)擊流數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)沒(méi)有固定的結(jié)構(gòu),例如文本文件,PDF文件、圖像和視頻。1.2大數(shù)據(jù)的發(fā)展PART21.2大數(shù)據(jù)的發(fā)展計(jì)算機(jī)性價(jià)比的提高,磁盤(pán)價(jià)格的下降,利用通用服務(wù)器對(duì)大量數(shù)據(jù)進(jìn)行高速處理的軟件技術(shù)Hadoop的誕生,亞馬遜的云計(jì)算服務(wù)EC2和S3

現(xiàn)在的大數(shù)據(jù)已經(jīng)不僅產(chǎn)生于傳統(tǒng)特定領(lǐng)域中,例如Facebook、推特、微博、微信等社交媒體上的文本數(shù)據(jù)。大數(shù)據(jù)的產(chǎn)生硬件性價(jià)比提高與軟件技術(shù)進(jìn)步云計(jì)算的普及1.3大數(shù)據(jù)時(shí)代的挑戰(zhàn)PART3分治法、選用制定特殊方法數(shù)據(jù)安全和個(gè)人數(shù)據(jù)泄露的風(fēng)險(xiǎn)隱私保護(hù)21數(shù)據(jù)的存儲(chǔ)和計(jì)算能力1

1.3大數(shù)據(jù)時(shí)代的挑戰(zhàn)

1.4數(shù)據(jù)科學(xué)的概念PART4數(shù)據(jù)科學(xué)定義數(shù)據(jù)科學(xué)就是一門通過(guò)系統(tǒng)性研究來(lái)獲取與數(shù)據(jù)相關(guān)的知識(shí)體系的科學(xué)。研究數(shù)據(jù)本身,研究數(shù)據(jù)的各種類型、結(jié)構(gòu)、狀態(tài)、屬性及變化形式和變化規(guī)律;通過(guò)對(duì)數(shù)據(jù)的研究,為自然科學(xué)和社會(huì)科學(xué)的研究提供一種新的方法——稱為科學(xué)研究的數(shù)據(jù)方法,其目的在于揭示自然界和人類行為的現(xiàn)象和規(guī)律。兩層含義兩層含義1.4數(shù)據(jù)科學(xué)的概念數(shù)據(jù)模型、數(shù)據(jù)過(guò)濾、數(shù)據(jù)統(tǒng)計(jì)和分析、數(shù)據(jù)結(jié)構(gòu)優(yōu)化等。數(shù)據(jù)與統(tǒng)計(jì)學(xué)相關(guān)知識(shí)12計(jì)算機(jī)科學(xué)的相關(guān)知識(shí)數(shù)據(jù)的獲取技術(shù)、數(shù)據(jù)的處理方法、數(shù)據(jù)的存儲(chǔ)和安全性保障等。數(shù)據(jù)的可視化、數(shù)據(jù)的協(xié)同仿真、虛擬環(huán)境的實(shí)現(xiàn),機(jī)器學(xué)習(xí)算法的應(yīng)用、神經(jīng)網(wǎng)絡(luò)的運(yùn)用等。圖形學(xué)、人工智能相關(guān)知識(shí)3領(lǐng)域相關(guān)知識(shí)處理特定領(lǐng)域的數(shù)據(jù)分析和解讀時(shí)需要用到的理論和方法等。41.4數(shù)據(jù)科學(xué)的概念數(shù)據(jù)科學(xué)具體研究?jī)?nèi)容數(shù)據(jù)的觀察方法和數(shù)據(jù)推理的理論,包括數(shù)據(jù)的存在性、數(shù)據(jù)測(cè)度、數(shù)據(jù)代數(shù)、數(shù)據(jù)相似性與簇論、數(shù)據(jù)分類與數(shù)據(jù)百科全書(shū)等。研究數(shù)據(jù)挖掘、清洗、存儲(chǔ)、處理、分析、建模、可視化展現(xiàn)等一系列過(guò)程中所遇到的各種技術(shù)難題和挑戰(zhàn)。認(rèn)識(shí)數(shù)據(jù)的各種類型、狀態(tài)、屬性及其變化形式和變化規(guī)律,揭示自然界和人類行為的現(xiàn)象和規(guī)律。腦數(shù)據(jù)科學(xué)、行為數(shù)據(jù)科學(xué)、生物數(shù)據(jù)科學(xué)、氣象數(shù)據(jù)科學(xué)、金融數(shù)據(jù)科學(xué)、地理數(shù)據(jù)科學(xué)等基礎(chǔ)理論研究數(shù)據(jù)資源的開(kāi)發(fā)利用方法和技術(shù)研究領(lǐng)域數(shù)據(jù)科學(xué)研究實(shí)驗(yàn)和邏輯推理方法研究1.5數(shù)據(jù)科學(xué)的由來(lái)PART51.5數(shù)據(jù)科學(xué)的由來(lái)1.6數(shù)據(jù)科學(xué)的應(yīng)用場(chǎng)景PART6六個(gè)核心領(lǐng)域:數(shù)據(jù)/分析設(shè)計(jì),數(shù)據(jù)/分析內(nèi)容,數(shù)據(jù)/分析軟件,數(shù)據(jù)/分析基礎(chǔ)設(shè)施,數(shù)據(jù)/分析服務(wù)和數(shù)據(jù)/分析教育。行業(yè)數(shù)據(jù)數(shù)據(jù)服務(wù)是整個(gè)數(shù)據(jù)和分析領(lǐng)域的一部分,正改變著我們生活的方方面面,通過(guò)分析為核心業(yè)務(wù)和新經(jīng)濟(jì)。數(shù)據(jù)服務(wù)1.6數(shù)據(jù)科學(xué)的應(yīng)用場(chǎng)景大數(shù)據(jù)的現(xiàn)實(shí)需求:感知現(xiàn)在28感知現(xiàn)在:歷史數(shù)據(jù)與當(dāng)前數(shù)據(jù)的融合,潛在線索與模式的挖掘,

事件、群體與社會(huì)發(fā)展?fàn)顟B(tài)的感知中國(guó)發(fā)展指數(shù)(物價(jià)、環(huán)境、健康)需求:掌握現(xiàn)狀,如淘寶CPI、環(huán)境指數(shù)難點(diǎn):PB級(jí)社會(huì)媒體數(shù)據(jù),百億級(jí)日志數(shù)據(jù),結(jié)構(gòu)與非結(jié)構(gòu)數(shù)據(jù)關(guān)聯(lián),歷史與流式數(shù)據(jù)并存犯罪線索挖掘需求:發(fā)現(xiàn)線索,如罪犯行為軌跡難點(diǎn):PB級(jí)日志數(shù)據(jù)、EB級(jí)監(jiān)控?cái)?shù)據(jù)中發(fā)現(xiàn)嫌疑人及其行為模式猶如大海撈針問(wèn)題與挑戰(zhàn):數(shù)據(jù)規(guī)模巨大、模態(tài)多樣、關(guān)聯(lián)復(fù)雜、真?zhèn)坞y辨

現(xiàn)有數(shù)據(jù)處理方法感知度量難、特征融合難、模式挖掘難大數(shù)據(jù)的價(jià)值科研價(jià)值1998年圖靈獎(jiǎng)得主、數(shù)據(jù)庫(kù)技術(shù)奠基人JimGray認(rèn)為數(shù)據(jù)驅(qū)動(dòng)的研究將是第四種科學(xué)研究范式”TheFourthParadigm:Data-IntensiveScientificDiscovery”大數(shù)據(jù)已為多個(gè)不同學(xué)科的研究工作提供了寶貴機(jī)遇經(jīng)濟(jì)價(jià)值麥肯錫全球研究院:大數(shù)據(jù)可為世界經(jīng)濟(jì)創(chuàng)造巨大價(jià)值,提高企業(yè)和公共部門的生產(chǎn)率和競(jìng)爭(zhēng)力,并為消費(fèi)者創(chuàng)造巨大的經(jīng)濟(jì)利益著名Gartner公司:到2015年,采用大數(shù)據(jù)和海量信息管理的公司將在各項(xiàng)財(cái)務(wù)指標(biāo)上,超過(guò)未做準(zhǔn)備的競(jìng)爭(zhēng)對(duì)手20%工業(yè)價(jià)值分析使用:揭示隱藏其中的信息,例如零售業(yè)中對(duì)門店銷售、地理和社會(huì)信息的分析能提升對(duì)客戶的理解二次開(kāi)發(fā):創(chuàng)造出新產(chǎn)品和服務(wù)。例如Facebook通過(guò)結(jié)合大量用戶信息,定制出高度個(gè)性化的用戶體驗(yàn),并創(chuàng)造出一種新的廣告模式社會(huì)價(jià)值例如:2009年淘寶網(wǎng)推出淘寶CPI來(lái)反映網(wǎng)絡(luò)購(gòu)物的消費(fèi)趨勢(shì)和價(jià)格動(dòng)態(tài)其他價(jià)值…DataisthenextIntelInside.Thefuturebelongstothecompaniesandpeoplethatturndataintoproducts.----著名出版公司O‘Reilly的創(chuàng)始人TimO‘Reilly深網(wǎng)挖掘深空探索2012年我國(guó)神州九號(hào)進(jìn)入太空深海探測(cè)2012年我國(guó)蛟龍?zhí)柼綔y(cè)水下7000米實(shí)現(xiàn)大數(shù)據(jù)價(jià)值的

深度挖據(jù)和高度利用!大數(shù)據(jù)的戰(zhàn)略意義大數(shù)據(jù)的深度資源挖掘與價(jià)值利用是國(guó)家戰(zhàn)略從深空

+

深海

深網(wǎng)大數(shù)據(jù)的現(xiàn)實(shí)需求:預(yù)測(cè)未來(lái)聯(lián)合國(guó)“全球脈動(dòng)”(GlobalPulse):利用網(wǎng)絡(luò)大數(shù)據(jù)預(yù)測(cè)失業(yè)率與疾病爆發(fā)等現(xiàn)象,利用數(shù)字化的早期預(yù)警信號(hào)來(lái)提前指導(dǎo)援助項(xiàng)目。問(wèn)題與挑戰(zhàn):數(shù)據(jù)交互性強(qiáng)、實(shí)時(shí)性強(qiáng)、動(dòng)態(tài)演變,導(dǎo)致傳統(tǒng)數(shù)據(jù)計(jì)算方法:

數(shù)據(jù)生命周期的割裂、時(shí)效性與準(zhǔn)確性難以兼顧、演變趨勢(shì)難以預(yù)測(cè)基于Twitter數(shù)據(jù)的選舉結(jié)果預(yù)測(cè):通過(guò)對(duì)Twitter等網(wǎng)上公開(kāi)數(shù)據(jù)的實(shí)時(shí)感知、動(dòng)態(tài)獲取與綜合分析,結(jié)合仿真調(diào)控,預(yù)測(cè)大選結(jié)果。預(yù)測(cè)未來(lái):全量數(shù)據(jù)、流式數(shù)據(jù)、離線數(shù)據(jù)的關(guān)聯(lián)分析,態(tài)勢(shì)與效應(yīng)的判定與調(diào)控,揭示事物發(fā)展的演變規(guī)律,進(jìn)而對(duì)事物發(fā)展趨勢(shì)進(jìn)行預(yù)測(cè)第二章

數(shù)據(jù)采集與數(shù)據(jù)預(yù)處理數(shù)據(jù)采集是大數(shù)據(jù)分析的前導(dǎo)過(guò)程,無(wú)法獲取到有效的數(shù)據(jù)是無(wú)法進(jìn)行大數(shù)據(jù)分析的。如果說(shuō)數(shù)據(jù)源是大數(shù)據(jù)平臺(tái)蓄水池的上游,數(shù)據(jù)采集就是獲取水源的管道。通過(guò)數(shù)據(jù)采集獲取的是原始數(shù)據(jù),原始數(shù)據(jù)是不能直接進(jìn)行分析和處理。原始數(shù)據(jù)通常存在的缺失值、數(shù)據(jù)格式不統(tǒng)一、數(shù)據(jù)格式標(biāo)準(zhǔn)不相同等問(wèn)題。數(shù)據(jù)預(yù)處理就是對(duì)原始數(shù)據(jù)進(jìn)行初步處理,解決缺失值、格式不統(tǒng)一等問(wèn)題,為后續(xù)的數(shù)據(jù)分析提供一個(gè)相對(duì)完成的數(shù)據(jù)集。摘要2.1概述2.4小結(jié)2.2數(shù)據(jù)采集技術(shù)2.3數(shù)據(jù)預(yù)處理技術(shù)目錄CONTENT2.1概述PART1(1)企業(yè)系統(tǒng):銷售系統(tǒng)、庫(kù)存系統(tǒng)、企業(yè)客戶管理系統(tǒng)等。(2)機(jī)器系統(tǒng):智能儀表、工業(yè)傳感器、視頻監(jiān)控系統(tǒng)等。(3)互聯(lián)網(wǎng)系統(tǒng):各類電商平臺(tái)、政府監(jiān)管系統(tǒng)、服務(wù)行業(yè)業(yè)務(wù)系統(tǒng)等。(4)社交網(wǎng)絡(luò)系統(tǒng):微信、QQ、微博、朋友圈等。2.1概述大數(shù)據(jù)的主要來(lái)源數(shù)據(jù)庫(kù)采集數(shù)據(jù)庫(kù)采集就是采集這些SQL和NoSQL數(shù)據(jù)庫(kù)中的內(nèi)容,并在這些數(shù)據(jù)庫(kù)之間進(jìn)行負(fù)載均衡和分片,完成采集工作。2系統(tǒng)日志采集收集企業(yè)業(yè)務(wù)平臺(tái)上日常產(chǎn)生的大量日志數(shù)據(jù),提供離線和在線的大數(shù)據(jù)分析系統(tǒng)使用。3網(wǎng)絡(luò)數(shù)據(jù)采集網(wǎng)絡(luò)采集是指通過(guò)網(wǎng)絡(luò)爬蟲(chóng)抓取網(wǎng)站上的數(shù)據(jù)信息的過(guò)程。(1)傳統(tǒng)數(shù)據(jù)采集數(shù)據(jù)源單一,大多是從企業(yè)的客戶管理系統(tǒng)、企業(yè)業(yè)務(wù)系統(tǒng)中獲取數(shù)據(jù);而大數(shù)據(jù)采集不僅包含傳統(tǒng)的數(shù)據(jù)采集來(lái)源,還需要從社交系統(tǒng)、互聯(lián)網(wǎng)系統(tǒng)以及各類傳感器設(shè)備中采集信息。(2)從數(shù)據(jù)量方面來(lái)看,大數(shù)據(jù)時(shí)代所采集到的數(shù)據(jù)量要遠(yuǎn)遠(yuǎn)大于傳統(tǒng)的數(shù)據(jù)采集數(shù)據(jù)量。(3)從數(shù)據(jù)結(jié)構(gòu)方面看,傳統(tǒng)的數(shù)據(jù)采集一般采集的是結(jié)構(gòu)化數(shù)據(jù)(主要來(lái)源于關(guān)系數(shù)據(jù)庫(kù)),大數(shù)據(jù)時(shí)代采集的數(shù)據(jù)包括視頻、音頻、圖片等非結(jié)構(gòu)化數(shù)據(jù),以及網(wǎng)頁(yè)、日志等半結(jié)構(gòu)化數(shù)據(jù)。2.1概述大數(shù)據(jù)時(shí)代數(shù)據(jù)來(lái)源的特點(diǎn)大數(shù)據(jù)采集方法數(shù)據(jù)清洗數(shù)據(jù)集成

數(shù)據(jù)變換數(shù)據(jù)規(guī)約隨著企業(yè)信息化的發(fā)展,企業(yè)積累了前所未有的海量數(shù)據(jù),使用大數(shù)據(jù)挖掘和分析技術(shù)能夠從這些數(shù)據(jù)中獲取隱含而又十分有用的信息,使得這些數(shù)據(jù)成為企業(yè)寶貴的財(cái)富。然而,數(shù)據(jù)中通常存在各種錯(cuò)誤,如屬性值的缺失、錯(cuò)誤的分類、記錄的重復(fù)等。因此,數(shù)據(jù)預(yù)處理是工作在數(shù)據(jù)挖掘之前2.1概述為什么要數(shù)據(jù)預(yù)處理數(shù)據(jù)預(yù)處理方法2.2數(shù)據(jù)采集技術(shù)PART22.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集圖2.1網(wǎng)絡(luò)爬蟲(chóng)工作原理2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集網(wǎng)絡(luò)爬蟲(chóng)的工作原理是:(1)啟動(dòng)網(wǎng)絡(luò)爬蟲(chóng)工作前,首先初始化URL隊(duì)列,即在URL隊(duì)列中放入一個(gè)或若干個(gè)初始URL,這個(gè)(些)初始的URL稱為種子URL。然后,啟動(dòng)網(wǎng)絡(luò)爬蟲(chóng)開(kāi)始工作。(2)從URL隊(duì)列中取出一個(gè)鏈接,從該鏈接所對(duì)應(yīng)的目標(biāo)網(wǎng)址下載整個(gè)網(wǎng)頁(yè)中的內(nèi)容。(3)解析所下載網(wǎng)頁(yè),找到所需要的內(nèi)容,如文本、音頻、視頻等。(4)分析下載網(wǎng)頁(yè)中是否存在指向其它網(wǎng)頁(yè)的鏈接。如果該網(wǎng)頁(yè)中沒(méi)有指向其它網(wǎng)頁(yè)的鏈接,則轉(zhuǎn)(5)。否則將新鏈接加入到URL隊(duì)列中,轉(zhuǎn)(4)繼續(xù)分析該網(wǎng)頁(yè)所包含的下一個(gè)鏈接。(5)將該網(wǎng)頁(yè)的URL鏈接移入到已完成隊(duì)列中,表示該網(wǎng)頁(yè)已經(jīng)被抓取,且該網(wǎng)頁(yè)中不存在指向其它網(wǎng)頁(yè)的鏈接。(6)判斷URL隊(duì)列是否為空,為空則停止網(wǎng)絡(luò)爬蟲(chóng)的工作,否則從URL中取出下一個(gè)鏈接,轉(zhuǎn)(2)。2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集1.通用網(wǎng)絡(luò)爬蟲(chóng)通用網(wǎng)絡(luò)爬蟲(chóng)又稱為全網(wǎng)爬蟲(chóng),其抓取對(duì)象是從種子URL擴(kuò)充到整個(gè)互聯(lián)網(wǎng)資源。由于通用網(wǎng)絡(luò)爬蟲(chóng)的抓取目標(biāo)是整個(gè)互聯(lián)網(wǎng)中的各類數(shù)據(jù),因此主要被各大門戶搜索引擎和大型的web服務(wù)供應(yīng)商所采用。出于商業(yè)目的,通用網(wǎng)絡(luò)爬蟲(chóng)的技術(shù)細(xì)節(jié)很少被公布出來(lái)。通用網(wǎng)絡(luò)爬蟲(chóng)的爬行范圍和數(shù)量非常巨大,對(duì)爬行速度和存儲(chǔ)空間的要求較高,同時(shí)互聯(lián)網(wǎng)中網(wǎng)頁(yè)刷新的速度很快,因此通用網(wǎng)絡(luò)爬蟲(chóng)一般采用分布式架構(gòu)、并行的工作方式。2.主題網(wǎng)絡(luò)爬蟲(chóng)相對(duì)于通用網(wǎng)絡(luò)爬蟲(chóng),主題網(wǎng)絡(luò)爬蟲(chóng)有選擇性的抓取那些與預(yù)先定義好的主題相關(guān)的頁(yè)面。因此,主題網(wǎng)絡(luò)爬蟲(chóng)極大的節(jié)省了硬件和網(wǎng)絡(luò)資源,保存的頁(yè)面數(shù)量較少,更新速度更快,同時(shí)可以滿足某些特定人群對(duì)特定領(lǐng)域信息的需求。2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集3.增量式網(wǎng)絡(luò)爬蟲(chóng)互聯(lián)網(wǎng)中網(wǎng)頁(yè)的內(nèi)容隨時(shí)會(huì)產(chǎn)生更新,有的是整個(gè)網(wǎng)頁(yè)的更新,有的是網(wǎng)頁(yè)部分內(nèi)容的更新。那么,對(duì)于網(wǎng)頁(yè)部分內(nèi)容的更新,如果對(duì)整個(gè)網(wǎng)頁(yè)進(jìn)行抓取將會(huì)浪費(fèi)大量的時(shí)間和帶寬資源。這時(shí),增量式網(wǎng)絡(luò)爬蟲(chóng)可以解決這個(gè)問(wèn)題。增量式網(wǎng)絡(luò)爬蟲(chóng)是指對(duì)已下載網(wǎng)頁(yè)采取增量式更新,只抓取新產(chǎn)生的或者已經(jīng)發(fā)生變化的網(wǎng)頁(yè)內(nèi)容的網(wǎng)絡(luò)爬蟲(chóng),能夠在一定程度上保證所抓取的頁(yè)面時(shí)盡可能新的頁(yè)面。4.深層網(wǎng)絡(luò)爬蟲(chóng)互聯(lián)網(wǎng)中的頁(yè)面按照存在方式可分為表層頁(yè)面(SurfaceWeb)和深層頁(yè)面(DeepWeb)。表層頁(yè)面是指?jìng)鹘y(tǒng)搜索引擎可以索引的頁(yè)面,以超鏈接的形式可以達(dá)到的靜態(tài)頁(yè)面為主所構(gòu)成的頁(yè)面。深層頁(yè)面是指那些大部分內(nèi)容不能通過(guò)靜態(tài)超鏈接獲取的、隱藏在搜索表單后的,只有用戶提交一些關(guān)鍵詞才能獲得的頁(yè)面,例如那些用戶注冊(cè)后才可見(jiàn)的頁(yè)面就屬于深層頁(yè)面。目前,互聯(lián)網(wǎng)中深層頁(yè)面所蘊(yùn)含的信息量是表層頁(yè)面的幾百倍,深層頁(yè)面時(shí)互聯(lián)網(wǎng)上最大、發(fā)展最快的新型信息資源的載體。2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集5.頁(yè)面搜索策略在網(wǎng)絡(luò)爬蟲(chóng)中,頁(yè)面的抓取策略可以分為深度優(yōu)先和廣度優(yōu)先兩種策略。(1)廣度優(yōu)先搜索廣度優(yōu)先搜索策略是指在抓取過(guò)程中,在完成當(dāng)前層次的搜索之后,才能進(jìn)入下一層次的搜索。其目的是為了覆蓋盡可能多的頁(yè)面。主題網(wǎng)絡(luò)爬蟲(chóng)一般會(huì)使用廣度優(yōu)先搜索策略,其基本思想是認(rèn)為與初始URL在一定鏈接距離內(nèi)的頁(yè)面具有與主題相關(guān)性的概率很大。但是在實(shí)際情況中,存在于同一頁(yè)面中的URL也有可能是與主題時(shí)不相關(guān)的。因此,隨著抓取頁(yè)面的增多,大量無(wú)關(guān)的頁(yè)面將被下載,產(chǎn)生“主題漂移”的現(xiàn)象。(2)深度優(yōu)先搜索深度優(yōu)先搜索策略是從初始頁(yè)面開(kāi)始,選擇一個(gè)URL進(jìn)入,分析這個(gè)頁(yè)面中的URL,再選擇一個(gè)進(jìn)入。如此一個(gè)鏈接一個(gè)鏈接的抓取下去,直到處理完一條線路之后再處理下一條線路。伸出優(yōu)先搜索策略設(shè)計(jì)較為簡(jiǎn)單,但這種策略抓取深度直接影響抓取命中率及抓取效率,因此抓取深度是這種策略的關(guān)鍵。2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集6.八爪魚(yú)網(wǎng)絡(luò)信息采集1啟動(dòng)軟件2使用簡(jiǎn)易模式2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集6.八爪魚(yú)網(wǎng)絡(luò)信息采集3設(shè)置參數(shù)4配置任務(wù)2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集6.八爪魚(yú)網(wǎng)絡(luò)信息采集5開(kāi)始抓取數(shù)據(jù)6保存數(shù)據(jù)2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集7.Python爬蟲(chóng)框架—Scrapy2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集7.Python爬蟲(chóng)框架—Scrapy(1)Scrapy引擎(ScrapyEngine):引擎負(fù)責(zé)控制數(shù)據(jù)流在Scrapy框架中的流動(dòng)方向和順序,并在適當(dāng)?shù)臅r(shí)機(jī)觸發(fā)相應(yīng)的事件。(2)調(diào)度器(Scheduler):調(diào)度器負(fù)責(zé)從Scrapy引擎接收Request請(qǐng)求,并將其加入爬蟲(chóng)的URL隊(duì)列,以便爬蟲(chóng)從URL隊(duì)列中獲取將要抓取的網(wǎng)頁(yè)地址。(3)下載器(Downloader):下載器負(fù)責(zé)網(wǎng)頁(yè)數(shù)據(jù)的抓取,將其結(jié)果提供給Spider。(4)Spiders:Spider是Scrapy用戶自己編寫(xiě)的內(nèi)容用于分析網(wǎng)頁(yè)Response的內(nèi)容,提取其中的item,每一個(gè)Spider負(fù)責(zé)處理一個(gè)特定的URL。(5)Item管道(ItemPipeline):Item管道負(fù)責(zé)具體處理由Spiders提取出來(lái)的Item。2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集7.Python爬蟲(chóng)框架—Scrapy(6)下載器中間件(Downloadermiddlewares):下載器中間件是引擎與下載器之間的特定鉤子(hook),主要用于處理下載器傳遞給引擎的Response,其提供了一個(gè)簡(jiǎn)單的機(jī)制,可以插入自定義的代碼來(lái)擴(kuò)展Scrapy的功能。(7)Spider中間件(Spidermiddlewares):Spider中間件是引擎與Spider之間的鉤子(hook),負(fù)責(zé)處理Spider的輸入(Response)和輸出(Items和Requests),它同樣提供了一個(gè)簡(jiǎn)單的機(jī)制,來(lái)實(shí)現(xiàn)插入自定義代碼擴(kuò)展Scrapy的功能。2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集7.Python爬蟲(chóng)框架—Scrapy(1)環(huán)境要求:裝好Python編譯環(huán)境和Scrapy框架(2)創(chuàng)建工程項(xiàng)目:使用命令“scrapystartprojectjd_spider”,在當(dāng)前目錄下面創(chuàng)建名稱為“jd_spider”的工程項(xiàng)目文件夾。2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集7.Python爬蟲(chóng)框架—Scrapy(3)編輯item.py文件,其內(nèi)容是:importscrapyclassTutorialItem(scrapy.Item):title=scrapy.Field()link.=scrapy.Field()dese=scrapy.Field()price=scrapy.Filed()2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集7.Python爬蟲(chóng)框架—Scrapy(4)在工程目錄中的spiders目錄中創(chuàng)建jdspider.py文件,并編輯其內(nèi)容:importscrapyclassjdspider(scrapy.Spider):name='jd'allowed_domains=['']start_urls=["/12451724.html"]defparse(self,response):filename=response.url.split("/")[-2]withopen(filename,'wb')asf:f.write(response.body)2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集7.Python爬蟲(chóng)框架—Scrapy5)啟動(dòng)爬蟲(chóng)運(yùn)行,打開(kāi)命令行進(jìn)入工程目錄,使用命令“scrapycrawljd”啟動(dòng)爬蟲(chóng)。2.2數(shù)據(jù)采集技術(shù)2.2.1網(wǎng)絡(luò)數(shù)據(jù)采集7.Python爬蟲(chóng)框架—Scrapy(6)在工程目錄下面可以看到一個(gè)“”的文件,用文本編輯器打開(kāi)即可看到爬蟲(chóng)抓取到的網(wǎng)頁(yè)內(nèi)容。2.2數(shù)據(jù)采集技術(shù)2.2.2日志數(shù)據(jù)采集技術(shù)1.ApacheFlumeApacheFlume是一個(gè)可以收集日志、事件等數(shù)據(jù)資源,并將這些數(shù)量龐大的數(shù)據(jù)從各項(xiàng)數(shù)據(jù)資源中集中起來(lái)的工具或服務(wù),是一種數(shù)據(jù)集中機(jī)制。Flume具有高可用性、分布式的特性,其設(shè)計(jì)原理也是基于數(shù)據(jù)流模型例如將日志文件從各種網(wǎng)站服務(wù)器上匯集起來(lái)存儲(chǔ)到HDFS、HBase等集中存儲(chǔ)器中。2.2數(shù)據(jù)采集技術(shù)2.2.2日志數(shù)據(jù)采集技術(shù)1.ApacheFlumeFlume的運(yùn)行核心是Agent,即Agent是Flume中最小的獨(dú)立運(yùn)行單位。一個(gè)Agent就是一個(gè)JVM,它是一個(gè)完整的數(shù)據(jù)收集工具,含有三個(gè)核心組件,分別是source、channel、sink2.2數(shù)據(jù)采集技術(shù)2.2.2日志數(shù)據(jù)采集技術(shù)1.ApacheFlumeSource是數(shù)據(jù)的收集端,負(fù)責(zé)將數(shù)據(jù)捕獲后進(jìn)行特殊的格式化,將數(shù)據(jù)封裝到事件(event)里,然后將事件推入Channel中2.2數(shù)據(jù)采集技術(shù)2.2.2日志數(shù)據(jù)采集技術(shù)1.ApacheFlumeFlume中內(nèi)置了很多source可以讓程序員同已有的source打交道。如果內(nèi)置的source無(wú)法滿足需要,F(xiàn)lume還支持自定義source。source類型說(shuō)明Avrosource支持Avro協(xié)議,內(nèi)置支持Thriftsource支持Thrift協(xié)議,支持內(nèi)置Execsource支持Unix的command在標(biāo)準(zhǔn)輸出上產(chǎn)生的數(shù)據(jù)JMSsource從JMS系統(tǒng)(消息、主題)中讀取數(shù)據(jù)SpoolingDirectorysource監(jiān)控指定目錄內(nèi)的數(shù)據(jù)變更Netcatsource監(jiān)控某個(gè)端口,將流經(jīng)端口的每一行文本數(shù)據(jù)作為Event的輸入SequenceGeneratorsource序列生成器數(shù)據(jù)源,生產(chǎn)序列數(shù)據(jù)Syslogsource讀取syslog數(shù)據(jù),產(chǎn)生Event,支持UDP和TCP兩種協(xié)議HTTPsource基于HTTPPOST過(guò)GET方式的數(shù)據(jù)源,支持JSON,BLOB2.2數(shù)據(jù)采集技術(shù)2.2.2日志數(shù)據(jù)采集技術(shù)1.ApacheFlumeChannel是連接source和sink的組件,可以將其視作一個(gè)數(shù)據(jù)緩沖區(qū)(數(shù)據(jù)隊(duì)列),它可以將事件暫存到內(nèi)存也可以持久化到本地磁盤(pán)上,直到sink處理完該事件。Channel的類型如表所示。Channel類型說(shuō)明MemorychannelEvent數(shù)據(jù)存儲(chǔ)在內(nèi)存中JDBCchannelEvent數(shù)據(jù)存儲(chǔ)在持久化數(shù)據(jù)庫(kù)中FilechannelEvent數(shù)據(jù)存儲(chǔ)在磁盤(pán)文件中SpillableMemorychannelEvent數(shù)據(jù)存儲(chǔ)在內(nèi)存和磁盤(pán)上Customchannel自定義channel實(shí)現(xiàn)2.2數(shù)據(jù)采集技術(shù)2.2.2日志數(shù)據(jù)采集技術(shù)1.ApacheFlumeSink從channel中取出事件,然后將數(shù)據(jù)發(fā)到別處,如文件系統(tǒng)、數(shù)據(jù)庫(kù)、Hadoop等發(fā)送你數(shù)據(jù),2.2數(shù)據(jù)采集技術(shù)2.2.2日志數(shù)據(jù)采集技術(shù)1.ApacheFlumeFlume內(nèi)置了很多sink類型,在使用時(shí)可以直接調(diào)用sink類型說(shuō)明HDFSsink數(shù)據(jù)寫(xiě)入HDFSLoggersink數(shù)據(jù)寫(xiě)入日志文件Avrosink數(shù)據(jù)轉(zhuǎn)換為AvroEvent,然后發(fā)送到RPC端口Thriftsink數(shù)據(jù)轉(zhuǎn)換為ThriftEvent,然后發(fā)送到RPC端口IRCsink數(shù)據(jù)在IRC上進(jìn)行回收FileRollsink數(shù)據(jù)存儲(chǔ)在本地文件系統(tǒng)HBasesink數(shù)據(jù)寫(xiě)入到HBase數(shù)據(jù)庫(kù)MorphlineSolrsink數(shù)據(jù)發(fā)送到Solr搜索服務(wù)器(集群)ElasticSearchsink數(shù)據(jù)發(fā)送到ElasticSearch搜索服務(wù)器(集群)Customsink自定義sink實(shí)現(xiàn)2.2數(shù)據(jù)采集技術(shù)2.2.2日志數(shù)據(jù)采集技術(shù)1.ApacheFlumeFlume還支持用戶建立多級(jí)數(shù)據(jù)流,也就是說(shuō),多個(gè)Agent可以協(xié)同工作。這就使得Flume可以同時(shí)處理多種日志混雜在一起的情況。例如,當(dāng)syslog、Java、nginx、tomcat等混合在一起的日志流開(kāi)始流入一個(gè)Agent后,Agent可以根據(jù)不同的日志類型建立不同的數(shù)據(jù)傳輸通道。2.2數(shù)據(jù)采集技術(shù)2.2.2日志數(shù)據(jù)采集技術(shù)2.ApacheKafkaKafka是由Apache軟件基金會(huì)的一個(gè)開(kāi)源流處理平臺(tái),它是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),可以處理網(wǎng)站中的所有動(dòng)作流數(shù)據(jù)。動(dòng)作流數(shù)據(jù)是指用戶的行為動(dòng)作,如網(wǎng)頁(yè)瀏覽、搜索、以及其它用戶的動(dòng)作行為,這些數(shù)據(jù)通常是通過(guò)處理日子和聚合日志來(lái)解決。Kafka是一個(gè)分布式消息隊(duì)列,具有高性能、持久化、多副本備份、橫向擴(kuò)展能力。2.2數(shù)據(jù)采集技術(shù)2.2.2日志數(shù)據(jù)采集技術(shù)2.ApacheKafkaKafka數(shù)據(jù)流圖2.2數(shù)據(jù)采集技術(shù)2.2.2日志數(shù)據(jù)采集技術(shù)2.ApacheKafkaKafka與Flume有很多功能是重復(fù)的,二者的主要不同點(diǎn)有:(1)Kafka是一個(gè)通用型系統(tǒng),可以有多個(gè)生產(chǎn)者和消費(fèi)者分享多個(gè)主題。Flume被設(shè)計(jì)為面向特定用途的工作,向特定的HDFS和HBase發(fā)送數(shù)據(jù)。Flume為了更好的為HDFS和HBase服務(wù)而進(jìn)行了特定的優(yōu)化,并且與Hadoop的安全體系整合在了一起。(2)Flume內(nèi)置了很多數(shù)據(jù)類型,如source和sink類型等,Kafka是面向生產(chǎn)者和消費(fèi)者體系環(huán)境的。如果數(shù)據(jù)來(lái)源已經(jīng)確定,不需要額外的編碼,可以使用Flume提供的source和sink,反之,如果還需要準(zhǔn)備自己的生產(chǎn)者和消費(fèi)者,則需要使用Kafka。(3)無(wú)論是Flume或是Kafka,都可以保證不丟失數(shù)據(jù)。但是,F(xiàn)lume不會(huì)存儲(chǔ)事件的副本,如果Flumeagent節(jié)點(diǎn)宕機(jī),會(huì)失去所有事件的訪問(wèn)能力,直到受損的節(jié)點(diǎn)修復(fù)。Kafka的管道特性則不會(huì)有這樣的問(wèn)題。(4)Flume和Kafka可以一起工作,如果需要把流式數(shù)據(jù)從Kafka轉(zhuǎn)移到Hadoop,可以把Kafka作為Flume的一個(gè)來(lái)源(source),這樣可以從Kafka讀取數(shù)據(jù)到Hadoop。2.3數(shù)據(jù)預(yù)處理技術(shù)PART32.3數(shù)據(jù)預(yù)處理技術(shù)在獲取到的數(shù)據(jù)中,可能存在大量的異常數(shù)據(jù),如數(shù)據(jù)不完整(有缺失值)、數(shù)據(jù)類型不一致等。這些異常數(shù)據(jù)有可能對(duì)數(shù)據(jù)分析算法產(chǎn)生不良影響,造成分析結(jié)果產(chǎn)生偏差,因此數(shù)據(jù)預(yù)處理過(guò)程就顯得尤為重要。數(shù)據(jù)預(yù)處理一方面是要提高數(shù)據(jù)質(zhì)量,另一方面是要使數(shù)據(jù)能夠更好的適應(yīng)后續(xù)的數(shù)據(jù)分析或數(shù)據(jù)挖掘算法。根據(jù)有關(guān)統(tǒng)計(jì),數(shù)據(jù)預(yù)處理工作要占整個(gè)數(shù)據(jù)分析過(guò)程的60%。數(shù)據(jù)預(yù)處理包括數(shù)據(jù)清洗、數(shù)據(jù)集成、數(shù)據(jù)變換和數(shù)據(jù)規(guī)約2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.1數(shù)據(jù)清洗數(shù)據(jù)清洗(DataCleaning)是對(duì)數(shù)據(jù)進(jìn)行重新審核和校驗(yàn)的過(guò)程,其目的是刪除重復(fù)信息、糾正存在的錯(cuò)誤,并提供數(shù)據(jù)一致性。一般情況下,數(shù)據(jù)是從多個(gè)業(yè)務(wù)系統(tǒng)抽取而來(lái)的,如通過(guò)爬蟲(chóng)獲得的數(shù)據(jù)、從用戶的日志文件中獲取的數(shù)據(jù)等,這樣就避免不了有的數(shù)據(jù)時(shí)錯(cuò)誤的、有的數(shù)據(jù)直接存在相互沖突,這些錯(cuò)誤的或者有沖突的數(shù)據(jù)顯然不是想要的,稱為“臟數(shù)據(jù)”。數(shù)據(jù)清洗的任務(wù)就是“清洗”掉這些“臟數(shù)據(jù)”,將符合規(guī)則的數(shù)據(jù)保留下來(lái)。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.1數(shù)據(jù)清洗1.刪除記錄刪除記錄的方法是通過(guò)刪除包含缺失值的記錄來(lái)完成,這種方法實(shí)現(xiàn)簡(jiǎn)單。然而,這種方法有較大的局限性,它是以減少歷史數(shù)據(jù)來(lái)?yè)Q取數(shù)據(jù)的完備性,丟棄了大量隱藏在這些記錄中的信息。尤其是在數(shù)據(jù)本來(lái)就包含很少記錄的情況下,刪除記錄可能會(huì)嚴(yán)重影響后續(xù)算法的客觀性和正確性。因此,刪除記錄的方法通常應(yīng)用在數(shù)據(jù)量大,且缺失值記錄占比較少的情況,通過(guò)簡(jiǎn)單刪除小部分記錄達(dá)到既定的目標(biāo)。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.1數(shù)據(jù)清洗2.?dāng)?shù)據(jù)插補(bǔ)拉格朗日插值法是以十八世紀(jì)數(shù)學(xué)家約瑟夫·路易斯·拉格朗日命名的一種多項(xiàng)式插值方法,其基本思路是給出一個(gè)恰好穿過(guò)二維平面上若干個(gè)已知點(diǎn)的多項(xiàng)式。利用最小次數(shù)的多項(xiàng)式來(lái)構(gòu)建一條光滑曲線,使曲線通過(guò)所有的已知點(diǎn)。在數(shù)學(xué)上,對(duì)于平面上已知的n個(gè)點(diǎn)(無(wú)兩點(diǎn)在一條直線上),可以找到一個(gè)n-1次多項(xiàng)式:使得此多項(xiàng)式對(duì)應(yīng)的曲線通過(guò)這n個(gè)點(diǎn)。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.1數(shù)據(jù)清洗2.?dāng)?shù)據(jù)插補(bǔ)將n個(gè)點(diǎn)的坐標(biāo)代入到多項(xiàng)式中:可以解出拉格朗日插值多項(xiàng)式為:2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.1數(shù)據(jù)清洗2.?dāng)?shù)據(jù)插補(bǔ)例如:平面上有4個(gè)點(diǎn),,試用拉格朗日插值法計(jì)算缺失值。將以上各點(diǎn)的坐標(biāo)代入拉格朗日插值公式中,得出插值多項(xiàng)式為:將x=18代入插值多項(xiàng)式:因此,缺失的值是:-11。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.1數(shù)據(jù)清洗3.不處理在數(shù)據(jù)預(yù)處理時(shí),異常值是否剔除,取決于具體情況,有些異常值可能蘊(yùn)含著有用的信息。在這種情況下,對(duì)異常值不做處理,直接在具有異常值的數(shù)據(jù)集上進(jìn)行挖掘建模。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.2數(shù)據(jù)集成在數(shù)據(jù)分析時(shí),所需要的數(shù)據(jù)往往分布在不同的數(shù)據(jù)源中,數(shù)據(jù)集成就是把不同來(lái)源、格式、特點(diǎn)性質(zhì)的數(shù)據(jù)在邏輯上或物理上有機(jī)的集中并存放在一個(gè)一致的數(shù)據(jù)存儲(chǔ)(如數(shù)據(jù)倉(cāng)庫(kù))中的過(guò)程。在數(shù)據(jù)集成的過(guò)程中,來(lái)自多個(gè)數(shù)據(jù)源的數(shù)據(jù)在現(xiàn)實(shí)世界現(xiàn)實(shí)世界中的表達(dá)形式是不一樣的或不匹配的,要考慮到實(shí)體識(shí)別問(wèn)題和屬性冗余問(wèn)題,從而將數(shù)據(jù)源在最底層進(jìn)行轉(zhuǎn)換、提煉和集成。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.2數(shù)據(jù)集成1.實(shí)體識(shí)別現(xiàn)實(shí)世界中的實(shí)體在不同的數(shù)據(jù)源中有不同的表述方式,實(shí)體識(shí)別的任務(wù)就是統(tǒng)一不同數(shù)據(jù)的矛盾之處,有以下幾種常見(jiàn)形式:同名異義:例如數(shù)據(jù)源A中的ID屬性表示課程號(hào),數(shù)據(jù)源B中的ID屬性表示學(xué)生的學(xué)號(hào)。兩個(gè)數(shù)據(jù)源的屬性名稱相同,但表示的是不同的實(shí)體。異名同義:異名同義是指不同的數(shù)據(jù)源中,相同名稱的屬性表示的是不同的實(shí)體。單位不統(tǒng)一:指在不同的數(shù)據(jù)源中所采用的單位不相同,如數(shù)據(jù)源A中采用的是國(guó)際單位,而數(shù)據(jù)源B中采用的是中國(guó)傳統(tǒng)的計(jì)量單位。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.2數(shù)據(jù)集成2.冗余屬性識(shí)別數(shù)據(jù)集成往往會(huì)導(dǎo)致數(shù)據(jù)冗余,常發(fā)生的情況為:同一屬性多次出現(xiàn)和同一屬性命名不一致導(dǎo)致重復(fù)。因此,在整合不同數(shù)據(jù)源的數(shù)據(jù)時(shí)要能減少甚至避免數(shù)據(jù)冗余與不一致。對(duì)于冗余的屬性可以用相關(guān)分析檢測(cè),用相關(guān)系數(shù)來(lái)度量一個(gè)屬性在多大程度上蘊(yùn)含另一個(gè)屬性。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.3數(shù)據(jù)變換在數(shù)據(jù)集成中,不同來(lái)源的數(shù)據(jù)格式、單位等不盡完全相同,需要對(duì)不同來(lái)源的數(shù)據(jù)進(jìn)行“適當(dāng)?shù)摹弊儞Q,適應(yīng)建模任務(wù)和算法的需要。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.3數(shù)據(jù)變換1.簡(jiǎn)單函數(shù)變換數(shù)據(jù)簡(jiǎn)單函數(shù)變換主要是對(duì)原始數(shù)據(jù)進(jìn)行某些數(shù)學(xué)函數(shù)變換,常用的變換包括:平方:取對(duì)數(shù):開(kāi)方:差分運(yùn)算:簡(jiǎn)單函數(shù)變換的目的是將原來(lái)不具備正態(tài)分布的數(shù)據(jù)轉(zhuǎn)換成具有正態(tài)分布的數(shù)據(jù),或通過(guò)差分運(yùn)算將非平穩(wěn)序列轉(zhuǎn)換為平穩(wěn)序列等。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.3數(shù)據(jù)變換2.歸一化不同的數(shù)據(jù)來(lái)源往往具有不同的量綱,數(shù)值之間的差別可能很大,如果不進(jìn)行處理會(huì)直接影響數(shù)據(jù)分析的結(jié)果。歸一化處理是消除指標(biāo)之間的量綱取值范圍差異的影響,將數(shù)據(jù)按照比例進(jìn)行縮放,使之落入一個(gè)特特定的區(qū)域,便于進(jìn)行綜合分析。:其中,max為樣本數(shù)據(jù)的最大值,min為樣布數(shù)據(jù)的最小值。最小--最大值歸一化:也稱為離差歸一化,對(duì)原始數(shù)據(jù)進(jìn)行線性變換,將數(shù)值映射到[0,1]之間零--均值均值歸一化:也稱為標(biāo)準(zhǔn)差歸一化,經(jīng)過(guò)歸一化之后的數(shù)據(jù)其均值為0,標(biāo)準(zhǔn)差為1。其中,為原始數(shù)據(jù)的平均值,為原始數(shù)據(jù)的標(biāo)準(zhǔn)差。零—均值規(guī)范化是當(dāng)前用的最多的數(shù)據(jù)標(biāo)準(zhǔn)化方法。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.3數(shù)據(jù)變換3.屬性構(gòu)造在數(shù)據(jù)分析中,需要進(jìn)行深層次的信息挖掘,以便獲得原始數(shù)據(jù)中隱藏的關(guān)系,此時(shí)需要根據(jù)已有的屬性構(gòu)建新的屬性,并加入到現(xiàn)有屬性的集合中。例如:在進(jìn)行序列分析時(shí),要根據(jù)以往的歷史數(shù)據(jù)來(lái)預(yù)測(cè)未來(lái)發(fā)展趨勢(shì)。這時(shí)要根據(jù)原始數(shù)據(jù)的屬性構(gòu)建新的能夠反映歷史發(fā)展趨勢(shì)的屬性,諸如均值、方差、標(biāo)準(zhǔn)差、一階差分等,并將新的屬性加入到原始的屬性集合中。:2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.4數(shù)據(jù)歸約一般情況下,原始數(shù)據(jù)的數(shù)量較大,而且結(jié)構(gòu)復(fù)雜,直接在原始數(shù)據(jù)集上進(jìn)行數(shù)據(jù)分析將會(huì)耗費(fèi)很長(zhǎng)的時(shí)間。數(shù)據(jù)規(guī)約是產(chǎn)生更小但保持原數(shù)據(jù)完整性的新數(shù)據(jù)集。數(shù)據(jù)歸約的目的是:降低無(wú)效、錯(cuò)誤數(shù)據(jù)對(duì)建模的影響,提高建模的準(zhǔn)確性;少量且具有代表性的數(shù)據(jù)將大幅縮減數(shù)據(jù)分析所需的時(shí)間;降低存儲(chǔ)數(shù)據(jù)的成本。2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.4數(shù)據(jù)歸約1.屬性歸約屬性規(guī)約時(shí)通過(guò)屬性的合并或刪除不相關(guān)的屬性來(lái)減少數(shù)據(jù)的維數(shù),從而提高數(shù)據(jù)分析的效率,降低計(jì)算成本。常用的屬性規(guī)約方法有以下幾種::(1)屬性合并:將若干舊的屬性合并為新的屬性。例如:初始屬性集合為:,屬性可進(jìn)行以下規(guī)約::規(guī)約后的屬性集合為:2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.4數(shù)據(jù)歸約1.屬性歸約(2)逐步向前選擇:從一個(gè)空的屬性集合開(kāi)始,每次從原始屬性集合中選擇一個(gè)當(dāng)前最優(yōu)的屬性添加到當(dāng)前屬性子集中。直到無(wú)法選出最優(yōu)屬性或滿足一定的閾值約束條件為止。(初始屬性集合為:,假設(shè)其中最優(yōu)的屬性為,次優(yōu)的屬性為,再次優(yōu)的屬性為。如果需要從原始屬性中規(guī)約出最優(yōu)的3個(gè)屬性,逐步向前選擇方法步驟如下:2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.4數(shù)據(jù)歸約1.屬性歸約(3)逐步向后刪除:從一個(gè)全屬性集開(kāi)始,每次從當(dāng)前的屬性集合中選擇一個(gè)當(dāng)前最差的屬性并將其從當(dāng)前屬性集中移除,直到無(wú)法選擇出最差的屬性或者滿足一定的閾值約束條件為止。(初始屬性集合為:,假設(shè)其中最優(yōu)的屬性為,次優(yōu)的屬性為,再次優(yōu)的屬性為。其余的屬性為相對(duì)較差的屬性。果需要從原始屬性中規(guī)約出最優(yōu)的3個(gè)屬性,逐步向后刪除方法步驟如下:2.3數(shù)據(jù)預(yù)處理技術(shù)2.3.4數(shù)據(jù)歸約2.主成成分分析主成成分分析法是一種用于連續(xù)屬性的降維方法,它構(gòu)造了原始數(shù)據(jù)的一個(gè)正交變換,新空間的基底去除了原始空間基底下數(shù)據(jù)的相關(guān)性,只需要使用少數(shù)新屬性就能解釋原始屬性。一般情況下,主成成分分析法選擇出的屬性個(gè)數(shù)要少于原始屬性的個(gè)數(shù),能夠解釋原始屬性的新的屬性稱為主成成分。2.4本章小結(jié)PART42.4本章小結(jié)本章的主要內(nèi)容是數(shù)據(jù)采集和數(shù)據(jù)預(yù)處理,這兩部分內(nèi)容是大數(shù)據(jù)分析的重要步驟。數(shù)據(jù)采集是完成數(shù)據(jù)的導(dǎo)入工作,將不同數(shù)據(jù)源的數(shù)據(jù)采集到一起進(jìn)行存儲(chǔ)。數(shù)據(jù)采集是大數(shù)據(jù)分析首先要做的工作,主要介紹了網(wǎng)絡(luò)數(shù)據(jù)和日志數(shù)據(jù)的采集方法。數(shù)據(jù)預(yù)處理是對(duì)采集到的數(shù)據(jù)進(jìn)行第一步的預(yù)處理工作,數(shù)據(jù)預(yù)處理的目的是將采集到的數(shù)據(jù)進(jìn)行預(yù)處理,如補(bǔ)齊缺失值、數(shù)據(jù)歸一化等,將數(shù)據(jù)處理為后續(xù)的數(shù)據(jù)挖掘算法能夠直接進(jìn)行處理。第三章

數(shù)據(jù)存儲(chǔ)據(jù)存儲(chǔ)在大數(shù)據(jù)分析中至關(guān)重要,一方面數(shù)據(jù)采集過(guò)程采集到的數(shù)據(jù)需要存儲(chǔ)某種文件系統(tǒng)中,另一方面存儲(chǔ)的性能在一定程度上能夠影響大數(shù)據(jù)系統(tǒng)分析的性能。分布式文件系統(tǒng)是近年來(lái)流行的大數(shù)據(jù)文件存儲(chǔ)系統(tǒng),本章的主要內(nèi)容是介紹大數(shù)據(jù)分析中所用到的主流分布式文件存儲(chǔ)系統(tǒng)。摘要3.1概述3.4小結(jié)3.2大數(shù)據(jù)存儲(chǔ)3.3分布式數(shù)據(jù)庫(kù)目錄CONTENT3.1概述PART13.1數(shù)據(jù)存儲(chǔ)概述3.1.1數(shù)據(jù)存儲(chǔ)的發(fā)展歷程1.打孔卡紙1725年由BasileBouchon發(fā)明出來(lái),最初是用來(lái)保存印染布上的圖案,直到20世紀(jì)70年代用于存儲(chǔ)計(jì)算機(jī)數(shù)據(jù)。由于其能存儲(chǔ)的信息實(shí)在少的可憐,一般它是用來(lái)保存不同計(jì)算機(jī)的設(shè)置參數(shù),而不是用來(lái)存儲(chǔ)數(shù)據(jù)。2.穿孔紙帶AlexanderBain在1864年最早使用了穿孔紙帶,紙帶上每一行代表一個(gè)字符,顯然穿孔紙帶的容量比打卡紙大多了。3.1數(shù)據(jù)存儲(chǔ)概述3.1.1數(shù)據(jù)存儲(chǔ)的發(fā)展歷程3.計(jì)數(shù)電子管1946年RCA公司啟動(dòng)了對(duì)計(jì)數(shù)電子管的研究,一個(gè)電子管(25厘米)能夠存儲(chǔ)4096bit的數(shù)據(jù)。同年,ENIAC計(jì)算機(jī)誕生,它的存儲(chǔ)采用的是真空電子管系統(tǒng),在賓夕法尼亞大學(xué)的一座建筑里占據(jù)了170平方米的面積。4.盤(pán)式磁帶20世紀(jì)50年代,IBM最早把盤(pán)式磁帶用在數(shù)據(jù)存儲(chǔ)上,一卷磁帶可以代替一萬(wàn)張打孔卡紙,成為直到80年代之前最為普及的計(jì)算機(jī)存儲(chǔ)設(shè)備。3.1數(shù)據(jù)存儲(chǔ)概述3.1.1數(shù)據(jù)存儲(chǔ)的發(fā)展歷程5.盒式錄音磁帶盒式錄音磁帶是飛利浦公司在1963年發(fā)明的,直到70年代才開(kāi)始流行開(kāi)來(lái)。一些計(jì)算機(jī),如ZXSpectrum,Commodore64和AmstradCPC使用它來(lái)存儲(chǔ)數(shù)據(jù)。一盤(pán)90分鐘的錄音磁帶,在每一面可以存儲(chǔ)700KB到1M的數(shù)據(jù)。6.磁鼓一支磁鼓有12英寸長(zhǎng),一分鐘可以轉(zhuǎn)12500轉(zhuǎn)。它在IBM650系列計(jì)算機(jī)中被當(dāng)成主存儲(chǔ)器,每支可以保存1萬(wàn)個(gè)字符(不到10K)。3.1數(shù)據(jù)存儲(chǔ)概述3.1.1數(shù)據(jù)存儲(chǔ)的發(fā)展歷程7.軟盤(pán)1969年,第一張8英寸大的軟盤(pán)面世,可以保存8KB的只讀數(shù)據(jù)。到了20世紀(jì)90年代后期,容量為250MB的3.5英寸可讀寫(xiě)軟盤(pán)已經(jīng)被廣泛應(yīng)用了。8.硬盤(pán)1956年,IBM發(fā)明了第一個(gè)硬盤(pán),由50個(gè)24英寸的盤(pán)片組成,只有5MB,但卻有兩臺(tái)冰箱大小,重量超過(guò)1噸。到20世紀(jì)60、70年代,14英寸的硬盤(pán)成為市場(chǎng)的主流,1980年,3.5吋,5M容量的硬盤(pán)開(kāi)始出現(xiàn),80年代末期,2.5英寸的硬盤(pán)誕生,90年代FlashSSD誕生。2014年,3DNAND開(kāi)始量產(chǎn),這意味著存儲(chǔ)密度更高、體積更小的SSD成為可能。到目前為止,硬盤(pán)的技術(shù)還在繼續(xù)向前發(fā)展。3.1數(shù)據(jù)存儲(chǔ)概述3.1.1數(shù)據(jù)存儲(chǔ)的發(fā)展歷程9.大數(shù)據(jù)時(shí)代的存儲(chǔ)技術(shù)(1)虛擬化存儲(chǔ)虛擬化存儲(chǔ)是指對(duì)存儲(chǔ)硬件(內(nèi)存、硬盤(pán)等)進(jìn)行統(tǒng)一進(jìn)行管理,并通過(guò)虛擬化軟件對(duì)存儲(chǔ)硬件進(jìn)行抽象化表現(xiàn)。通過(guò)一個(gè)或多個(gè)服務(wù),統(tǒng)一提供一個(gè)全面的服務(wù)功能。虛擬化存儲(chǔ)可以:屏蔽系統(tǒng)的復(fù)雜性,增加或集成新的功能,仿真、整合或分解現(xiàn)有的服務(wù)功能。虛擬化存儲(chǔ)是現(xiàn)階段以及未來(lái)的很長(zhǎng)一段時(shí)間內(nèi)的數(shù)據(jù)存儲(chǔ)技術(shù)的主要內(nèi)容。(2)云存儲(chǔ)云存儲(chǔ)是在云計(jì)算的概念上延伸和發(fā)展出來(lái)的一個(gè)新概念,它是指通過(guò)集群應(yīng)用、網(wǎng)絡(luò)技術(shù)或分布式文件系統(tǒng)等功能,使得網(wǎng)絡(luò)中大量不同類型的存儲(chǔ)設(shè)備通過(guò)應(yīng)用軟件集合起來(lái)協(xié)同工作,共同對(duì)外提供數(shù)據(jù)存儲(chǔ)和業(yè)務(wù)訪問(wèn)功能的一個(gè)系統(tǒng),保證數(shù)據(jù)的安全性,并節(jié)約存儲(chǔ)空間。(3)分布式存儲(chǔ)分布式存儲(chǔ)是相對(duì)于集中式存儲(chǔ)而言的,傳統(tǒng)的集中式存儲(chǔ)是將所有的數(shù)據(jù)進(jìn)行集中存放,如設(shè)置專門的存儲(chǔ)陣列來(lái)存儲(chǔ)數(shù)據(jù)。分布式存儲(chǔ)是通過(guò)大規(guī)模集群環(huán)境來(lái)存儲(chǔ)數(shù)據(jù),集群中的每個(gè)節(jié)點(diǎn)不僅要負(fù)責(zé)數(shù)據(jù)計(jì)算,同時(shí)還有存儲(chǔ)一部分?jǐn)?shù)據(jù)。集群中所有節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)的和才是完整的數(shù)據(jù),集群中專門設(shè)置管理節(jié)點(diǎn)對(duì)數(shù)據(jù)的存儲(chǔ)進(jìn)行管理、負(fù)載平衡等工作。3.1數(shù)據(jù)存儲(chǔ)概述3.1.2數(shù)據(jù)存儲(chǔ)模型1.行存儲(chǔ)模型行存儲(chǔ)是關(guān)系模型中常用的存儲(chǔ)方式,在關(guān)系模型中使用記錄(行或者元組)進(jìn)行存儲(chǔ),記錄存儲(chǔ)在表中,表由表結(jié)構(gòu)所界定。表中的每一列都用名稱和類型,表中所有的數(shù)據(jù)都要符合表結(jié)構(gòu)的定義。在物理存儲(chǔ)方面,行存儲(chǔ)模式是把數(shù)據(jù)庫(kù)中一行中的數(shù)據(jù)值串在一起存儲(chǔ)起來(lái)(行頭信息,列長(zhǎng),列值),然后再存儲(chǔ)下一行數(shù)據(jù),以此類推。2.列存儲(chǔ)模型列存儲(chǔ)模型是以列相關(guān)存儲(chǔ)架構(gòu)進(jìn)行數(shù)據(jù)存儲(chǔ),它以流的方式在列中存儲(chǔ)所有的數(shù)據(jù),主要適合批量數(shù)據(jù)處理和隨機(jī)查詢。在物理存儲(chǔ)方面,列存儲(chǔ)模型是把一列中的數(shù)據(jù)值串放在一起存儲(chǔ)起來(lái),然后再存儲(chǔ)下一列數(shù)據(jù),以此類推。3.1數(shù)據(jù)存儲(chǔ)概述3.1.2數(shù)據(jù)存儲(chǔ)模型3.鍵值存儲(chǔ)模型鍵值存儲(chǔ),即Key-Value存儲(chǔ),簡(jiǎn)稱KV存儲(chǔ)。其中,Key指存儲(chǔ)的索引,Value指索引所對(duì)應(yīng)的值。它是NoSQL存儲(chǔ)的一種方式。鍵值存儲(chǔ)按照鍵值對(duì)的形式進(jìn)行組織,索引和存儲(chǔ),因此它不適合涉及過(guò)多數(shù)據(jù)關(guān)系的數(shù)據(jù),但這種存儲(chǔ)方式能夠有效降低磁盤(pán)的讀寫(xiě)次數(shù),比傳統(tǒng)的SQL關(guān)系數(shù)據(jù)庫(kù)擁有更好的讀寫(xiě)性能。4.圖形存儲(chǔ)模型圖形存儲(chǔ)對(duì)應(yīng)的是圖數(shù)據(jù)庫(kù),存儲(chǔ)頂點(diǎn)和邊的信息,并且支持添加注釋。圖數(shù)據(jù)庫(kù)可用于對(duì)事物建模,如社交圖譜、真實(shí)世界的各種對(duì)象等。圖數(shù)據(jù)庫(kù)的查詢語(yǔ)言一般用于查找圖形中端點(diǎn)的路徑,或端點(diǎn)之間路徑的屬性,例如Neo4j是一個(gè)典型的圖數(shù)據(jù)庫(kù)。3.2大數(shù)據(jù)存儲(chǔ)PART23.2大數(shù)據(jù)存儲(chǔ)在當(dāng)今這樣一個(gè)信息爆炸的時(shí)代,信息資源呈現(xiàn)爆炸式的增長(zhǎng),對(duì)存儲(chǔ)系統(tǒng)的存儲(chǔ)容量、數(shù)據(jù)的可用性能高以及輸入/輸出的性能等各方面提出了更高的要求。海量數(shù)據(jù)一般指數(shù)據(jù)量大,往往是TB級(jí)、PB級(jí)的數(shù)據(jù)集合。存儲(chǔ)系統(tǒng)的存儲(chǔ)模式影響著整個(gè)海量數(shù)據(jù)存儲(chǔ)系統(tǒng)的性能,選擇一個(gè)良好的海量數(shù)據(jù)存儲(chǔ)模型能夠大大提高海量存儲(chǔ)系統(tǒng)的性能。對(duì)海量數(shù)據(jù)而言,在單一的存儲(chǔ)設(shè)備上存儲(chǔ)海量數(shù)據(jù)顯然是不可能的。需要對(duì)海量數(shù)據(jù)進(jìn)行分布式存儲(chǔ)。如何對(duì)海量數(shù)據(jù)進(jìn)行合理的組織、可靠存儲(chǔ),并提供高效、高可用、安全的數(shù)據(jù)訪問(wèn)性能稱為當(dāng)前的一個(gè)研究熱點(diǎn)問(wèn)題。理想的海量數(shù)據(jù)存儲(chǔ)模型應(yīng)該能夠提供高性能、可伸縮、跨平臺(tái)、安全的數(shù)據(jù)共享能力。3.2大數(shù)據(jù)存儲(chǔ)3.2.1海量數(shù)據(jù)存儲(chǔ)關(guān)鍵技術(shù)1.分區(qū)技術(shù)分區(qū)技術(shù)是指為了更精細(xì)的對(duì)數(shù)據(jù)庫(kù)對(duì)象如表、索引以及索引編排表進(jìn)行管理和訪問(wèn)??梢詫?duì)這些數(shù)據(jù)庫(kù)對(duì)象進(jìn)行進(jìn)一步的劃分,這就是所謂的分區(qū)技術(shù)。分區(qū)的表通過(guò)使用“分區(qū)關(guān)鍵字”分區(qū),分區(qū)關(guān)鍵字是確定某個(gè)行所在分區(qū)的一組列。例如Oracle提供了三種基本數(shù)據(jù)分配方法:范圍(range)、列表(list)、散列(hash)。通過(guò)數(shù)據(jù)分區(qū)方法,可以將表分成單一分區(qū)表或組合分區(qū)表。此外,Oracle還提供了三種類型的分區(qū)索引:本地索引、全局分區(qū)索引和全局非分區(qū)索引??梢愿鶕?jù)業(yè)務(wù)需求選擇相應(yīng)的索引分區(qū)策略,從而實(shí)現(xiàn)最合適的分區(qū),以支持任何類型的應(yīng)用。通過(guò)用于表、索引和索引編排表的分區(qū)技術(shù),海量數(shù)據(jù)可以選用以上分區(qū)技術(shù)中的一種或幾種,通過(guò)一組完整的SQL命令來(lái)管理分區(qū)表,從而達(dá)到高性能檢索的目的。2.并行處理技術(shù)并行處理是指:將單個(gè)任務(wù)分解為多個(gè)更小的單元。不是將所有工作通過(guò)一個(gè)進(jìn)程完成,而是將任務(wù)并行化,從而使得多個(gè)進(jìn)程同時(shí)在更小的單元上運(yùn)行,這樣能極大的提高系統(tǒng)性能并且能最佳的利用系統(tǒng)資源。由于并行系統(tǒng)的每個(gè)節(jié)點(diǎn)都互相獨(dú)立,使得一個(gè)節(jié)點(diǎn)如果出現(xiàn)故障不會(huì)導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)的崩潰,剩余節(jié)點(diǎn)可以繼續(xù)為用戶提供服務(wù)的同時(shí)對(duì)故障節(jié)點(diǎn)進(jìn)行恢復(fù),因此并行技術(shù)比單節(jié)點(diǎn)的可靠性要高。如Oracle數(shù)據(jù)庫(kù)并行技術(shù)還能根據(jù)需要隨時(shí)分配和釋放數(shù)據(jù)庫(kù)實(shí)例,數(shù)據(jù)庫(kù)的機(jī)動(dòng)性高。還有一點(diǎn)就是并行技術(shù)可以克服內(nèi)存限制,為更多用戶提供數(shù)據(jù)服務(wù)。3.2大數(shù)據(jù)存儲(chǔ)3.2.2分布式文件系統(tǒng)布式文件系統(tǒng)(DistributedFileSystem)是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連。分布式文件系統(tǒng)的設(shè)計(jì)一般是基于客戶機(jī)/服務(wù)器模式(C/S模式)。分布式文件系統(tǒng)可以有效解決數(shù)據(jù)的存儲(chǔ)和管理難題:將固定于某個(gè)地點(diǎn)的某個(gè)文件系統(tǒng),擴(kuò)展到任意多個(gè)地點(diǎn)/多個(gè)文件系統(tǒng),眾多的節(jié)點(diǎn)組成一個(gè)文件系統(tǒng)網(wǎng)絡(luò)。每個(gè)節(jié)點(diǎn)可以分布在不同的地點(diǎn),通過(guò)網(wǎng)絡(luò)進(jìn)行節(jié)點(diǎn)間的通信和數(shù)據(jù)傳輸。在使用分布式文件系統(tǒng)時(shí),無(wú)需關(guān)心數(shù)據(jù)是存儲(chǔ)在哪個(gè)節(jié)點(diǎn)上、或者是從哪個(gè)節(jié)點(diǎn)從獲取的,只需要像使用本地文件系統(tǒng)一樣管理和存儲(chǔ)文件系統(tǒng)中的數(shù)據(jù)。3.2大數(shù)據(jù)存儲(chǔ)3.2.2分布式文件系統(tǒng)1.LustreLustre是一種基于集群的存儲(chǔ)體現(xiàn)結(jié)構(gòu),其核心組件是Lustre文件系統(tǒng),它在Linux操作系統(tǒng)上運(yùn)行,并提供符合POSIX標(biāo)準(zhǔn)的文件系統(tǒng)接口。Lustre可以提供數(shù)以萬(wàn)計(jì)記的客戶端,PB級(jí)的數(shù)據(jù)存儲(chǔ),以及每秒數(shù)百GB的吞吐量,因此很多高性能計(jì)算機(jī)中心采用Lustre文件系統(tǒng)作為全局文件系統(tǒng)3.2大數(shù)據(jù)存儲(chǔ)3.2.2分布式文件系統(tǒng)1.Lustre(1)管理服務(wù)器(MGS)MGS負(fù)責(zé)存儲(chǔ)集群中所有Lustre文件系統(tǒng)的配置信息,并將該信息提供給其它Lustre組件。Lustre客戶端通過(guò)聯(lián)系MGS獲取文件系統(tǒng)信息,集群中的Lustre目標(biāo)(target)則獲取MSG提供的信息。MGS有自己的存儲(chǔ)空間,以便管理。同時(shí),MGS可以同元數(shù)據(jù)服務(wù)器(MDS)放在一起,共享存儲(chǔ)空間。(2)元數(shù)據(jù)服務(wù)器(MDS)MDS存儲(chǔ)MDT中的元數(shù)據(jù)信息提供給Lustre客戶端使用。MDS管理Lustre文件系統(tǒng)中的名稱和目錄,為一個(gè)或多個(gè)本地MDT提供網(wǎng)絡(luò)請(qǐng)求使用。(3)元數(shù)據(jù)目標(biāo)(MDT)MDT是MDS附加在存儲(chǔ)上的元數(shù)據(jù)(如文件名、目錄、權(quán)限等),一次只能有一個(gè)MDS訪問(wèn)該MDT。如果當(dāng)前的MDS發(fā)送故障,則備用MDS可以為MDT提供服務(wù),這稱為MDS故障切換。(4)對(duì)象存儲(chǔ)服務(wù)器(OSS)OSS為一個(gè)或多個(gè)OST提供文件I/O服務(wù),通常情況下一個(gè)OSS服務(wù)2到8個(gè)OST,每個(gè)OST最大16TB。(5)對(duì)象存儲(chǔ)目標(biāo)(OST)用戶的數(shù)據(jù)文件存儲(chǔ)在一個(gè)或多個(gè)對(duì)象中,每個(gè)對(duì)象位于Lustre文件系統(tǒng)的單獨(dú)OST中。(6)Lustre客戶端Lustre客戶端是運(yùn)行Lustre客戶端軟件的計(jì)算、可視化或桌面的節(jié)點(diǎn),可掛載Lustre文件系統(tǒng)。3.2大數(shù)據(jù)存儲(chǔ)3.2.2分布式文件系統(tǒng)2.HDFSHDFS(HadoopDistributedFileSystem,Hadoop分布式文件系統(tǒng))是Hadoop項(xiàng)目的核心子項(xiàng)目,是分布式計(jì)算中數(shù)據(jù)存儲(chǔ)管理的基礎(chǔ),是基于流數(shù)據(jù)模式訪問(wèn)和處理超大文件的需求而開(kāi)發(fā)的,可以運(yùn)行于廉價(jià)的商用服務(wù)器上。它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點(diǎn)。但同時(shí),它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。HDFS是一個(gè)高度容錯(cuò)性的系統(tǒng),適合部署在廉價(jià)的機(jī)器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問(wèn),非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。3.2大數(shù)據(jù)存儲(chǔ)3.2.2分布式文件系統(tǒng)2.HDFSHDFS的名字節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)都是運(yùn)行在普通計(jì)算機(jī)上的軟件,任何支持Java的計(jì)算機(jī)都可以運(yùn)行名字節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn),因此很容易將HDFS部署到大規(guī)模的集群上。集群中只有一個(gè)名字節(jié)點(diǎn)大大的簡(jiǎn)化了系統(tǒng)體系結(jié)構(gòu),名字節(jié)點(diǎn)是整個(gè)HDFS集群的管理者,同時(shí)也是所有HDFS的元數(shù)據(jù)(Metedata)倉(cāng)庫(kù),其中包含所有數(shù)據(jù)存儲(chǔ)的各類信息。HDFS支持傳統(tǒng)的文件組織結(jié)構(gòu),一個(gè)用戶或者程序可以創(chuàng)建目錄,存儲(chǔ)文件到不同的目錄中。可以創(chuàng)建、移動(dòng)文件,將文件從一個(gè)目錄移動(dòng)到另一個(gè)目錄中,或者重命名等。名字節(jié)點(diǎn)維護(hù)文件系統(tǒng)的命名空間,任何文件命名空間的改變或?qū)傩愿淖兌急挥涗浀矫止?jié)點(diǎn)中。HDFS的物理存儲(chǔ)結(jié)構(gòu)是基于塊的存儲(chǔ)方式,因此一個(gè)文件中除了最后一個(gè)塊,其它塊都有相同的大小(系統(tǒng)默認(rèn)塊的大小是64MB)。為保障輸出存儲(chǔ)的安全性,HDFS采用塊冗余的策略,即同一個(gè)塊的內(nèi)容分別備份(系統(tǒng)默認(rèn)的備份數(shù)量是3)在不同的數(shù)據(jù)節(jié)點(diǎn)上。塊的大小和備份數(shù)是以文件為單位進(jìn)行配置的,可以在文件創(chuàng)建時(shí)或創(chuàng)建之后修改備份數(shù)量。名字節(jié)點(diǎn)負(fù)責(zé)處理整個(gè)HDFS集群中所有塊的相關(guān)操作,它與數(shù)據(jù)節(jié)點(diǎn)的通信通過(guò)心跳信息來(lái)交互,周期性的接收來(lái)之?dāng)?shù)據(jù)節(jié)點(diǎn)的心跳和塊報(bào)告。一個(gè)心跳的到達(dá)表示這個(gè)數(shù)據(jù)節(jié)點(diǎn)是工作正常的,塊報(bào)告則包括該數(shù)據(jù)節(jié)點(diǎn)上所有塊的列表。3.3分布式數(shù)據(jù)庫(kù)PART33.3分布式數(shù)據(jù)庫(kù)分布式數(shù)據(jù)庫(kù)是指在邏輯上是一個(gè)整體,在物理上則是分別存儲(chǔ)在不同物理節(jié)點(diǎn)上的數(shù)據(jù)庫(kù)系統(tǒng)。應(yīng)用程序通過(guò)網(wǎng)絡(luò)連接可以訪問(wèn)分布在不同物理位置的數(shù)據(jù)庫(kù)。分布式數(shù)據(jù)庫(kù)分布性表現(xiàn)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)不是存儲(chǔ)在同一臺(tái)計(jì)算機(jī)的存儲(chǔ)設(shè)備上,這是與傳統(tǒng)集中式數(shù)據(jù)庫(kù)的主要區(qū)別。對(duì)用戶而言,分布式數(shù)據(jù)庫(kù)系統(tǒng)在邏輯上和集中式數(shù)據(jù)庫(kù)系統(tǒng)一樣,用戶可以在任何一個(gè)場(chǎng)地執(zhí)行全局應(yīng)用,就好像那些數(shù)據(jù)是存儲(chǔ)在同一臺(tái)計(jì)算機(jī)上,用戶并沒(méi)有什么感覺(jué)不一樣的地方。在大多數(shù)網(wǎng)絡(luò)環(huán)境中,單個(gè)數(shù)據(jù)庫(kù)服務(wù)器最終會(huì)不滿足使用。如果服務(wù)器軟件支持透明的水平擴(kuò)展,那么就可以增加多個(gè)服務(wù)器來(lái)進(jìn)一步分布數(shù)據(jù)和分擔(dān)處理任務(wù)。分布式數(shù)據(jù)庫(kù)的主要優(yōu)點(diǎn)有:(1)具有靈活的體系結(jié)構(gòu)。(2)適應(yīng)分布式的管理和控制機(jī)構(gòu)。(3)經(jīng)濟(jì)性能優(yōu)越。(4)系統(tǒng)的可靠性高、可用性好。(5)局部應(yīng)用的響應(yīng)速度快。(6)可擴(kuò)展性好,易于集成現(xiàn)有系統(tǒng)。分布式數(shù)據(jù)庫(kù)的主要缺點(diǎn)有:(1)系統(tǒng)開(kāi)銷大,主要花在通信部分。(2)復(fù)雜的存取結(jié)構(gòu),原來(lái)在集中式系統(tǒng)中有效存取數(shù)據(jù)的技術(shù),在分布式系統(tǒng)中都不再適用。(3)數(shù)據(jù)的安全性和保密性較難處理。3.3分布式數(shù)據(jù)庫(kù)3.3.1Hbase分布式數(shù)據(jù)庫(kù)HBase——HadoopDatabase,是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),利用HBase技術(shù)可以在PC集群上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。HBase利用HadoopHDFS作為其文件存儲(chǔ)系統(tǒng),利用HadoopMapReduce并行計(jì)算框架來(lái)批量處理HBase中的海量數(shù)據(jù),利用Zookeeper作為HBase集群之間的協(xié)同服務(wù)。3.3分布式數(shù)據(jù)庫(kù)3.3.1Hbase分布式數(shù)據(jù)庫(kù)HMaster:HBaseHMaster是HBase集群的管理者,相當(dāng)于HBase集群中的主機(jī),用于協(xié)調(diào)多個(gè)HRegionServer,同時(shí)負(fù)責(zé)監(jiān)聽(tīng)各個(gè)HRegionServer的狀態(tài),并平衡HRegionServer之間的負(fù)載。HBase允許多個(gè)HMaster節(jié)點(diǎn)共存,但這需要Zookeeper的協(xié)助。多個(gè)HMaster節(jié)點(diǎn)共存時(shí),只有一個(gè)HMaster對(duì)外提供服務(wù),其它的HMaster節(jié)點(diǎn)處于待命狀態(tài)。當(dāng)正在工作的HMaster節(jié)點(diǎn)宕機(jī)時(shí),其它的HMaster則會(huì)接管HBase集群。HRegionServer:HRegionServer是負(fù)責(zé)存儲(chǔ)HBase數(shù)據(jù)庫(kù)文件的服務(wù)器節(jié)點(diǎn),類似Hadoop中的數(shù)據(jù)節(jié)點(diǎn),其包含了多個(gè)HRegion。在讀寫(xiě)數(shù)據(jù)時(shí),Client直接連接RegionServer,獲取HBase中的數(shù)據(jù)。對(duì)于Region而言,時(shí)真實(shí)存儲(chǔ)HBase數(shù)據(jù)的地方,也就是說(shuō)Region是HBase可用性和分布式的基本單位,當(dāng)一個(gè)表格很大時(shí),那么表格數(shù)據(jù)將存放在多個(gè)Region中。在每個(gè)Region中,會(huì)關(guān)聯(lián)多個(gè)存儲(chǔ)單元(Store)。Zookeeper:Zookeeper是HBaseMaster的高可用解決方案,即Zookeeper保證了至少有一個(gè)HBaseMaster處于運(yùn)行狀態(tài)。此外,Zookeeper還負(fù)責(zé)Region和RegionServer的注冊(cè)管理任務(wù)。Zookeeper是HBase集群正常工作所不可或缺的一個(gè)必要組件。Store:HBase的存儲(chǔ)核心,由MemStore和StoreFlie組成,MemStore是文件存儲(chǔ)的緩存部分。3.3分布式數(shù)據(jù)庫(kù)3.3.1Hbase分布式數(shù)據(jù)庫(kù)1.HBase邏輯視圖HBase是一個(gè)構(gòu)建在HDFS上的分布式列存儲(chǔ)系統(tǒng),它是一種無(wú)模式的分布式數(shù)據(jù)庫(kù),每一行都有一個(gè)可排序的主鍵和任意多的列,列可以根據(jù)需要?jiǎng)討B(tài)添加,其數(shù)據(jù)類型單一,即HBase中的數(shù)據(jù)都是字符串,沒(méi)有類型。在HBase中,其邏輯視圖包括以下幾部分。RowKey(行鍵):行鍵是字節(jié)數(shù)組,任何字符串都可以作為行鍵,表中的行根據(jù)行鍵進(jìn)行排序,對(duì)表中數(shù)據(jù)的訪問(wèn)通過(guò)單個(gè)行鍵訪問(wèn)或者行鍵范圍進(jìn)行訪問(wèn)。ColumnFamily(列族):列族必須在表定義時(shí)給出,數(shù)據(jù)按照列族分開(kāi)存儲(chǔ),即每個(gè)列族對(duì)應(yīng)一個(gè)Store,這種設(shè)計(jì)非常適合進(jìn)行數(shù)據(jù)分析。ColumnQualifier(列限定符):列里面的數(shù)據(jù)通過(guò)列限定符來(lái)定位,每個(gè)列族可以包含一個(gè)或多個(gè)列限定符。列限定符不需要在表定義時(shí)給出,新的列限定符可以按需、動(dòng)態(tài)加入。TimeStamp(時(shí)間戳):每個(gè)單元格數(shù)據(jù)(HBase表中具體的數(shù)據(jù))有多個(gè)時(shí)間版本,它們之間用時(shí)間戳區(qū)分。Cell(單元格):是HBase中存儲(chǔ)的具體數(shù)據(jù)的值(Value),單元格中的數(shù)據(jù)時(shí)沒(méi)有類型的,全部以字節(jié)碼的形式存儲(chǔ)。通過(guò)HBase的邏輯視圖可以看出,HBase中存儲(chǔ)的數(shù)據(jù)需要通過(guò)一個(gè)四維的坐標(biāo)來(lái)索引,即:<RowKey,ColumnFamily,ColumnQualifier,TimeStamp>->Value。3.3分布式數(shù)據(jù)庫(kù)3.3.1Hbase分布式數(shù)據(jù)庫(kù)2.HBase物理視圖HBase物理視圖是指HBase數(shù)據(jù)的具體存儲(chǔ)方式,包括以下內(nèi)容:(1)每個(gè)列族存儲(chǔ)在HDFS的一個(gè)單獨(dú)文件中,但空值不會(huì)被保存。(2)HBase為每個(gè)值(value)維護(hù)了一個(gè)多級(jí)索引,即:<RowKey,ColumnFamily,ColumnQualifier,TimeStamp>。(3)HBase表在行方向上分為多個(gè)Region。(4)Region是HBase中分布式存儲(chǔ)和負(fù)載平衡的最小單元,不同的Region分布在不同的RegionServer上。(5)Region是按大小分割的,隨著數(shù)據(jù)的增加,Region不斷增大,當(dāng)增大到一定閾值時(shí),Region會(huì)分成兩個(gè)新的Region。(6)Region是由一個(gè)或多個(gè)Store組成,每個(gè)Store保存一個(gè)列族。每個(gè)Store由多個(gè)StoreFile組成,StoreFile包含HFile,StoreFile存儲(chǔ)在HDFS上。3.3分布式數(shù)據(jù)庫(kù)3.3.1Hbase分布式數(shù)據(jù)庫(kù)3.-ROOT-表和.META.表在HBase中,所有Region的元數(shù)據(jù)信息是存儲(chǔ)在.META.表中,隨著Region數(shù)量的增多,.META.表中的數(shù)據(jù)也會(huì)增大,該表也會(huì)分裂并存儲(chǔ)在不同的Region中。因此,為了定位.META.表中各個(gè)Region的位置,把.META.表的多有Region的元數(shù)據(jù)保持在-ROOT-表中,-ROOT-表的訪問(wèn)位置有Zookeeper來(lái)維護(hù),3.3分布式數(shù)據(jù)庫(kù)3.3.1Hbase分布式數(shù)據(jù)庫(kù)客戶端在訪問(wèn)HBase中的數(shù)據(jù)表時(shí),通過(guò)Zookeeper找到-ROOT-表的位置,從中讀取到數(shù)據(jù)表的元數(shù)據(jù)信息,即獲取到.META.表中的信息,從.META.表中的RegionServer到Region的映射信息中找到存儲(chǔ)數(shù)據(jù)表的Region位置,這樣就能一層層的索引到用戶數(shù)據(jù)表所在的具體位置。-ROOT-表只有一個(gè)Region,所以永遠(yuǎn)不會(huì)被分割。圖4.4的索引結(jié)構(gòu)能夠保證在數(shù)據(jù)查詢時(shí),只需要三次跳轉(zhuǎn)就可以定位任意一個(gè)Region。為了提高客戶端的訪問(wèn)速度,.META.表的所有Region全部都在內(nèi)存中,而且客戶端訪問(wèn)過(guò)的位置信息也會(huì)緩存起來(lái),且緩存不會(huì)主動(dòng)失效,這樣能夠縮短客戶端訪問(wèn)數(shù)據(jù)的時(shí)間。3.3分布式數(shù)據(jù)庫(kù)3.3.2MongoDB分布式數(shù)據(jù)庫(kù)MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。MongoDB最大的特點(diǎn)是它支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。在MongoDB中,有如下概念與傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)是不同的。(1)在MongoDB中,文檔(document)是數(shù)據(jù)的基本單元,類似于關(guān)系數(shù)據(jù)庫(kù)中行的概念,但要遠(yuǎn)復(fù)雜于行的概念。(2)集合(collection)是一組文檔,集合類似于關(guān)系數(shù)據(jù)庫(kù)中表的概念。(3)在MongoDB集群中,單個(gè)節(jié)點(diǎn)可以容納多個(gè)獨(dú)立的數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)庫(kù)都有自己的集合和權(quán)限。(4)MongoDB自帶簡(jiǎn)潔的JavaScriptShell工具,該工具對(duì)于管理MongoDB實(shí)例和操作數(shù)據(jù)的功能非常強(qiáng)大。(5)在MongoDB數(shù)據(jù)庫(kù)中,每個(gè)文檔都有一個(gè)特殊的鍵“_id”,它是文檔所處集合中唯一存在的,相當(dāng)于關(guān)系數(shù)據(jù)庫(kù)中表的主鍵。3.3分布式數(shù)據(jù)庫(kù)3.3.2MongoDB分布式數(shù)據(jù)庫(kù)MongoDB與關(guān)系數(shù)據(jù)庫(kù)對(duì)比表對(duì)比內(nèi)容MongoDB關(guān)系數(shù)據(jù)庫(kù)表集合二維表表中一行數(shù)據(jù)文檔(document)一條記錄(record)表字段鍵(key)字段(field)字段值值(value)值(value)外鍵無(wú)PKFK靈活擴(kuò)展性極高差3.3分布式數(shù)據(jù)庫(kù)3.3.2MongoDB分布式數(shù)據(jù)庫(kù)在MongoDB集群中,有三類角色:實(shí)際存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn)、配置文件存儲(chǔ)節(jié)點(diǎn)和路由接入節(jié)點(diǎn),MongoDB系統(tǒng)架構(gòu)如圖所示。3.3分布式數(shù)據(jù)庫(kù)3.3.2MongoDB分布式數(shù)據(jù)庫(kù)(1)配置節(jié)點(diǎn)(MongodConfig):配置節(jié)點(diǎn)存儲(chǔ)的是數(shù)據(jù)配置文件的元數(shù)據(jù)文件,即存儲(chǔ)chunk與server的映射關(guān)系。其中,chunk是指MongoDB中分區(qū)的概念,chunk的大小由配置文件中“chunksize”參數(shù)指定,當(dāng)chunk中文檔的數(shù)量超過(guò)指定的最大值時(shí),原始的chunk將會(huì)分裂為兩個(gè)chunk。(2)路由節(jié)點(diǎn)(Mongos):路由節(jié)點(diǎn)的作用是起到負(fù)載均衡的作用。(3)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)(Mongod):負(fù)載具體的存儲(chǔ)MongoDB中的數(shù)據(jù)文件。3.3分布式數(shù)據(jù)庫(kù)3.3.3Hive分布式數(shù)據(jù)倉(cāng)庫(kù)Hive是一種建立在Hadoop文件系統(tǒng)上的數(shù)據(jù)倉(cāng)庫(kù)架構(gòu),并對(duì)存儲(chǔ)在HDFS中的數(shù)據(jù)進(jìn)行分析和管理,它將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供完整的SQL查詢功能。Hive提供一套完整的SQL功能,稱為HiveSQL(HQL)。使用HQL使得不熟悉MapReduce的用戶也能方便的利用SQL語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行查詢、匯總、分析。Hive和Hadoop的關(guān)系如圖所示。3.3分布式數(shù)據(jù)庫(kù)3.3.3Hive分布式數(shù)據(jù)倉(cāng)庫(kù)Hive中的SQL與傳統(tǒng)SQL的區(qū)別如表所示。

HQLSQL數(shù)據(jù)存儲(chǔ)HDFS、HBase本地文件系統(tǒng)數(shù)據(jù)格式用戶自定義系統(tǒng)決定數(shù)據(jù)更新不支持(覆蓋之前的數(shù)據(jù))支持索引有有執(zhí)行MapReduceExecutor執(zhí)行延遲高低可擴(kuò)展性高低數(shù)據(jù)規(guī)模大(TB級(jí)別)小數(shù)據(jù)檢查讀時(shí)模式寫(xiě)時(shí)模式3.3分布式數(shù)據(jù)庫(kù)3.3.3Hive分布式數(shù)據(jù)倉(cāng)庫(kù)Hive系統(tǒng)架構(gòu)如圖所示。Hive客戶端通過(guò)一系列提供的接口接收用戶的SQL指令,使用自身的Driver并結(jié)合元數(shù)據(jù)(MetaStore)信息,將SQL指令翻譯為MapReduce,提交到Hadoop平臺(tái)中執(zhí)行,執(zhí)行后的結(jié)果反饋給用戶交互接口。3.3分布式數(shù)據(jù)庫(kù)3.3.3Hive分布式數(shù)據(jù)倉(cāng)庫(kù)(1)用戶接口:ClientCLI是指Hiveshell命令接口,JDBC是指Java訪問(wèn)Hive接口。(2)元數(shù)據(jù)(MetaStore):Hive元數(shù)據(jù)包括:表名、表所屬數(shù)據(jù)庫(kù)、表的擁有者、列/分區(qū)字段、表的類型、表的數(shù)據(jù)所在目錄等。(3)驅(qū)動(dòng)器(Driver),包括以下內(nèi)容:

a.解析器(SQLParser):將SQL指令轉(zhuǎn)換為抽象語(yǔ)法樹(shù)(AbstractSyntaxTree,AST)。

b.編譯器(PhysicalPlan):將AST編譯生成邏輯執(zhí)行計(jì)劃。

c.優(yōu)化器(QueryOptimizer):對(duì)邏輯執(zhí)行計(jì)劃進(jìn)行優(yōu)化

d.執(zhí)行器(Execution):把邏輯執(zhí)行計(jì)劃轉(zhuǎn)換成可以運(yùn)行的物理計(jì)劃,即MapReduce代碼。Hive的應(yīng)用場(chǎng)景主要有:(1)日志分析:常用于大多互聯(lián)網(wǎng)公司

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論