林子雨大數(shù)據(jù)技術(shù)原理與應(yīng)用答案(全)_第1頁
林子雨大數(shù)據(jù)技術(shù)原理與應(yīng)用答案(全)_第2頁
林子雨大數(shù)據(jù)技術(shù)原理與應(yīng)用答案(全)_第3頁
林子雨大數(shù)據(jù)技術(shù)原理與應(yīng)用答案(全)_第4頁
林子雨大數(shù)據(jù)技術(shù)原理與應(yīng)用答案(全)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1/1林子雨大數(shù)據(jù)技術(shù)原理與應(yīng)用答案(全)林子雨大數(shù)據(jù)技術(shù)原理及應(yīng)用課后題答案

大數(shù)據(jù)第一章大數(shù)據(jù)概述課后題(1)

大數(shù)據(jù)第二章大數(shù)據(jù)處理架構(gòu)Hadoop課后題(5)

大數(shù)據(jù)第三章Hadoop分布式文件系統(tǒng)課后題(10)

大數(shù)據(jù)第四章分布式數(shù)據(jù)庫HBase課后題(16)

大數(shù)據(jù)第五章NoSQl數(shù)據(jù)庫課后題(22)

大數(shù)據(jù)第六章云數(shù)據(jù)庫課后作題(28)

大數(shù)據(jù)第七章MapReduce課后題(34)

大數(shù)據(jù)第八章流計(jì)算課后題(41)

大數(shù)據(jù)第九章圖計(jì)算課后題(50)

大數(shù)據(jù)第十章數(shù)據(jù)可視化課后題(53)

大數(shù)據(jù)第一章課后題

——大數(shù)據(jù)概述

1.試述信息技術(shù)發(fā)展史上的3次信息化浪潮及其具體內(nèi)容。

第一次信息化浪潮1980年前后個(gè)人計(jì)算機(jī)開始普及,計(jì)算機(jī)走入企業(yè)和千家萬戶。代表企業(yè):Intel,AMD,IBM,蘋果,微軟,聯(lián)想,戴爾,惠普等。

第二次信息化浪潮1995年前后進(jìn)入互聯(lián)網(wǎng)時(shí)代。代表企業(yè):雅虎,谷歌阿里巴巴,百度,騰訊。

第三次信息浪潮2010年前后,云計(jì)算大數(shù)據(jù),物聯(lián)網(wǎng)快速發(fā)展,即將涌現(xiàn)一批新的市場(chǎng)標(biāo)桿企業(yè)。

2.試述數(shù)據(jù)產(chǎn)生方式經(jīng)歷的幾個(gè)階段。

經(jīng)歷了三個(gè)階段:

運(yùn)營(yíng)式系統(tǒng)階段數(shù)據(jù)伴隨一定的運(yùn)營(yíng)活動(dòng)而產(chǎn)生并記錄在數(shù)據(jù)庫。

用戶原創(chuàng)內(nèi)容階段Web2.0時(shí)代。

感知式系統(tǒng)階段物聯(lián)網(wǎng)中的設(shè)備每時(shí)每刻自動(dòng)產(chǎn)生大量數(shù)據(jù)。

3.試述大數(shù)據(jù)的4個(gè)基本特征。

數(shù)據(jù)量大(Volume)

據(jù)類型繁多(Variety)

處理速度快(Velocity)

價(jià)值密度低(Value)

4.試述大數(shù)據(jù)時(shí)代的“數(shù)據(jù)爆炸”特性。

大數(shù)據(jù)摩爾定律:人類社會(huì)產(chǎn)生的數(shù)據(jù)一直都在以每年50%的速度增長(zhǎng),即每?jī)赡昃驮黾右槐丁?/p>

5.科學(xué)研究經(jīng)歷了那四個(gè)階段?

實(shí)驗(yàn)比薩斜塔實(shí)驗(yàn)

理論采用各種數(shù)學(xué),幾何,物理等理論,構(gòu)建問題模型和解決方案。例如:牛一,牛二,牛三定律。

計(jì)算設(shè)計(jì)算法并編寫相應(yīng)程序輸入計(jì)算機(jī)運(yùn)行。

數(shù)據(jù)以數(shù)據(jù)為中心,從數(shù)據(jù)中發(fā)現(xiàn)問題解決問題。

6.試述大數(shù)據(jù)對(duì)思維方式的重要影響。

全樣而非抽樣

效率而非精確

相關(guān)而非因果

7.大數(shù)據(jù)決策與傳統(tǒng)的基于數(shù)據(jù)倉庫的決策有什么區(qū)別?

數(shù)據(jù)倉庫以關(guān)系數(shù)據(jù)庫為基礎(chǔ),在數(shù)據(jù)類型和數(shù)據(jù)量方面存在較大限制。

大數(shù)據(jù)決策面向類型繁多的,非結(jié)構(gòu)化的海量數(shù)據(jù)進(jìn)行決策分析。

8.舉例說明大數(shù)據(jù)的具體應(yīng)用。

汽車行業(yè)大數(shù)據(jù)和物聯(lián)網(wǎng)技術(shù)無人汽車

互聯(lián)網(wǎng)行業(yè)分析客戶行為,進(jìn)行商品推介和有針對(duì)性的廣告投放。

城市管理智能交通環(huán)保檢測(cè)城市規(guī)劃和智能安防

生物醫(yī)學(xué)流行病預(yù)測(cè)智慧醫(yī)療健康管理解讀DNA

個(gè)人生活分析個(gè)人生活行為習(xí)慣,提供周到的個(gè)性化服務(wù)

9.舉例說明大數(shù)據(jù)的關(guān)鍵技術(shù)

數(shù)據(jù)采集

數(shù)據(jù)存儲(chǔ)和管理

數(shù)據(jù)處理分析

數(shù)據(jù)安全與隱私保護(hù)

10.大數(shù)據(jù)產(chǎn)業(yè)包含哪些層面?

IT基礎(chǔ)設(shè)施層

數(shù)據(jù)源層

數(shù)據(jù)管理層

數(shù)據(jù)分析層

數(shù)據(jù)平臺(tái)層

數(shù)據(jù)應(yīng)用層

11.定義并解釋一下術(shù)語:云計(jì)算,物聯(lián)網(wǎng)。

云計(jì)算實(shí)現(xiàn)了通過網(wǎng)絡(luò)提供可伸縮的廉價(jià)的分布式計(jì)算力,用戶只需要在具備網(wǎng)絡(luò)接入條件的地方,就可以隨時(shí)隨地獲得所需的各種IT資源。

物聯(lián)網(wǎng):物物相連的互聯(lián)網(wǎng),利用局部網(wǎng)絡(luò)或者互聯(lián)網(wǎng)等通信技術(shù)把傳感器,控制器,機(jī)器,人員和物等通過新的方式連在一起,形成人與物,物與物相連,實(shí)現(xiàn)信息化和遠(yuǎn)程管理控制。

12.詳細(xì)闡述大數(shù)據(jù),云計(jì)算和物聯(lián)網(wǎng)三者之間的區(qū)別和聯(lián)系。

大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)的區(qū)別

大數(shù)據(jù)側(cè)重于海量數(shù)據(jù)的存儲(chǔ)、處理與分析,從海量數(shù)據(jù)中發(fā)現(xiàn)價(jià)值,服務(wù)于生產(chǎn)和生活;云計(jì)算本質(zhì)上旨在整合和優(yōu)化各種IT資源,并通過網(wǎng)絡(luò)以服務(wù)的方式廉價(jià)提供給用戶;

物聯(lián)網(wǎng)的發(fā)展目標(biāo)是實(shí)現(xiàn)物物相連,應(yīng)用創(chuàng)新是物聯(lián)網(wǎng)發(fā)展的核心。

大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)的聯(lián)系

從整體上看,大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)這三者是相輔相成的。大數(shù)據(jù)根植于云計(jì)算,大數(shù)據(jù)分析的很多技術(shù)都來自于云計(jì)算,云計(jì)算的分布式和數(shù)據(jù)存儲(chǔ)和管理系統(tǒng)(包括分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng))提供了海量數(shù)據(jù)的存儲(chǔ)和管理能力,分布式并行處理框架MapReduce提供了海量數(shù)據(jù)分析能力,沒有這些云計(jì)算技術(shù)作為支撐,大數(shù)據(jù)分析就無從談起。反之,大數(shù)據(jù)為云計(jì)算提供了“用武之地”,沒有大數(shù)據(jù)這個(gè)“練兵場(chǎng)”,云計(jì)算技術(shù)再先進(jìn),也不能發(fā)揮它的應(yīng)用價(jià)值。

物聯(lián)網(wǎng)的傳感器源源不斷產(chǎn)生的大量數(shù)據(jù),構(gòu)成了大數(shù)據(jù)的重要來源,沒有物聯(lián)網(wǎng)的飛速發(fā)展,就不會(huì)帶來數(shù)據(jù)產(chǎn)生方式的變革,即由人工產(chǎn)生階段向自動(dòng)產(chǎn)生階段,大數(shù)據(jù)時(shí)代也不會(huì)這么快就到來。同時(shí),物聯(lián)網(wǎng)需要借助于云計(jì)算和大數(shù)據(jù)技術(shù)、實(shí)現(xiàn)物聯(lián)網(wǎng)大數(shù)據(jù)的存儲(chǔ)、分析和處理。

云計(jì)算、大數(shù)據(jù)和物聯(lián)網(wǎng),三者會(huì)繼續(xù)相互促進(jìn)、相互影響,更好地服務(wù)于社會(huì)生產(chǎn)和生活的各個(gè)領(lǐng)域。

大數(shù)據(jù)第二章課后題答案

——大數(shù)據(jù)處理架構(gòu)Hadoop

1.試述Hadoop和谷歌的MapReduce、GFS等技術(shù)之間的關(guān)系。

Hadoop是Apache軟件基金會(huì)旗下的一-個(gè)開源分布式計(jì)算平臺(tái),為用戶提供了系統(tǒng)底層細(xì)節(jié)透明的分布式基礎(chǔ)架構(gòu)。

①Hadoop的核心是分布式文件系統(tǒng)(HadoopDitributedFile

System,HDFS)和MapReduce。

②HDFS是對(duì)谷歌文件系統(tǒng)(GoogleFileSystem,GFS)的開源實(shí)現(xiàn),是面

向普通硬件環(huán)境的分布式文件系統(tǒng),具有較高的讀寫速度、很好的容錯(cuò)

性和可伸縮性,支持大規(guī)模數(shù)據(jù)的分布式存儲(chǔ),其冗余數(shù)據(jù)存儲(chǔ)的方式

很好地保證了數(shù)據(jù)的安全性。

③MapReduce是針對(duì)谷歌MapReduce的開源實(shí)現(xiàn),允許用戶在不了

解分布式系統(tǒng)底層細(xì)節(jié)的情況下開發(fā)并行應(yīng)用程序,采用MapReduce來整合分布式文件系統(tǒng)上的數(shù)據(jù),可保證分析和處理數(shù)據(jù)的高效性。2.試述Hadoop具有哪些特性。

Hadoop是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架,并且是以一種可靠、高效、可伸縮的方式進(jìn)行處理的,它具有以下幾個(gè)方面的特性。

①高可靠性。采用冗余數(shù)據(jù)存儲(chǔ)方式,即使一個(gè)副本發(fā)生故障,其他副本

也可以保證正常對(duì)外提供服務(wù)。

②高效性。作為并行分布式計(jì)算平臺(tái),Hadoop采用分布式存儲(chǔ)和分布式

處理兩大核心技術(shù),能夠高效地處理PB級(jí)數(shù)據(jù)。

③高可擴(kuò)展性。Hadoop的設(shè)計(jì)目標(biāo)是可以高效穩(wěn)定地運(yùn)行在廉價(jià)的計(jì)算

機(jī)集群上,可以擴(kuò)展到數(shù)以千計(jì)的計(jì)算機(jī)節(jié)點(diǎn)。

④高容錯(cuò)性。采用冗余數(shù)據(jù)存儲(chǔ)方式,自動(dòng)保存數(shù)據(jù)的多個(gè)副本,并且能

夠自動(dòng)將失敗的任務(wù)進(jìn)行重新分配。

⑤成本低。Hadoop采用廉價(jià)的計(jì)算機(jī)集群,成本比較低,普通用戶也很

容易用自己的PC搭建Hadoop運(yùn)行環(huán)境。

⑥運(yùn)行在Linux平臺(tái)上。Hadoop是基于Java語言開發(fā)的,可以較好地

運(yùn)行在Linux平臺(tái)上。

⑦支持多種編程語言。Hadoop上的應(yīng)用程序也可以使用其他語言編寫,

如C++。

3.試述Hadoop在各個(gè)領(lǐng)域的應(yīng)用情況。

互聯(lián)網(wǎng)領(lǐng)域是Hadoop應(yīng)用的主要陣地。

①雅虎將Hadoop主要用于支持廣告系統(tǒng)與網(wǎng)頁搜索。

②Facebook主要將Hadoop平臺(tái)用于日志處理、推薦系統(tǒng)和數(shù)據(jù)倉庫等

方面。

③淘寶Hadoop集群服務(wù)于阿里巴巴集團(tuán)各部門,數(shù)據(jù)來源于各部門產(chǎn)品

的線上數(shù)據(jù)庫(Oracle、MySQL)備份、系統(tǒng)日志以及爬蟲數(shù)據(jù),每天在

Hadoop集群運(yùn)行各種MapReduce任務(wù),如數(shù)據(jù)魔方、量子統(tǒng)計(jì)、推

薦系統(tǒng)、排行榜等。

④百度選擇Hadoop主要用于日志的存儲(chǔ)和統(tǒng)計(jì)、網(wǎng)頁數(shù)據(jù)的分析和挖掘、

商業(yè)分析、在線數(shù)據(jù)反饋、網(wǎng)頁聚類等。

4.試述Hadoop的項(xiàng)目結(jié)構(gòu)以及每個(gè)部分的具體功能。

Hadoop項(xiàng)目結(jié)構(gòu)

各部分具體功能:

①Common。Common為Hadoop其他子項(xiàng)目提供支持的常用工具,

主要包括文件系統(tǒng)、RPC(RemoteProcedureCall)和串行化庫。

②Avro。AvroAvro是Hadoop的一一個(gè)子項(xiàng)目,也是Apache中的一

個(gè)獨(dú)立項(xiàng)目。Avro是一個(gè)用于數(shù)據(jù)序列化的系統(tǒng),提供了豐富的數(shù)據(jù)結(jié)構(gòu)類型、快速可壓縮的二進(jìn)制數(shù)據(jù)格式、存儲(chǔ)持久性數(shù)據(jù)的文件集、遠(yuǎn)程調(diào)用(RemoteProcedureCall,RPC)的功能和簡(jiǎn)單的動(dòng)態(tài)語言集成功能。Avro可以將數(shù)據(jù)結(jié)構(gòu)或?qū)ο筠D(zhuǎn)化成便于存儲(chǔ)和傳輸?shù)母袷?,?jié)約數(shù)據(jù)存儲(chǔ)空間和網(wǎng)絡(luò)傳輸帶寬,Hadoop的其他子項(xiàng)目(如HBase和Hive)的客戶端與服務(wù)端之間的數(shù)據(jù)傳輸都采用了Avro。

③HDFS。HDFS是針對(duì)GFS的開源實(shí)現(xiàn)。具有處理強(qiáng)大數(shù)據(jù)、流式處理、

可以運(yùn)行在廉價(jià)的商用服務(wù)器上等優(yōu)點(diǎn)。

④HBase。HBase是針對(duì)谷歌的BigTable的開源實(shí)現(xiàn)。一般采用HDFS作

為其底層數(shù)據(jù)存儲(chǔ),基于列的存儲(chǔ),具有強(qiáng)大的非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)能力。

具有良好的橫向擴(kuò)展能力。

⑤MapReduce。MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集(大

于1TB)的并行運(yùn)算。允許用戶在不了解分布式系統(tǒng)底層細(xì)節(jié)的情況下開發(fā)并行應(yīng)用程序,并將其運(yùn)行于廉價(jià)計(jì)算機(jī)集群上,完成海量數(shù)據(jù)的處理。

⑥Zookeeper。Zookeeper是針對(duì)谷歌Chubby的-一個(gè)開源實(shí)現(xiàn),是高

效和可靠的協(xié)同工作系統(tǒng),提供分布式鎖之類的基本服務(wù)(如統(tǒng)一命名

服務(wù)、狀態(tài)同步服務(wù)、集群管理、分布式應(yīng)用配置項(xiàng)的管理等),用于構(gòu)

建分布式應(yīng)用,減輕分布式應(yīng)用程序所承擔(dān)的協(xié)調(diào)任務(wù)。

⑦Hive。Hive是一個(gè)基于Hadoop的數(shù)據(jù)倉庫工具,可以用于對(duì)Hadoop

文件中的數(shù)據(jù)集進(jìn)行數(shù)據(jù)整理、特殊查詢和分析存儲(chǔ),十分適合數(shù)據(jù)倉

庫的統(tǒng)計(jì)分析。

⑧Pig。Pig是一種數(shù)據(jù)流語言和運(yùn)行環(huán)境,適合于使用Hadoop和

MapReduce平臺(tái)來查詢大型半結(jié)構(gòu)化數(shù)據(jù)集。Pig大大簡(jiǎn)化了

Hadoop常見的工作任務(wù),它在MapReduce的基礎(chǔ)上創(chuàng)建了更簡(jiǎn)單

的過程語言抽象,為Hadoop應(yīng)用程序提供了一種更加接近結(jié)構(gòu)化查詢

語言(SQL)的接口。

⑨Sqoop。Sqoop可以改進(jìn)數(shù)據(jù)的互操作性,主要用來在Hadoop和關(guān)

系數(shù)據(jù)庫之間交換數(shù)據(jù)。通過Sqoop,可以方便地將數(shù)據(jù)從MySQL、

Oracle、PostgreSQL等關(guān)系數(shù)據(jù)庫中導(dǎo)人Hadoop(可以導(dǎo)人HDFS、HBase或Hive),或者將數(shù)據(jù)從Hadoop導(dǎo)出到關(guān)系數(shù)據(jù)庫,使得傳統(tǒng)關(guān)

系數(shù)據(jù)庫和Hadoop之間的數(shù)據(jù)遷移變得非常方便。

⑩Chukwa。Chukwa是一個(gè)開源的、用于監(jiān)控大型分布式系統(tǒng)的數(shù)據(jù)收集系統(tǒng),可以將各種類型的數(shù)據(jù)收集成適合Hadoop處理的文件,并保

存在HDFS中供Hadoop進(jìn)行各種MapReduce操作。

5.路徑JAVA_HOME是在哪一個(gè)配置文件中進(jìn)行設(shè)置的?

在安裝Hadoop的文件夾下的“conf”目錄下配置。

6.所有節(jié)點(diǎn)的HDFS路徑是通過http://./doc/36efc904ac51f01dc281e53a580216fc710a5337.html來設(shè)置的,請(qǐng)問它是在哪個(gè)

配置文件中設(shè)置的?

在安裝目錄下的HDFScore-site.xml配置文件中配置。

http://./doc/36efc904ac51f01dc281e53a580216fc710a5337.html是文件系統(tǒng)的名字。通常是NameNode的hostname與port,需要在每一個(gè)需要訪問集群的機(jī)器上指定,包括集群中的節(jié)點(diǎn)7.試列舉單機(jī)模式和偽分布模式的異同點(diǎn)。

相同點(diǎn):運(yùn)行機(jī)器數(shù)相同。單機(jī)模式與偽分布式都是在一臺(tái)單機(jī)上運(yùn)行。

不同點(diǎn):

①運(yùn)行模式不同:單機(jī)模式是Hadoop的默認(rèn)模式,即在一臺(tái)單機(jī)上運(yùn)行,

沒有分布式文件系統(tǒng),直接讀寫本地操作系統(tǒng)的文件系統(tǒng)。偽分布模式

但用不同的Java進(jìn)程模仿分布式運(yùn)行中的各類結(jié)點(diǎn)。

②啟動(dòng)進(jìn)程不同:?jiǎn)螜C(jī)模式下,Hadoop不會(huì)啟動(dòng)NameNode、

DataNode、JobTracker、TaskTracker等守護(hù)進(jìn)程,Map()和Reduce()任務(wù)作為同一個(gè)進(jìn)程的不同部分來執(zhí)行的。偽分布式模式下,Hadoop

啟動(dòng)NameNode、DataNode、JobTracker、TaskTracker這些守護(hù)

進(jìn)程都在同一臺(tái)機(jī)器上運(yùn)行,是相互獨(dú)立的Java進(jìn)程。

③配置文件處理方式不同:?jiǎn)螜C(jī)模式下,不對(duì)配置文件進(jìn)行修改。偽分布

式模式下,修改3個(gè)配置文件:core-site.xml(Hadoop集群的特性,作用于全部進(jìn)程及客戶端)、hdfs-site.xml(配置HDFS集群的工作屬性)、mapred-site.xml(配置MapReduce集群的屬性)。

④節(jié)點(diǎn)交互不同:?jiǎn)螜C(jī)模式因?yàn)椴恍枰c其他節(jié)點(diǎn)交互,單機(jī)模式就不使

用HDFS,也不加載任何Hadoop的守護(hù)進(jìn)程。該模式主要用于開發(fā)調(diào)

試MapReduce程序的應(yīng)用邏輯。偽分布模式在單機(jī)模式之上增加了代

碼調(diào)試功能,允許你檢查內(nèi)存使用情況,HDFS輸入輸出,以及其他的守

護(hù)進(jìn)程交互。

8.Hadoop偽分布式運(yùn)行啟動(dòng)后所具有的進(jìn)程都有哪些?

Hadoop偽分布式運(yùn)行啟動(dòng)后所具有的進(jìn)程有:NameNode、DataNode、JobTracker、TaskTracker。

9.如果具備集群實(shí)驗(yàn)條件,請(qǐng)嘗試按照Hadoop官方文檔搭建全分布式的

Hadoop集群環(huán)境。

略。

大數(shù)據(jù)第三章課后作業(yè)

——Hadoop分布式文件系統(tǒng)

1.試述分布式文件系統(tǒng)設(shè)計(jì)的需求。

2.分布式文件系統(tǒng)是如何實(shí)現(xiàn)較高水平的擴(kuò)展的?

分布式文件系統(tǒng)把文件分布存儲(chǔ)到多個(gè)計(jì)算機(jī)節(jié)點(diǎn)上,成千上萬的計(jì)算機(jī)節(jié)點(diǎn)構(gòu)成計(jì)算機(jī)集群。

3.試述HDFS中的塊和普通文件系統(tǒng)中的塊的區(qū)別。

HDFS中的塊比普通文件系統(tǒng)中的塊大很多。且在HDFS中如果一個(gè)文件小于數(shù)據(jù)塊的大小,它并不占用整個(gè)數(shù)據(jù)存儲(chǔ)塊的空間。

4.試述HDFS中的名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)的具體功能。

名稱節(jié)點(diǎn):負(fù)責(zé)文件和目錄的創(chuàng)建刪除和重命名等,管理數(shù)據(jù)節(jié)點(diǎn)和文件塊的映射關(guān)系。

數(shù)據(jù)節(jié)點(diǎn):負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和讀取。

5.在分布式文件系統(tǒng)中,中心節(jié)點(diǎn)的設(shè)計(jì)至關(guān)重要,請(qǐng)闡述HDFS是如何減輕

中心節(jié)點(diǎn)的負(fù)擔(dān)的。

名稱節(jié)點(diǎn)不參與數(shù)據(jù)的傳輸。

6.HDFS只設(shè)置唯一一個(gè)名稱節(jié)點(diǎn),在簡(jiǎn)化系統(tǒng)的同時(shí)也帶來了一些明顯的局

限性,請(qǐng)闡述局限性具體表現(xiàn)在哪些方面。

1)命名空間的限制:

名稱節(jié)點(diǎn)是保存在內(nèi)存中,因此名稱節(jié)點(diǎn)能夠容納對(duì)象(文件,塊)的個(gè)數(shù)受到內(nèi)存空間大小的限制

2)性能的瓶頸

整個(gè)分布式文件系統(tǒng)的吞吐量受限于單個(gè)名稱節(jié)點(diǎn)的吞吐量

3)隔離問題

由于集群中只有一個(gè)名稱節(jié)點(diǎn),只有一個(gè)命名空間,因此無法為不同應(yīng)用程序進(jìn)行隔離

4)集群的可用性

一旦唯一的名稱節(jié)點(diǎn)發(fā)生故障,會(huì)導(dǎo)致整個(gè)集群不可用

7.試述HDFS的冗余數(shù)據(jù)保存策略。

HDFS采用多副本方式對(duì)數(shù)據(jù)進(jìn)行冗余存儲(chǔ),通常一個(gè)數(shù)據(jù)塊的多個(gè)副本會(huì)被分不到不同的數(shù)據(jù)節(jié)點(diǎn)上。

8.數(shù)據(jù)復(fù)制主要是在數(shù)據(jù)寫入和數(shù)據(jù)恢復(fù)的時(shí)候發(fā)生,HDFS數(shù)據(jù)復(fù)制是使用

流水線復(fù)制的策略,請(qǐng)闡述該策略的細(xì)節(jié)。

這個(gè)文件首先被寫入本地,被切分成若干個(gè)塊,每個(gè)塊向HDFS集群中名稱節(jié)點(diǎn)發(fā)起寫請(qǐng)求,名稱節(jié)點(diǎn)會(huì)將各個(gè)數(shù)據(jù)節(jié)點(diǎn)的使用情況,選擇一個(gè)數(shù)據(jù)節(jié)點(diǎn)列表返回給客戶端,當(dāng)?shù)谝粋€(gè)數(shù)據(jù)節(jié)點(diǎn)接收塊的時(shí)候,寫入本地,并且向第二數(shù)據(jù)節(jié)點(diǎn)發(fā)起連接請(qǐng)求,把自己的接收的塊傳給第二個(gè)數(shù)據(jù)節(jié)點(diǎn),依次類推,列表中的對(duì)個(gè)數(shù)據(jù)節(jié)點(diǎn)形成一條數(shù)據(jù)復(fù)制的流水線。最后數(shù)據(jù)寫完后,數(shù)據(jù)復(fù)制同時(shí)完成。

9.試述HDFS是如何探測(cè)錯(cuò)誤發(fā)生以及如何進(jìn)行恢復(fù)的。

(1)名稱節(jié)點(diǎn)出錯(cuò):

1)把名稱節(jié)點(diǎn)的元數(shù)據(jù)信息同步存儲(chǔ)到其他文件系統(tǒng);

2)可以把第二名稱節(jié)點(diǎn)作為不就措施

一般會(huì)把兩者結(jié)合使用,其他文件系統(tǒng)的元數(shù)據(jù)信息放到第二名稱節(jié)點(diǎn)進(jìn)行恢復(fù),并把第二名稱節(jié)點(diǎn)作為名稱節(jié)點(diǎn)使用(這樣做仍然會(huì)有一部分?jǐn)?shù)據(jù)丟失)

(2)數(shù)據(jù)節(jié)點(diǎn)出錯(cuò):

數(shù)據(jù)節(jié)點(diǎn)定期向名稱節(jié)點(diǎn)發(fā)送心跳信息,向名稱節(jié)點(diǎn)報(bào)告狀態(tài),如果名稱節(jié)點(diǎn)沒有收到某些數(shù)據(jù)節(jié)點(diǎn)時(shí),這時(shí)名稱節(jié)點(diǎn)將這些數(shù)據(jù)節(jié)點(diǎn)標(biāo)記為宕機(jī),由于這些數(shù)據(jù)節(jié)點(diǎn)不可用導(dǎo)致一些數(shù)據(jù)塊的副本數(shù)據(jù)量小于冗余因子時(shí),就會(huì)啟動(dòng)數(shù)據(jù)冗余復(fù)制,生成新的副本

(3)數(shù)據(jù)出錯(cuò):

網(wǎng)絡(luò)傳輸和磁盤錯(cuò)誤等因數(shù)都會(huì)造成數(shù)據(jù)的錯(cuò)誤,客戶端讀取數(shù)據(jù)后,會(huì)采用md5對(duì)數(shù)據(jù)塊進(jìn)行校驗(yàn),以正確讀取到正確的數(shù)據(jù)。如果校驗(yàn)出錯(cuò),客戶端就會(huì)請(qǐng)求到另外一個(gè)數(shù)據(jù)節(jié)點(diǎn)讀取該文件塊,并向名稱節(jié)點(diǎn)報(bào)告這個(gè)文件錯(cuò)誤,名稱節(jié)點(diǎn)會(huì)定期檢查并重新復(fù)制這個(gè)塊

10.請(qǐng)闡述HDFS在不發(fā)生故障的情況下讀文件的過程。

1)使用HDFS提供供的客戶端Client,向遠(yuǎn)程的Namenode發(fā)起RPC請(qǐng)求;

2)Namenode會(huì)視情況返回文件的部分或者全部block列表,對(duì)于每個(gè)block,Namenode都會(huì)返回有該block拷貝的DataNode地址;

3)客戶端Client會(huì)選取離客戶端最近的DataNode來讀取block;如果客戶端本身就是DataNode,那么將從本地直接獲取數(shù)據(jù);

4)讀取完當(dāng)前block的數(shù)據(jù)后,關(guān)閉當(dāng)前的DataNode鏈接,并為讀取下一個(gè)block尋找最佳的DataNode;

5)當(dāng)讀完列表block后,且文件讀取還沒有結(jié)束,客戶端會(huì)繼續(xù)向Namenode獲取下一批的block列表;

6)讀取完一個(gè)block都會(huì)進(jìn)行checksum驗(yàn)證,如果讀取datanode時(shí)出現(xiàn)錯(cuò)誤,客戶端會(huì)通知Namenode,然后再從下一個(gè)擁有該block拷貝的datanode繼續(xù)讀。

11.請(qǐng)闡述HDFS在不發(fā)生故障的情況下寫文件的過程。

1)使用HDFS提供的客戶端Client,向遠(yuǎn)程的Namenode發(fā)起RPC請(qǐng)求

2)Namenode會(huì)檢查要?jiǎng)?chuàng)建的文件是否已經(jīng)存在,創(chuàng)建者是否有權(quán)限進(jìn)行操作,成功則會(huì)為文件創(chuàng)建一個(gè)記錄,否則會(huì)讓客戶端拋出異常;

3)當(dāng)客戶端開始寫入文件的時(shí)候,客戶端會(huì)將文件切分成多個(gè)packets,并在內(nèi)部以數(shù)據(jù)隊(duì)列“dataqueue(數(shù)據(jù)隊(duì)列)”的形式管理這些packets,并向Namenode申請(qǐng)blocks,獲取用來存儲(chǔ)replicas的合適的datanode列表,列表的大小根據(jù)Namenode中replication的設(shè)定而定;

4)開始以pipeline(管道)的形式將packet寫入所有的replicas中。開發(fā)庫把packet以流的方式寫入第一個(gè)datanode,該datanode把該packet存儲(chǔ)之后,再將其傳遞給在此pipeline中的下一個(gè)datanode,直到最后一個(gè)datanode,這種寫數(shù)據(jù)的方式呈流水線的形式。

5)最后一個(gè)datanode成功存儲(chǔ)之后會(huì)返回一個(gè)ackpacket(確認(rèn)隊(duì)列),在pipeline里傳遞至客戶端,在客戶端的開發(fā)庫內(nèi)部維護(hù)著”

ackqueue”,成功收到datanode返回的ackpacket后會(huì)從”ackqueue”移除相應(yīng)的packet。

6)如果傳輸過程中,有某個(gè)datanode出現(xiàn)了故障,那么當(dāng)前的pipeline會(huì)被關(guān)閉,出現(xiàn)故障的datanode會(huì)從當(dāng)前的pipeline中移除,剩余的block會(huì)繼續(xù)剩下的datanode中繼續(xù)以pipeline的形式傳輸,同時(shí)Namenode會(huì)分配一個(gè)新的datanode,保持replicas設(shè)定的數(shù)量。

7)客戶端完成數(shù)據(jù)的寫入后,會(huì)對(duì)數(shù)據(jù)流調(diào)用close()方法,關(guān)閉數(shù)據(jù)流;

8)只要寫入了dfs.replication.min的復(fù)本數(shù)(默認(rèn)為1),寫操作就會(huì)成功,并且這個(gè)塊可以在集群中異步復(fù)制,直到達(dá)到其目標(biāo)復(fù)本數(shù)(dfs.replication的默認(rèn)值為3),因?yàn)閚amenode已經(jīng)知道文件由哪些塊組成,所以它在返回成功前只需要等待數(shù)據(jù)塊進(jìn)行最小量的復(fù)制。

大數(shù)據(jù)技術(shù)原理與應(yīng)用第四章課后作業(yè)

——分布式數(shù)據(jù)庫HBase1.試述在Hadoop體系架構(gòu)中HBase與其他組成部分的相互關(guān)系。

HBase利用HadoopMapReduce來處理HBase中的海量數(shù)據(jù),實(shí)現(xiàn)高性能計(jì)算;利用Zookeeper作為協(xié)同服務(wù),實(shí)現(xiàn)穩(wěn)定服務(wù)和失敗恢復(fù);使用HDFS作為高可靠的底層存儲(chǔ),利用廉價(jià)集群提供海量數(shù)據(jù)存儲(chǔ)能力;Sqoop為HBase的底層數(shù)據(jù)導(dǎo)入功能,Pig和Hive為HBase提供了高層語言支持,HBase是BigTable的開源實(shí)現(xiàn)。

2.請(qǐng)闡述HBase和BigTable的底層技術(shù)的對(duì)應(yīng)關(guān)系。

3.請(qǐng)闡述HBase和傳統(tǒng)關(guān)系數(shù)據(jù)庫的區(qū)別。

主要體現(xiàn)在6個(gè)方面。

4.HBase有哪些類型的訪問接口?

HBase提供了NativeJavaAPI,HBaseShell,ThriftGateway,RESTGateWay,Pig,Hive等訪問接口。

5.請(qǐng)以實(shí)例說明HBase數(shù)據(jù)模型。

6.分別解釋HBase中行鍵、列鍵和時(shí)間戳的概念。

①行鍵標(biāo)識(shí)行。行鍵可以是任意字符串,行鍵保存為字節(jié)數(shù)組。

②列族。HBase的基本的訪問控制單元,需在表創(chuàng)建時(shí)就定義好。

③時(shí)間戳。每個(gè)單元格都保存著同一份數(shù)據(jù)的多個(gè)版本,這些版本采用時(shí)

間戳進(jìn)行索引。

7.請(qǐng)舉個(gè)實(shí)例來闡述HBase的概念視圖和物理視圖的不同。

數(shù)據(jù)概念試圖

數(shù)據(jù)物理視圖

8.試述HBase各功能組件及其作用。

①庫函數(shù):鏈接到每個(gè)客戶端;

②一個(gè)Master主服務(wù)器:主服務(wù)器Master主要負(fù)責(zé)表和Region的管理

工作;

③③許多個(gè)Region服務(wù)器:Region服務(wù)器是HBase中最核心的模塊,

負(fù)責(zé)存儲(chǔ)和維護(hù)分配給自己的Region,并響應(yīng)用戶的讀寫請(qǐng)求

9.請(qǐng)闡述HBase的數(shù)據(jù)分區(qū)機(jī)制。

每個(gè)行區(qū)間構(gòu)成一個(gè)分區(qū),被稱為“Region”,分發(fā)到不同的Region服務(wù)器上。

10.HBase中的分區(qū)是如何定位的?

通過構(gòu)建的映射表的每個(gè)條目包含兩項(xiàng)內(nèi)容,一個(gè)是Regionde標(biāo)識(shí)符,另一個(gè)是Region服務(wù)器標(biāo)識(shí),這個(gè)條目就標(biāo)識(shí)Region和Region服務(wù)器之間的對(duì)應(yīng)關(guān)系,從而就可以知道某個(gè)Region被保存在哪個(gè)Region服務(wù)器中。11.試述HBase的三層結(jié)構(gòu)中各層次的名稱和作用。

12.請(qǐng)闡述HBase的三層結(jié)構(gòu)下,客戶端是如何訪問到數(shù)據(jù)的。

首先訪問Zookeeper,獲取-ROOT表的位置信息,然后訪問-Root-表,獲得.MATA.表的信息,接著訪問.MATA.表,找到所需的Region具體位于哪個(gè)Region服務(wù)器,最后才會(huì)到該Region服務(wù)器讀取數(shù)據(jù)。

13.試述HBase系統(tǒng)基本架構(gòu)以及每個(gè)組成部分的作用。

(1)客戶端

客戶端包含訪問HBase的接口,同時(shí)在緩存中維護(hù)著已經(jīng)訪問過的Region位

置信息,用來加快后續(xù)數(shù)據(jù)訪問過程

(2)Zookeeper服務(wù)器

Zookeeper可以幫助選舉出一個(gè)Master作為集群的總管,并保證在任何時(shí)刻總有唯一一個(gè)Master在運(yùn)行,這就避免了Master的“單點(diǎn)失效”問題

(3)Master

主服務(wù)器Master主要負(fù)責(zé)表和Region的管理工作:管理用戶對(duì)表的增加、刪除、修改、查詢等操作;實(shí)現(xiàn)不同Region服務(wù)器之間的負(fù)載均衡;在Region分裂或合并后,負(fù)責(zé)重新調(diào)整Region的分布;對(duì)發(fā)生故障失效的Region服務(wù)器上的Region進(jìn)行遷移

(4)Region服務(wù)器

Region服務(wù)器是HBase中最核心的模塊,負(fù)責(zé)維護(hù)分配給自己的Region,并響應(yīng)用戶的讀寫請(qǐng)求

14.請(qǐng)闡述Region服務(wù)器向HDFS文件系統(tǒng)中讀寫數(shù)據(jù)的基本原理。

Region服務(wù)器內(nèi)部管理一系列Region對(duì)象和一個(gè)HLog文件,其中,HLog是磁盤上面的記錄文件,它記錄著所有的更新操作。每個(gè)Region對(duì)象又是由多個(gè)Store組成的,每個(gè)Store對(duì)象了表中的一個(gè)列族的存儲(chǔ)。每個(gè)Store又包含了MemStore和若干個(gè)StoreFile,其中,MemStore是在內(nèi)存中的緩存。15.試述HStore的工作原理。

每個(gè)Store對(duì)應(yīng)了表中的一個(gè)列族的存儲(chǔ)。每個(gè)Store包括一個(gè)MenStore緩存和若干個(gè)StoreFile文件。MenStore是排序的內(nèi)存緩沖區(qū),當(dāng)用戶寫入數(shù)據(jù)時(shí),系統(tǒng)首先把數(shù)據(jù)放入MenStore緩存,當(dāng)MemStore緩存滿時(shí),就會(huì)刷新到磁盤中的一個(gè)StoreFile文件中,當(dāng)單個(gè)StoreFile文件大小超過一定閾值時(shí),

就會(huì)觸發(fā)文件分裂操作。

16.試述HLog的工作原理。

HBase系統(tǒng)為每個(gè)Region服務(wù)器配置了一個(gè)HLog文件,它是一種預(yù)寫式日志(WriteAheadLog),用戶更新數(shù)據(jù)必須首先寫入日志后,才能寫入MemStore緩存,并且,直到MemStore緩存內(nèi)容對(duì)應(yīng)的日志已經(jīng)寫入磁盤,該緩存內(nèi)容才能被刷寫到磁盤。

17.在HBase中,每個(gè)Region服務(wù)器維護(hù)一個(gè)HLog,而不是為每個(gè)Region

都單獨(dú)維護(hù)一個(gè)HLog。請(qǐng)說明這種做法的優(yōu)點(diǎn)和缺點(diǎn)。

優(yōu)點(diǎn):多個(gè)Region對(duì)象的更新操作所發(fā)生的日志修改,只需要不斷把日志記錄追加到單個(gè)日志文件中,不需要同時(shí)打開、寫入到多個(gè)日志文件中。

缺點(diǎn):如果一個(gè)Region服務(wù)器發(fā)生故障,為了恢復(fù)其上次的Region對(duì)象,需要將Region服務(wù)器上的對(duì)象,需要將Region服務(wù)器上的HLog按照其所屬的Region對(duì)象進(jìn)行拆分,然后分發(fā)到其他Region服務(wù)器上執(zhí)行恢復(fù)操作。18.當(dāng)一臺(tái)Region服務(wù)器意外終止時(shí),Master如何發(fā)現(xiàn)這種意外終止情況?為

了恢復(fù)這臺(tái)發(fā)生意外的Region服務(wù)器上的Region,Master應(yīng)該做出那些處理(包括如何使用HLog進(jìn)行恢復(fù))?

Zookeeper會(huì)實(shí)時(shí)監(jiān)測(cè)每個(gè)Region服務(wù)器的狀態(tài),當(dāng)某個(gè)Region服務(wù)器發(fā)生故障時(shí),Zookeeper會(huì)通知Master。

Master首先會(huì)處理該故障Region服務(wù)器上面遺留的HLog文件,這個(gè)遺留的HLog文件中包含了來自多個(gè)Region對(duì)象的日志記錄。

系統(tǒng)會(huì)根據(jù)每條日志記錄所屬的Region對(duì)象對(duì)HLog數(shù)據(jù)進(jìn)行拆分,分別放到相應(yīng)Region對(duì)象的目錄下,然后,再將失效的Region重新分配到可用的

Region服務(wù)器中,并把與該Region對(duì)象相關(guān)的HLog日志記錄也發(fā)送給相應(yīng)的Region服務(wù)器。

Region服務(wù)器領(lǐng)取到分配給自己的Region對(duì)象以及與之相關(guān)的HLog日志記錄以后,會(huì)重新做一遍日志記錄中的各種操作,把日志記錄中的數(shù)據(jù)寫入到MemStore緩存中,然后,刷新到磁盤的StoreFile文件中,完成數(shù)據(jù)恢復(fù)。

大數(shù)據(jù)技術(shù)與原理第五章課后作業(yè)

——NoSQl數(shù)據(jù)庫1.如何準(zhǔn)確理解NoSQL的含義?

NoSQL是一種不同于關(guān)系數(shù)據(jù)庫的數(shù)據(jù)庫管理系統(tǒng)設(shè)計(jì)方式,是對(duì)非關(guān)系型數(shù)據(jù)庫的一類統(tǒng)稱,它采用的數(shù)據(jù)模型并非傳統(tǒng)關(guān)系數(shù)據(jù)庫的關(guān)系模型,而是類似鍵/值、列族、文檔等非關(guān)系模型。

2.試述關(guān)系數(shù)據(jù)庫在哪些方面無法滿足Web2.0應(yīng)用的需求。

主要表現(xiàn)在以下幾個(gè)方面:

(1)無法滿足海量數(shù)據(jù)的管理需求

(2)無法滿足數(shù)據(jù)高并發(fā)的需求

(3)無法滿足高可擴(kuò)展性和高可用性的需求

3.為什么說關(guān)系數(shù)據(jù)庫的一些關(guān)鍵特性在Web2.0時(shí)代成為“雞

肋”?

(1)Web2.0網(wǎng)站系統(tǒng)通常不要求嚴(yán)格的數(shù)據(jù)庫事務(wù)

(2)Web2.0不要求嚴(yán)格的讀寫實(shí)時(shí)性

(3)Web2.0通常不包含大量復(fù)雜的SQL查詢

4.請(qǐng)比較NoSQL數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫的優(yōu)缺點(diǎn)。

①關(guān)系數(shù)據(jù)庫。

優(yōu)點(diǎn):以完善得關(guān)系理論代數(shù)作為基礎(chǔ),有嚴(yán)格得標(biāo)準(zhǔn),支持事務(wù)ACID四性,高校查詢,技術(shù)成熟,專業(yè)公司得技術(shù)支持;

缺點(diǎn):可擴(kuò)展性較差、無法較好支持海量數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)模型過于死板、無法較好支持Web2.0應(yīng)用、事務(wù)機(jī)制影響系統(tǒng)整體性能。

②NoSQL數(shù)據(jù)庫。

優(yōu)點(diǎn):支持超大規(guī)模數(shù)據(jù)存儲(chǔ)數(shù)據(jù)模型靈活支持Web2.0,具有強(qiáng)大得橫向擴(kuò)展能力

缺點(diǎn):缺乏數(shù)學(xué)理論基礎(chǔ),復(fù)雜查詢性能不高。不能實(shí)現(xiàn)事務(wù)強(qiáng)一致性,很難實(shí)現(xiàn)數(shù)據(jù)完整性,技術(shù)尚不成熟,缺乏專業(yè)的技術(shù)支持,維護(hù)較困難。

5.試述NoSQL數(shù)據(jù)庫的四大類型。

答:鍵值數(shù)據(jù)庫、列族數(shù)據(jù)庫、文檔數(shù)據(jù)庫和圖數(shù)據(jù)庫

6.試述鍵值數(shù)據(jù)庫、列族數(shù)據(jù)庫、文檔數(shù)據(jù)庫和圖形數(shù)據(jù)庫的適用

場(chǎng)合和優(yōu)缺點(diǎn)。

7.試述CAP理論的具體含義。

C(Consistency):一致性,是指任何一個(gè)讀操作總是能夠讀到之前完成的寫操作的結(jié)果,也就是在分布式環(huán)境中,多點(diǎn)的數(shù)據(jù)是一致的,或者說,所有節(jié)點(diǎn)在同一時(shí)間具有相同的數(shù)據(jù)

A:(Availability):可用性,是指快速獲取數(shù)據(jù),可以在確定的時(shí)間內(nèi)返

回操作結(jié)果,保證每個(gè)請(qǐng)求不管成功或者失敗都有響應(yīng);

P(ToleranceofNetworkPartition):分區(qū)容忍性,是指當(dāng)出現(xiàn)網(wǎng)絡(luò)分區(qū)的情況時(shí)(即系統(tǒng)中的一部分節(jié)點(diǎn)無法和其他節(jié)點(diǎn)進(jìn)行通信),分離的系統(tǒng)也能夠正常運(yùn)行,也就是說,系統(tǒng)中任意信息的丟失或失敗不會(huì)影響系統(tǒng)的繼續(xù)運(yùn)作。

8.請(qǐng)舉例說明不同產(chǎn)品在設(shè)計(jì)時(shí)是如何運(yùn)用CAP理論的。

①CA。強(qiáng)調(diào)一致性(C)和可用性(A),放棄分區(qū)容忍性(P),最簡(jiǎn)單的做法是把

所有與事務(wù)相關(guān)的內(nèi)容都放到同一臺(tái)機(jī)器上。這種做法會(huì)嚴(yán)重影響系統(tǒng)的可擴(kuò)展性。例如傳統(tǒng)的關(guān)系數(shù)據(jù)庫(MySQL、SQLServer和PostgreSQL)。

②CP。強(qiáng)調(diào)一致性(C)和分區(qū)容忍性(P),放棄可用性(A),當(dāng)出現(xiàn)網(wǎng)絡(luò)分區(qū)的

情況時(shí),受影響的服務(wù)需要等待數(shù)據(jù)一致,因此在等待期間就無法對(duì)外提供服務(wù)。例如Neo4J、BigTable和HBase等NoSQL數(shù)據(jù)庫。

③AP。強(qiáng)調(diào)可用性(A)和分區(qū)容忍性(P),放棄-致性(C),允許系統(tǒng)返回不一

致的數(shù)據(jù)。這對(duì)于許多Web2.0網(wǎng)站而言是可行的,這些網(wǎng)站的用戶首先關(guān)注的是網(wǎng)站服務(wù)是否可用,當(dāng)用戶需要發(fā)布一條微博時(shí),必須能夠立即發(fā)布,否則,用戶就會(huì)放棄使用,但是,這條微博發(fā)布后什么時(shí)候能夠被其他用戶讀取到,則不是非常重要的問題,不會(huì)影響到用戶體驗(yàn)。

因此,對(duì)于Web2.0網(wǎng)站而言,可用性與分區(qū)容忍性優(yōu)先級(jí)要高于數(shù)據(jù)-致性,網(wǎng)站一般會(huì)盡量朝著AP的方向設(shè)計(jì)。當(dāng)然,在采用AP設(shè)計(jì)時(shí),也可以不完全放棄一致性,轉(zhuǎn)而采用最終一致性。例如Dynamo、Riak、CouchDB、Cassandra等NoSQL數(shù)據(jù)庫。

9.試述數(shù)據(jù)庫的ACID四性的含義。

①原子性(Atomicity)

指事務(wù)必須是原子工作單元,對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。

②一致性(consistency)

指事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致狀態(tài)。

③隔離性(Isolation)

指并發(fā)事務(wù)所做的修改必須與其他并發(fā)事務(wù)所做的修改隔離。

④持久性(Durability)

指事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的,該修改即使出現(xiàn)致命的系統(tǒng)故障也將一直保持。

10.試述BASE的具體含義。

BASE的基本含義是基本可用(BasicallyAvailble)、軟狀態(tài)(Soft-state)和最終一致性(Eventualconsistency)

11.請(qǐng)解釋軟狀態(tài)、無狀態(tài)、硬狀態(tài)的具體含義。

答:“軟狀態(tài)(soft-state)”是與“硬狀態(tài)(hard-state)”相對(duì)應(yīng)的一種提法。

數(shù)據(jù)庫保存的數(shù)據(jù)是“硬狀態(tài)”時(shí),可以保證數(shù)據(jù)一致性,即保證數(shù)據(jù)一直是正確的。“軟狀態(tài)”是指狀態(tài)可以有一段時(shí)間不同步,具有一定的滯后性。

12.什么是最終一致性?

最終一致性根據(jù)更新數(shù)據(jù)后各進(jìn)程訪問到數(shù)據(jù)的時(shí)間和方式的不同,又可以區(qū)分為:

①會(huì)話一致性:它把訪問存儲(chǔ)系統(tǒng)的進(jìn)程放到會(huì)話(session)的上下文

中,只要會(huì)話還存在,系統(tǒng)就保證“讀己之所寫”一致性。如果由于某些失敗情形令會(huì)話終止,就要建立新的會(huì)話,而且系統(tǒng)保證不會(huì)延續(xù)到新的會(huì)話;

②單調(diào)寫一致性:系統(tǒng)保證來自同一個(gè)進(jìn)程的寫操作順序執(zhí)行。系統(tǒng)必

須保證這種程度的一致性,否則就非常難以編程了

③單調(diào)讀一致性:如果進(jìn)程已經(jīng)看到過數(shù)據(jù)對(duì)象的某個(gè)值,那么任何后

續(xù)訪問都不會(huì)返回在那個(gè)值之前的值

④因果一致性:如果進(jìn)程A通知進(jìn)程B它已更新了一個(gè)數(shù)據(jù)項(xiàng),那么進(jìn)

程B的后續(xù)訪問將獲得A寫入的最新值。而與進(jìn)程A無因果關(guān)系的進(jìn)程C的訪問,仍然遵守一般的最終一致性規(guī)則

⑤“讀己之所寫”一致性:可以視為因果一致性的一個(gè)特例。當(dāng)進(jìn)程A

自己執(zhí)行一個(gè)更新操作之后,它自己總是可以訪問到更新過的值,絕不會(huì)看到舊值。

13.試述不一致性窗口的含義。

所有后續(xù)的訪問都可以讀取到操作OP寫入的最新值。從OP操作完成到后續(xù)訪問可以最終讀取到OP寫入的最新值,這之間的時(shí)間間隔稱為“不一致性窗口”。

14.最終一致性根據(jù)更新數(shù)據(jù)后各進(jìn)程訪問到數(shù)據(jù)的時(shí)間和方式的不

同,又可以分為哪些不同類型的一致性?

會(huì)話一致性、單調(diào)寫一致性、單調(diào)寫一致性、因果一致性和“讀己之所寫”

一致性。

15.什么是NewSQL數(shù)據(jù)庫?

NewSQL是對(duì)各種新的可擴(kuò)展、高性能數(shù)據(jù)庫的簡(jiǎn)稱,這類數(shù)據(jù)庫不僅具有

NoSQL對(duì)海量數(shù)據(jù)的存儲(chǔ)管理能力,還保持了傳統(tǒng)數(shù)據(jù)庫支持ACID和SQL特性。

16.試述NewSQL數(shù)據(jù)庫與傳統(tǒng)的關(guān)系數(shù)據(jù)庫以及NoSQL數(shù)據(jù)庫的

區(qū)別。

NewSQL數(shù)據(jù)庫不經(jīng)具有NoSQL對(duì)海量數(shù)據(jù)的存儲(chǔ)管理能力,還保持了傳統(tǒng)數(shù)據(jù)庫支持ACID和SQL特性。

大數(shù)據(jù)技術(shù)與原理第六章課后作業(yè)

——云數(shù)據(jù)庫

1.試述云數(shù)據(jù)庫的概念。

云數(shù)據(jù)庫是部署和虛擬化在云計(jì)算環(huán)境中的數(shù)據(jù)庫。云數(shù)據(jù)庫是在云計(jì)算的大背景下發(fā)展起來的一種新興的共享基礎(chǔ)架構(gòu)的方法,它極大地增強(qiáng)了數(shù)據(jù)庫的存儲(chǔ)能力,消除了人員、硬件、軟件的重復(fù)配置,讓軟、硬件升級(jí)變得更加容易,同時(shí),也虛擬化了許多后端功能。云數(shù)據(jù)庫具有高可擴(kuò)展性、高可用性、采用多租形式和支持資源有效分發(fā)等特點(diǎn)。

2.與傳統(tǒng)的軟件使用方式相比,云計(jì)算這種模式具有哪些明顯的優(yōu)勢(shì)?

①可直接購買云計(jì)算廠商的軟件服務(wù);

②軟件運(yùn)行在云計(jì)算廠商服務(wù)器上,用戶再有網(wǎng)絡(luò)的地方就可以使用軟件服務(wù)。

③零成本投入,按需付費(fèi),極其廉價(jià);

④維護(hù)零成本,由云計(jì)算廠商負(fù)責(zé);

⑤獲得IT資源的速度:隨時(shí)可用,購買服務(wù)后立即可用;

⑥資源可拓展。等

3.云數(shù)據(jù)庫有哪些特性?

①動(dòng)態(tài)可擴(kuò)展

②高可用性

③較低的使用代價(jià)

④易用性

⑤高性能

⑥免維護(hù)

⑦安全

4.試述云數(shù)據(jù)庫的影響。

①云數(shù)據(jù)庫可以滿足大企業(yè)的海量數(shù)據(jù)存儲(chǔ)需求。

②云數(shù)據(jù)庫可以滿足中小企業(yè)的低成本數(shù)據(jù)存儲(chǔ)需求。

③云數(shù)據(jù)庫可以滿足企業(yè)動(dòng)態(tài)變化的數(shù)據(jù)存儲(chǔ)需求。

5.舉例說明云數(shù)據(jù)庫廠商及其代表性產(chǎn)品。

云數(shù)據(jù)庫供應(yīng)商主要分為三類。

①傳統(tǒng)的數(shù)據(jù)庫廠商,如Teradata、Oracle、IBMDB2和MicrosoftSQLServer等。

②涉足數(shù)據(jù)庫市場(chǎng)的云供應(yīng)商,如Amazon、Google.Yahoo!、阿里、百度、騰訊等。

③新興廠商,如IVertica.LongJump和EnterpriseDB等。

6.試述MicrosoftSQLAzure的體系架構(gòu)。

如下圖所示,SQLAzure的體系架構(gòu)中包含了一個(gè)虛擬機(jī)簇,可以根據(jù)工作負(fù)載的變化,動(dòng)態(tài)增加或減少虛擬機(jī)的數(shù)量。每臺(tái)虛擬機(jī)SQLServerVM(VirtualMachine)安裝了SQLServer2008數(shù)據(jù)庫管理系統(tǒng),以關(guān)系模型存儲(chǔ)數(shù)據(jù)。通常,-一個(gè)數(shù)據(jù)庫會(huì)被分散存儲(chǔ)到3~5臺(tái)SQLServerVM中。每臺(tái)SQLServerVM同時(shí)安裝了SQLAzureFabric和SQLAzure管理服務(wù),后者負(fù)責(zé)數(shù)庫的數(shù)據(jù)復(fù)寫工作,以保障SQLAzure的基本高可用性要求。不同SQLServerVM內(nèi)的SQLAzureFabric和管理服務(wù)之間會(huì)彼此交換監(jiān)控信息,以保證整體

服務(wù)的可監(jiān)控性。

7.試述UMP系統(tǒng)的功能。

UMP系統(tǒng)是構(gòu)建在一個(gè)大的集群之上的,通過多個(gè)組件的協(xié)同作業(yè),整個(gè)系統(tǒng)實(shí)現(xiàn)了對(duì)用戶透明的容災(zāi)、讀寫分離、分庫分表、資源管理、資源調(diào)度、資源隔離和數(shù)據(jù)安全功能。

1.容災(zāi)

云數(shù)據(jù)庫必須向用戶提供一直可用的數(shù)據(jù)庫連接,當(dāng)MySQL實(shí)例發(fā)生故障時(shí),系統(tǒng)必須自動(dòng)執(zhí)行故障恢復(fù),所有故障處理過程對(duì)于用戶而言是透明的,用戶不會(huì)感知到后臺(tái)發(fā)生的一切。為了實(shí)現(xiàn)容災(zāi),UMP系統(tǒng)會(huì)為每個(gè)用戶創(chuàng)建兩個(gè)MySQL實(shí)例,一個(gè)是主庫,一個(gè)是從庫,而且,這兩個(gè)MySQL實(shí)例之間互相把對(duì)方設(shè)置為備份機(jī),任意一個(gè)MySQL實(shí)例上面發(fā)生的更新都會(huì)復(fù)制到對(duì)方。同時(shí),Proxy服務(wù)器可以保證只向主庫寫人數(shù)據(jù)。

2.讀寫分離

由于每個(gè)用戶都有兩個(gè)MySQL實(shí)例,即主庫和從庫,因此,可以充分利用主從庫實(shí)現(xiàn)用戶讀寫操作的分離,實(shí)現(xiàn)負(fù)載均衡。UMP系統(tǒng)實(shí)現(xiàn)了對(duì)于用戶透明的讀寫分離功能,當(dāng)整個(gè)功能被開啟時(shí),負(fù)責(zé)向用戶提供訪問MySQL數(shù)據(jù)庫服務(wù)的Proxy服務(wù)器,就會(huì)對(duì)用戶發(fā)起的SQL語句進(jìn)行解析,如果屬于寫操作,就直接發(fā)送到主庫,如果是讀操作,就會(huì)被均衡地發(fā)送到主庫和從庫上執(zhí)行。

3.分庫分表

UMP支持對(duì)用戶透明的分庫分表(Shard/HorizontalPartition)。但是,用戶在創(chuàng)建賬號(hào)的時(shí)候需要指定類型為多實(shí)例,并且設(shè)置實(shí)例的個(gè)數(shù),系統(tǒng)會(huì)根據(jù)用戶設(shè)置來創(chuàng)建多組MySQL實(shí)例。除此以外,用戶還需要自己設(shè)定分庫分表規(guī)則,如需要確定分區(qū)字段,也就是根據(jù)哪個(gè)字段進(jìn)行分庫分表,還要確定分區(qū)字段里的值如何映射到不同的MySQL實(shí)例上。

4.資源管理

UMP系統(tǒng)采用資源池機(jī)制來管理數(shù)據(jù)庫服務(wù)器上的CPU、內(nèi)存、磁盤等計(jì)算資源,所有的計(jì)算資源都放在資源池內(nèi)進(jìn)行統(tǒng)一分配,資源池是為MySQL實(shí)例分配資源的基本單位。整個(gè)集群中的所有服務(wù)器會(huì)根據(jù)其機(jī)型、所在機(jī)房等因素被劃分為多個(gè)資源池,每臺(tái)服務(wù)器會(huì)被加人到相應(yīng)的資源池。在資源池劃分的基礎(chǔ)上,UMP還在每臺(tái)服務(wù)器內(nèi)部采用Cgroup將資源進(jìn)一步地細(xì)化,從而可以限制每個(gè)進(jìn)程組使用資源的上限,同時(shí)保證進(jìn)程組之間相互隔離。

5.資源調(diào)度

UMP系統(tǒng)中有3種規(guī)格的用戶,分別是數(shù)據(jù)量和流量比較小的用戶、中等規(guī)模用戶以及需要分庫分表的用戶。多個(gè)小規(guī)模用戶可以共享同一個(gè)MySQL實(shí)例。對(duì)于中等規(guī)模的用戶,每個(gè)用戶獨(dú)占個(gè)MySQL實(shí)例。用戶可以根據(jù)自己的

需求來調(diào)整內(nèi)存空間和磁盤空間,如果用戶需要更多的資源,就可以遷移到資源有空閑或者具有更高配置的服務(wù)器上對(duì)于分庫分表的用戶,會(huì)占有多個(gè)獨(dú)立的MySQL實(shí)例,這些實(shí)例既可以共存在同一臺(tái)物理機(jī)上,也可以每個(gè)實(shí)例獨(dú)占一臺(tái)物理機(jī)。UMP通過MySQL實(shí)例的遷移來實(shí)現(xiàn)資源調(diào)度。借助于阿里集團(tuán)中間件團(tuán)隊(duì)開發(fā)的愚公系統(tǒng),UMP可以實(shí)現(xiàn)在不停機(jī)的情況下動(dòng)態(tài)擴(kuò)容、縮容和遷移。

6.資源隔離

當(dāng)多個(gè)用戶共享同一個(gè)MySQL實(shí)例或者多個(gè)MySQL實(shí)例共存在同一個(gè)物理機(jī)上時(shí),為了保護(hù)用戶應(yīng)用和數(shù)據(jù)的安全,必須實(shí)現(xiàn)資源隔離,否則,某個(gè)用戶過多消耗系統(tǒng)資源會(huì)嚴(yán)重影響到其他用戶的操作性能。

7.數(shù)據(jù)安全

數(shù)據(jù)安全是讓用戶放心使用云數(shù)據(jù)庫產(chǎn)品的關(guān)鍵,尤其是企業(yè)用戶,數(shù)據(jù)庫中存放了很多業(yè)務(wù)數(shù)據(jù),有些屬于商業(yè)機(jī)密,一旦泄露,會(huì)給企業(yè)造成損失。UMP系統(tǒng)設(shè)計(jì)了多種機(jī)制來保證數(shù)據(jù)安全。

①SSL數(shù)據(jù)庫連接。

②數(shù)據(jù)訪問IP白名單。

③記錄用戶操作日志。

④SQL攔截。

8.試述UMP系統(tǒng)的組件及其具體作用。

①Controller服務(wù)器:向UMP集群提供各種管理服務(wù),實(shí)現(xiàn)集群成員管理、元數(shù)據(jù)存儲(chǔ)、MySQL實(shí)例管理、故障恢復(fù)、備份、遷移、擴(kuò)容等功能。

②Web控制臺(tái):向用戶提供系統(tǒng)管理界面。

③Proxy服務(wù)器:向用戶提供訪問MySQL數(shù)據(jù)庫的服務(wù);除了數(shù)據(jù)路由的基本功能外,Proxy服務(wù)器中還實(shí)現(xiàn)了屏蔽MySQL實(shí)例故障、讀寫分離、分庫分表、資源隔離、記錄用戶訪問日志等。

④Agent服務(wù)器:管理每臺(tái)物理機(jī)上的MySQL實(shí)例,執(zhí)行主從切換、創(chuàng)建、刪除、備份、遷移等操作,同時(shí)還負(fù)責(zé)收集和分析MySQL進(jìn)程的統(tǒng)計(jì)信息、慢查詢?nèi)罩竞蚥in-log。

⑤日志分析服務(wù)器:存儲(chǔ)和分析Proxy服務(wù)器傳入的用戶訪問日志,并支持實(shí)時(shí)查詢一段時(shí)間內(nèi)的慢日志和統(tǒng)計(jì)報(bào)表。

⑥信息統(tǒng)計(jì)服務(wù)器:定期將采集到的用戶的連接數(shù)、QPS數(shù)值以及MySQL實(shí)例的進(jìn)程狀態(tài)用RRDtool進(jìn)行統(tǒng)計(jì)。

⑦愚公系統(tǒng):是一個(gè)全量復(fù)制結(jié)合bin-log分析進(jìn)行增量復(fù)制的工具,可

以實(shí)現(xiàn)在不停機(jī)的情況下動(dòng)態(tài)擴(kuò)容、縮容和遷移。

9.試述UMP系統(tǒng)實(shí)現(xiàn)主從備份的方法。

UMP系統(tǒng)會(huì)為用戶創(chuàng)建兩個(gè)MySQL實(shí)例,一個(gè)是主庫,一個(gè)是從庫,且這兩個(gè)MySQL實(shí)例之間相互把對(duì)方設(shè)置為備份機(jī),任何一個(gè)MySQL實(shí)例上面發(fā)生的更新都會(huì)復(fù)制到對(duì)方。一旦主機(jī)宕機(jī),Controller服務(wù)器會(huì)啟動(dòng)主從切換,修改映射關(guān)系;宕機(jī)后的主庫在恢復(fù)處理后會(huì)再次上線,并從從庫中復(fù)制更新,直到更新到完全一致狀態(tài)的時(shí)候,Controller服務(wù)器會(huì)再次發(fā)起主從切換操作。

10.試述UMP系統(tǒng)讀寫分離的實(shí)現(xiàn)方法。

UMP系統(tǒng)實(shí)現(xiàn)了對(duì)于用戶透明的讀寫分離功能,當(dāng)整個(gè)功能被開啟時(shí),負(fù)責(zé)向用戶提供訪問MySQL數(shù)據(jù)庫服務(wù)的Proxy服務(wù)器,就會(huì)對(duì)用戶發(fā)起的SQL語句進(jìn)行解析,如果屬于寫操作,就直接發(fā)送到主庫,如果是讀操作,就會(huì)被均衡地發(fā)送到主庫和從庫上執(zhí)行。

11.UMP系統(tǒng)采用哪兩種方式實(shí)現(xiàn)資源隔離?

①用Group限制MySQL進(jìn)程資源;

②在Proxy服務(wù)器端限制QPS。

12.試述UMP系統(tǒng)中的3種規(guī)格用戶。

系統(tǒng)內(nèi)部劃分為3種規(guī)格的用戶,分別是數(shù)據(jù)量和流量比較小的用戶、中等規(guī)模用戶以及需要分庫分表的用戶。多個(gè)小規(guī)模用戶可以共享同一個(gè)MySQL實(shí)例,中等規(guī)模用戶獨(dú)占一個(gè)MySQL實(shí)例,需要分庫分表的用戶的多個(gè)MySQL實(shí)例共享同一個(gè)物理機(jī),通過這些方式實(shí)現(xiàn)了資源的虛擬化,降低了整體成本。UMP通過“用Cgroup限制MySQL進(jìn)程。

13.UMP系統(tǒng)是如何保障數(shù)據(jù)安全的?

①SSL數(shù)據(jù)庫連接。SSL(SecureSocketsLayer)是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議,它在傳輸層對(duì)網(wǎng)絡(luò)連接進(jìn)行加密。Proxy服務(wù)器實(shí)現(xiàn)了完整的MySQL客戶端/服務(wù)器協(xié)議,可以與客戶端之間建立SSL數(shù)據(jù)庫連接。

②數(shù)據(jù)訪問IP白名單??梢园言试S訪問云數(shù)據(jù)庫的IP地址放入“白名單”,只有白名單內(nèi)的IP地址才能訪問,其他IP地址的訪問都會(huì)被拒絕,從而進(jìn)一步保證賬戶安全。

③記錄用戶操作日志。用戶的所有操作記錄都會(huì)被記錄到日志分析服務(wù)器,通過檢查用戶操作記錄,可以發(fā)現(xiàn)隱藏的安全漏洞。

④SQL攔截。Proxy服務(wù)器可以根據(jù)要求攔截多種類型的SQL語句,比如全表掃描語句“select*"。

14.簡(jiǎn)述阿里云RDS的主要優(yōu)勢(shì)。

RDS是阿里云提供的關(guān)系型數(shù)據(jù)庫服務(wù),它將直接運(yùn)行于物理服務(wù)器上的數(shù)據(jù)庫實(shí)例租給用戶,是專業(yè)管理、高可靠的云端數(shù)據(jù)庫服務(wù)。用戶可以通過Web或API的方式,在幾分鐘內(nèi)開通完全兼容MySQL或SQLServer的數(shù)據(jù)庫實(shí)例。RDS由專業(yè)數(shù)據(jù)庫管理團(tuán)隊(duì)維護(hù),還可以為用戶提供數(shù)據(jù)備份、數(shù)據(jù)恢復(fù)、擴(kuò)展升級(jí)等管理功能,相對(duì)于用戶自建數(shù)據(jù)庫而言,RDS具有專業(yè)、高可靠、高性能、靈活易用等優(yōu)點(diǎn),能夠幫助用戶解決費(fèi)時(shí)費(fèi)力的數(shù)據(jù)庫管理任務(wù),讓用戶將更多的時(shí)間聚焦在核心業(yè)務(wù)上。RDS適用于各行業(yè)數(shù)據(jù)庫應(yīng)用,如SaaS應(yīng)用、電子商務(wù)網(wǎng)站、商家后臺(tái)應(yīng)用、社區(qū)網(wǎng)站、手機(jī)APP以及游戲類應(yīng)用等。RDS具有安全穩(wěn)定、數(shù)據(jù)可靠、自動(dòng)備份、管理透明、性能卓越,靈活擴(kuò)容等優(yōu)點(diǎn),可以提供專業(yè)的數(shù)據(jù)庫管理平臺(tái)、專業(yè)的數(shù)據(jù)庫優(yōu)化建議以及完善的監(jiān)控體系。

15.簡(jiǎn)述RDS中實(shí)例與數(shù)據(jù)庫的概念。

①RDS實(shí)例

RDS實(shí)例或簡(jiǎn)稱“實(shí)例”,是用戶購買RDS服務(wù)的基本單位。在實(shí)例中可以創(chuàng)建多個(gè)數(shù)據(jù)庫,可以使用常見的數(shù)據(jù)庫客戶端連接、管理及使用數(shù)據(jù)庫??梢酝ㄟ^RDS管理控制臺(tái)或OPENAPI來創(chuàng)建、修改和刪除數(shù)據(jù)庫。各實(shí)例之間相互獨(dú)立、資源隔離,相互之間不存在CPU、內(nèi)存、IOPS等搶占問題;但是,同-實(shí)例中的不同數(shù)據(jù)庫之間是資源共享的。每個(gè)實(shí)例擁有其自己的特性,如數(shù)據(jù)庫類型、版本等,系統(tǒng)有相應(yīng)的參數(shù)來控制實(shí)例行為。用戶所購買RDS實(shí)例的性能,取決于購買RDS實(shí)例時(shí)所選擇的配置,可供用戶選擇的硬件配置項(xiàng)為內(nèi)存和磁盤容量。

②RDS數(shù)據(jù)庫

RDS數(shù)據(jù)庫或簡(jiǎn)稱“數(shù)據(jù)庫",是用戶在一個(gè)實(shí)例下創(chuàng)建的邏輯單元,一.個(gè)實(shí)例可以創(chuàng)建多個(gè)數(shù)據(jù)庫,在實(shí)例內(nèi)數(shù)據(jù)庫命名唯-一,所有數(shù)據(jù)庫都會(huì)共享該實(shí)例下的資源,如CPU、內(nèi)存、磁盤容量等。RDS不支持使用標(biāo)準(zhǔn)的SQL語句或客戶端工具創(chuàng)建數(shù)據(jù)庫,必須使用OPENAPI或RDS管理控制臺(tái)進(jìn)行操作。

16.列舉連接RDSforMySQL數(shù)據(jù)庫的4種方法。

①方法1:使用客戶端MySQL-Front訪問。使用客戶端MySQL-Front,在連接Host框中輸人數(shù)據(jù)實(shí)例鏈接地址、端口(默認(rèn)3306)、數(shù)據(jù)庫用戶名和數(shù)據(jù)庫密碼后,單擊“確定”按鈕即可。

②方法2:使用數(shù)據(jù)庫管理工具NavicatMySQL。NavicatMySQL是一套專為MySQL設(shè)計(jì)的強(qiáng)大的數(shù)據(jù)庫管理及開發(fā)工具,可以在連接輸入框中輸人數(shù)據(jù)實(shí)例地址、端口(默認(rèn)3306)、數(shù)據(jù)庫用戶名和數(shù)據(jù)庫密碼后,單擊“確定"按鈕即可。

③方法3:使用MySQL命令登錄。用戶安裝MySQL客戶端后,可進(jìn)人命令行方式連接數(shù)據(jù)庫。命令格式如下。

mysql-uuser_name-hyuqianli.mysq1.http://./doc/36efc904ac51f01dc281e53a580216fc710a5337.html-P3306

-pxxxx其中,-u指定的是用戶名,-h指定的是主機(jī)名,-P指定的是端口,-p指定的是密碼。

④方法4:使用阿里云控制臺(tái)iDBCloud訪問。RDS連接地址以及端口不需要再輸入,只需在“用戶名”中輸人數(shù)據(jù)庫的賬號(hào),在“密碼”欄中輸人數(shù)據(jù)庫賬號(hào)的密碼,便可以登錄RDS進(jìn)行數(shù)據(jù)操作了。

大數(shù)據(jù)技術(shù)第七章課后題答案

——MapReduce

1.試述MapReduce和Hadoop的關(guān)系。

谷歌公司最先提出了分布式并行編程模型MapReduce,HadoopMapReduce是它的開源實(shí)現(xiàn)。谷歌的MapReduce運(yùn)行在分布式文件系統(tǒng)GFS上,與谷歌類似,HadoopMapReduce運(yùn)行在分布式文件系統(tǒng)HDFS上。相對(duì)而言,HadoopMapReduce要比谷歌MapReduce的使用門檻低很多,程序員即使沒有任何分布式程序開發(fā)經(jīng)驗(yàn),也可以很輕松地開發(fā)出分布式程序并部署到計(jì)算機(jī)集群中。

2.MapReduce是處理大數(shù)據(jù)的有力工具,但不是每個(gè)任務(wù)都可以使用

MapReduce來進(jìn)行處理。試述適合用MapReduce來處理的任務(wù)或者數(shù)據(jù)集需滿足怎樣的要求。

適合用MapReduce來處理的數(shù)據(jù)集,需要滿足一個(gè)前提條件:待處理的數(shù)據(jù)集可以分解成許多小的數(shù)據(jù)集,而且每一個(gè)小數(shù)據(jù)集都可以完全并行地進(jìn)行處理。

3.MapReduce模型采用Master(JobTracker)-Slave(TaskTracker)結(jié)構(gòu),

試描述JobTracker和TaskTracker的功能。

MapReduce框架采用了Master/Slave架構(gòu),包括一個(gè)Master和若

干個(gè)Slave。Master上運(yùn)行JobTracker,Slave上運(yùn)行TaskTrackero用戶提交的每個(gè)計(jì)算作業(yè),會(huì)被劃分成若千個(gè)任務(wù)。JobTracker負(fù)責(zé)作業(yè)和任務(wù)的調(diào)度,監(jiān)控它們的執(zhí)行,并重新調(diào)度已經(jīng)失敗的任務(wù)。TaskTracker負(fù)責(zé)執(zhí)行由JobTracker指派的任務(wù)。

4.TaskTracker出現(xiàn)故障會(huì)有什么影響?該故障是如何處理的?

5.MapReduce計(jì)算模型的核心是Map函數(shù)和Reduce函數(shù),試述這兩個(gè)函

數(shù)各自的輸人、輸出以及處理過程。

Map函數(shù)的輸人是來自于分布式文件系統(tǒng)的文件塊,這些文件塊的格式是任意的,可以是文檔,也可以是二進(jìn)制格式。文件塊是一系列元素的集合,這些元素是任意類型的,同一個(gè)元素不能跨文件塊存儲(chǔ)。Map函數(shù)將輸人的元素轉(zhuǎn)換成。

Reduce函數(shù)的任務(wù)就是將輸人的一-系列具有相同鍵的鍵值對(duì)以某種方式組合起來,輸出處理后的鍵值對(duì),輸出結(jié)果會(huì)合并成一個(gè)文件。用戶可以指定Reduce任務(wù)的個(gè)數(shù)(如n個(gè)),并通知實(shí)現(xiàn)系統(tǒng),然后主控進(jìn)程通常會(huì)選擇一個(gè)Hash函數(shù),Map任務(wù)輸出的每個(gè)鍵都會(huì)經(jīng)過Hash函數(shù)計(jì)算,并根據(jù)哈希結(jié)果將該鍵值對(duì)輸人相應(yīng)的Reduce任務(wù)來處理。對(duì)于處理鍵為k的Reduce任務(wù)的輸人形式為>.,輸出為。

6.試述MapReduce的工作流程(需包括提交任務(wù)、Map、Shuffle、Reduce

的過程)。

①M(fèi)apReduce框架使用InputFormat模塊做Map前的預(yù)處理,比如,

驗(yàn)證輸入的格式是否符合輸人定義;然后,將輸入文件切分為邏輯上的多個(gè)InputSplit,InputSplit是MapReduce對(duì)文件進(jìn)行處理和運(yùn)算的輸人單位,只是一個(gè)邏輯概念,每個(gè)InputSplit并沒有對(duì)文件進(jìn)行實(shí)際切割,只是記錄了要處理的數(shù)據(jù)的位置和長(zhǎng)度。

②因?yàn)镮nputSplit是邏輯切分而非物理切分,所以,還需要通過

RecordReader(RR)根據(jù)InputSplit中的信息來處理InputSplit中的具體記錄,加載數(shù)據(jù)并轉(zhuǎn)換為適合Map任務(wù)讀取的鍵值對(duì),輸入給Map任務(wù)。

③Map任務(wù)會(huì)根據(jù)用戶自定義的映射規(guī)則,輸出一系列的形式的中間結(jié)果,再交給對(duì)應(yīng)的Reduce進(jìn)行處理,這個(gè)過程稱為Shuffle。

⑤Reduce以一系列中間結(jié)果作為輸入,執(zhí)行用戶定

義的邏輯,輸出結(jié)果給OutputFormat模塊。

⑥OutputFormat模塊會(huì)驗(yàn)證輸出目錄是否已經(jīng)存在以及輸出結(jié)果類

型是否符合配置文件中的配置類型,如果都滿足,就輸出Reduce的結(jié)果到分布式文件系統(tǒng)。

7.Shuffle過程是MapReduce工作流程的核心,也被稱為奇跡發(fā)生的地方,

試分析Shuffle過程的作用。

Shufle,是指對(duì)Map輸出結(jié)果進(jìn)行分區(qū)、排序、合并等處理并交給

Reduce的過程。Shuffle過程分為Map端的操作和Reduce端的操作。

①在Map端的Shuffle過程。Map的輸出結(jié)果首先被寫入緩存,當(dāng)緩存

滿時(shí),就啟動(dòng)溢寫操作,把緩存中的數(shù)據(jù)寫入磁盤文件,并清空緩存。

當(dāng)啟動(dòng)溢寫操作時(shí),首先需要把緩存中的數(shù)據(jù)進(jìn)行分區(qū),然后對(duì)每個(gè)分

區(qū)的數(shù)據(jù)進(jìn)行排序(Sort)和合并(Combine),之后再寫入磁盤文件。每次

溢寫操作會(huì)生成-一個(gè)新的磁盤文件,隨著Map任務(wù)的執(zhí)行,磁盤中就

會(huì)生成多個(gè)溢寫文件。在Map任務(wù)全部結(jié)束之前,這些溢寫文件會(huì)被歸

并(Merge)成-一個(gè)大的磁盤文件,然后,通知相應(yīng)的Reduce任務(wù)來

領(lǐng)取屬于自己處理的數(shù)據(jù)。

②在Reduce端的Shuffle過程。Reduce任務(wù)從Map端的不同Map

機(jī)器領(lǐng)回屬于自己處理的那部分?jǐn)?shù)據(jù),然后,對(duì)數(shù)據(jù)進(jìn)行歸并(Merge)后

交給Reduce處理。

8.分別描述Map端和Reduce端的Shuffle過程(需包括SpillSort、Merge、

Fetch的過程)。

(1)Map端的Shuffle過程:

①輸入數(shù)據(jù)和執(zhí)行Map任務(wù)。

②寫入緩存

③溢寫(分區(qū),排序和合并)

④文件歸并

(2)Reduce端的Shuffle過程:

①“領(lǐng)取”數(shù)據(jù)

②歸并數(shù)據(jù)

③把數(shù)據(jù)輸入Reduce任務(wù)

9.MapReduce中有這樣-一個(gè)原則:移動(dòng)計(jì)算比移動(dòng)數(shù)據(jù)更經(jīng)濟(jì)。試述什么是

本地計(jì)算,并分析為何要采用本地計(jì)算。

MapReduce設(shè)計(jì)的一個(gè)理念就是“計(jì)算向數(shù)據(jù)靠攏”,而不是“數(shù)據(jù)向計(jì)算靠攏”,因?yàn)橐苿?dòng)數(shù)據(jù)需要大量的網(wǎng)絡(luò)傳輸開銷,尤其是在大規(guī)模數(shù)據(jù)環(huán)境下,這種開銷尤為驚人,所以,移動(dòng)計(jì)算要比移動(dòng)數(shù)據(jù)更加經(jīng)濟(jì)。

本地計(jì)算:在一個(gè)集群中,只要有可能,MapReduce框架就會(huì)將Map程序就近地在HDFS數(shù)據(jù)所在的節(jié)點(diǎn)運(yùn)行,即將計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)放在一起運(yùn)行,從而減少了節(jié)點(diǎn)間的數(shù)據(jù)移動(dòng)開銷。

10.試說明一個(gè)MapReduce程序在運(yùn)行期間,所啟動(dòng)的Map任務(wù)數(shù)量和

Reduce任務(wù)數(shù)量各是由什么因素決定的。

MapReduce的核心思想可以用“分而治之”來描述,一個(gè)大的MapReduce作業(yè),首先會(huì)被拆分成許多個(gè)Map任務(wù)在多臺(tái)機(jī)器上并行執(zhí)行,即Map任務(wù)的數(shù)量取決于mapReduce作業(yè)的大小。

當(dāng)Map任務(wù)結(jié)束后,會(huì)生成以形式表示的許多中間結(jié)果。

然后,這些中間結(jié)果會(huì)被分發(fā)到多個(gè)Reduce任務(wù)在多臺(tái)機(jī)器上并行執(zhí)行,具有相同key的會(huì)被發(fā)送到同一個(gè)Reduce任務(wù)那里,Reduce任務(wù)會(huì)對(duì)中間結(jié)果進(jìn)行匯總計(jì)算得到最后結(jié)果,并輸出到分布式文件系統(tǒng)中。即reduce的任務(wù)數(shù)量取決于Map輸出結(jié)果中key的數(shù)量。11.是否所有的MapReduce程序都需要經(jīng)過Map和Reduce這兩個(gè)過程?

如果不是,請(qǐng)舉例說明。

不是。對(duì)于關(guān)系的選擇運(yùn)算,只需要Map過程就能實(shí)現(xiàn),對(duì)于關(guān)系R中的

每個(gè)元組t,檢測(cè)是否是滿足條件的所需元組,如果滿足條件,則輸出鍵值對(duì)的value加起來,比如,有兩個(gè)鍵值對(duì)和,經(jīng)過合并操作以后就可以得到一個(gè)鍵值對(duì),減少了鍵值對(duì)的數(shù)量。

不過,并非所有場(chǎng)合都可以使用Combiner,因?yàn)?,Combiner的輸出是Reduce任務(wù)的輸人,Combiner絕不能改變Reduce任務(wù)最終的計(jì)算結(jié)果,一般而言,累加、最大值等場(chǎng)景可以使用合并操作。

13.MapReduce程序的輸入文件、輸出文件都存儲(chǔ)在HDFS中,而在Map

任務(wù)完成時(shí)的中間結(jié)果則存儲(chǔ)在本地磁盤中。試分析中間結(jié)果存儲(chǔ)在本地磁盤而不是HDFS上有何優(yōu)缺點(diǎn)。

因?yàn)镸ap的輸出是中間的結(jié)果,這個(gè)中間結(jié)果是由reduce處理后才產(chǎn)生最終輸出結(jié)果,而且一旦作業(yè)完成,map的輸出結(jié)果就可以刪除。如果把它存儲(chǔ)在hdfs中就并備份,有些小題大作,如果運(yùn)行map任務(wù)的節(jié)點(diǎn)

將map中間結(jié)果傳送給reduce任務(wù)之前失敗,hadoop將在另一個(gè)節(jié)點(diǎn)上重新運(yùn)行這個(gè)map任務(wù)以在此構(gòu)建中間結(jié)果。

14.早期版本的HDFS,其默認(rèn)塊(Block)大小為64MB,而較新的版本默認(rèn)為

128MB,采用較大的塊具有什么影響和優(yōu)缺點(diǎn)?

優(yōu)點(diǎn):塊尋址時(shí)間變短

15.試畫出使用MapReduce來對(duì)英語句子“Whateverisworthdoingis

worthdoingwell"進(jìn)行單詞統(tǒng)計(jì)的過程。

16.在基于MapReduce的單詞統(tǒng)計(jì)中,MapReduce是如何保證相同的單詞

數(shù)據(jù)會(huì)劃分到同一個(gè)reduce上進(jìn)行處理以保證結(jié)果的正確性?

對(duì)有相同KEY的Map輸出的鍵值對(duì)進(jìn)行歸并,得到新的鍵值對(duì)作為Reduce任務(wù)的輸入,由Reduce任務(wù)計(jì)算每個(gè)單詞出現(xiàn)的次數(shù),以保證結(jié)果的正確性。

大數(shù)據(jù)第八章課后題答案

——流計(jì)算

1.試述流數(shù)據(jù)的概念。

數(shù)據(jù)密集型應(yīng)用——流數(shù)據(jù),即數(shù)據(jù)以大量、快速、時(shí)變的流形式持續(xù)到達(dá)。以傳感監(jiān)測(cè)為例,在大氣中放置PM2.5傳感器實(shí)時(shí)監(jiān)測(cè)大氣中的PM2.5的濃度,監(jiān)測(cè)數(shù)據(jù)會(huì)源源不斷地實(shí)時(shí)傳輸回?cái)?shù)據(jù)中心,監(jiān)測(cè)系統(tǒng)對(duì)回傳數(shù)據(jù)進(jìn)行實(shí)時(shí)分析,預(yù)判空氣質(zhì)量變化趨勢(shì),如果空氣質(zhì)量在未來一段時(shí)間內(nèi)會(huì)達(dá)到影響人體健康的程度,就啟動(dòng)應(yīng)急響應(yīng)機(jī)制。

2.試述流數(shù)據(jù)的特點(diǎn)。

①數(shù)據(jù)快速持續(xù)到達(dá),潛在大小也許是無窮無盡的。

②數(shù)據(jù)來源眾多,格式復(fù)雜。

③數(shù)據(jù)量大,但是不十分關(guān)注存儲(chǔ),一旦流數(shù)據(jù)中的某個(gè)元素經(jīng)過處理,

要么被丟棄,要么被歸檔存儲(chǔ)。

④注重?cái)?shù)據(jù)的整體價(jià)值,不過分關(guān)注個(gè)別數(shù)據(jù)。

⑤數(shù)據(jù)順序顛倒,或者不完整,系統(tǒng)無法控制將要處理的新到達(dá)的數(shù)據(jù)元

素的順序。

3.在流計(jì)算的理念中,數(shù)據(jù)的價(jià)值與時(shí)間具備怎樣的關(guān)系?

數(shù)據(jù)的價(jià)值隨著時(shí)間的流逝而降低。

4.試述流計(jì)算的需求。

①高性能。處理大數(shù)據(jù)的基本要求,如每秒處理幾十萬條數(shù)據(jù)。

②海量式。支持TB級(jí)甚至是PB級(jí)的數(shù)據(jù)規(guī)模。

③實(shí)時(shí)性。必須保證-一個(gè)較低的延遲時(shí)間,達(dá)到秒級(jí)別,甚至是毫秒級(jí)別。

④分布式。支持大數(shù)據(jù)的基本架構(gòu),必須能夠平滑擴(kuò)展。

⑤易用性。能夠快速進(jìn)行開發(fā)和部署。

⑥可靠性。能可靠地處理流數(shù)據(jù)。

5.試述MapReduce框架為何不適合用于處理流數(shù)據(jù)。

(1)Hadoop設(shè)計(jì)的初衷是面向大規(guī)模數(shù)據(jù)的批量處理。批量任務(wù)的處理方式,在時(shí)間延遲方面無法滿足流計(jì)算的實(shí)時(shí)響應(yīng)需求。

(2)將MapReduce的批量處理轉(zhuǎn)為小批量處理,將輸入數(shù)據(jù)切成小的片段,每隔一個(gè)周期啟動(dòng)一次MapReduce作業(yè)。此方法存在如下

問題:

①切分成小的片段,雖然可以降低延遲,但是,也增加了任務(wù)處理的附加開銷,

而且還要處理片段之間的依賴關(guān)系,因?yàn)橐粋€(gè)片段可能需要用到前一個(gè)

片段的計(jì)算結(jié)果。

②需要對(duì)MapReduce進(jìn)行改造以支持流式處理,Reduce階段的結(jié)果不

能直接輸出,而是保存在內(nèi)存中;這種做法會(huì)大大增加MapReduce框

架的復(fù)雜度,導(dǎo)致系統(tǒng)難以維護(hù)和擴(kuò)展;

③降低了用戶程序的可伸縮性,因?yàn)?,用戶必須要使用MapReduce接口

來定義流式作業(yè)。

6.將基于MapReduce的批量處理轉(zhuǎn)為小批量處理,每隔一個(gè)周期就啟動(dòng)一

次MapReduce作業(yè),通過這樣的方式來處理流數(shù)據(jù)是否可行?為什么?

不可行。

切分成小的片段,雖然可以降低延遲,但是,也增加了任務(wù)處理的附加開銷,而且還要處理片段之間的依賴關(guān)系;Reduce階段的結(jié)果不能直接輸出;

降低了用戶程序的可伸縮性。

7.列舉幾個(gè)常見的流計(jì)算框架。

目前有三類常見的流計(jì)算框架和平臺(tái):商業(yè)級(jí)的流計(jì)算平臺(tái)、開源流計(jì)算框架、公司為支持自身業(yè)務(wù)開發(fā)的流計(jì)算框架。

(1)商業(yè)級(jí):IBMInfoSphereStreams和IBMStreamBase

(2)較為常見的是開源流計(jì)算框架,代表如下:

TwitterStorm:免費(fèi)、開源的分布式實(shí)時(shí)計(jì)算系統(tǒng),可簡(jiǎn)單、高效、可靠地處理大量的流數(shù)據(jù)

Yahoo!S4(SimpleScalableStreamingSystem):開源流計(jì)算平臺(tái),是通用的、分布式的、可擴(kuò)展的、分區(qū)容錯(cuò)的、可插拔的流式系統(tǒng)(3)公司為支持自身業(yè)務(wù)開發(fā)的流計(jì)算框架:

FacebookPuma

Dstream(百度)

銀河流數(shù)據(jù)處理平臺(tái)(淘寶)

8.試述流計(jì)算的一般處理流程。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論