大数据技术原理与应用-林子雨课后(部分习题答案)
第一章
2.試述數(shù)據(jù)產(chǎn)生經(jīng)歷的幾個(gè)階段
答:3個(gè)階段
1.運(yùn)營式系統(tǒng)階段
人類社會(huì)最早大規(guī)模管理和使用數(shù)據(jù),是從數(shù)據(jù)庫的誕生開始的。大型零售超市銷售系統(tǒng)、銀行交韓系統(tǒng)、股市交易系統(tǒng)、醫(yī)院醫(yī)療系統(tǒng)、企業(yè)客戶管理系統(tǒng)等大量運(yùn)營式系統(tǒng),都是建立在數(shù)據(jù)庫基礎(chǔ)之上的,數(shù)據(jù)庫中保存了大量結(jié)構(gòu)化的企業(yè)關(guān)鍵信息,用來滿足企業(yè)各種業(yè)務(wù)需求,在這個(gè)階段,數(shù)據(jù)的產(chǎn)生方式是被動(dòng)的,只有當(dāng)實(shí)際的企業(yè)業(yè)務(wù)發(fā)生時(shí),才會(huì)產(chǎn)生新的記錄并存人數(shù)據(jù)庫。比如,對(duì)于股市交易系統(tǒng)而言,只有當(dāng)發(fā)生一筆股票交易時(shí),才會(huì)有相關(guān)記錄生成。
2. 用戶原創(chuàng)內(nèi)容階段
互聯(lián)網(wǎng)的出現(xiàn),使得數(shù)據(jù)傳播更加快捷,不需要借助于磁盤、磁帶等物理存儲(chǔ)介質(zhì)傳播數(shù)據(jù),網(wǎng)頁的出現(xiàn)進(jìn)一步加速了大量網(wǎng)絡(luò)內(nèi)容的產(chǎn)生,從而使得人類社會(huì)數(shù)據(jù)量開始呈現(xiàn)“井噴式”增長。但是,互聯(lián)網(wǎng)真正的數(shù)據(jù)爆發(fā)產(chǎn)生于以“用戶原創(chuàng)內(nèi)容"為特征的Web 2.0時(shí)代。Web 1.0時(shí)代主要以門戶網(wǎng)站為代表,強(qiáng)調(diào)內(nèi)容的組織與提供,大量上網(wǎng)用戶本身并不參與內(nèi)容的產(chǎn)生。而Web 2.0技術(shù)以Wiki.博客、微博、微信等自服務(wù)模式為主,強(qiáng)調(diào)自服務(wù),大量上網(wǎng)用戶本身就是內(nèi)容的生成者,尤其是隨著移動(dòng)互聯(lián)網(wǎng)和智能手機(jī)終端的普及,人們更是可以隨時(shí)隨地使用手機(jī)發(fā)微博、傳照片,數(shù)據(jù)量開始急劇增加。
3.感知式系統(tǒng)階段
物聯(lián)網(wǎng)的發(fā)展最終導(dǎo)致了人類社會(huì)數(shù)據(jù)量的第三次躍升。 物聯(lián)網(wǎng)中包含大量傳感器,如溫度作感烈。福度傳感器、壓力傳感器、位移傳感器、光電傳感器等, 此外, 視頻監(jiān)控?cái)z像頭也是物聯(lián)網(wǎng)的重要組成部分,物聯(lián)網(wǎng)中的這些設(shè)備, 每時(shí)每刻都在自動(dòng)產(chǎn)生大量數(shù)據(jù),與Web 2.0時(shí)代數(shù)據(jù),使得人類社會(huì)迅速步人“大數(shù)據(jù)時(shí)代”。的人工教據(jù)產(chǎn)生方式相比,物聯(lián)網(wǎng)中的自動(dòng)數(shù)據(jù)產(chǎn)生方式,將在超時(shí)間內(nèi)生成更密集、更大量的數(shù)據(jù),使得人類社會(huì)迅速進(jìn)入“大數(shù)據(jù)時(shí)代”。
3.試述大數(shù)據(jù)的4個(gè)基本特征
答:數(shù)據(jù)量大、數(shù)據(jù)類型繁多、處理速度快和價(jià)值密度低。
5.數(shù)據(jù)研究經(jīng)歷了哪4個(gè)階段?
答:人類自古以來在科學(xué)研究上先后歷經(jīng)了實(shí)驗(yàn)、理論、計(jì)算、和數(shù)據(jù)四種范式。
8.舉例說明大數(shù)據(jù)的基本應(yīng)用
答:
領(lǐng)域:大數(shù)據(jù)的應(yīng)用
金融行業(yè):大數(shù)據(jù)在高頻交易、社區(qū)情緒分析和信貸風(fēng)險(xiǎn)分析三大金融創(chuàng)新領(lǐng)域發(fā)揮重要作用。
汽車行業(yè):利用大數(shù)據(jù)和物聯(lián)網(wǎng)技術(shù)的五人駕駛汽車,在不遠(yuǎn)的未來將走進(jìn)我們的日常生活
互聯(lián)網(wǎng)行業(yè):借助于大數(shù)據(jù)技術(shù),可以分析客戶行為,進(jìn)行商品推薦和有針對(duì)性廣告投放
個(gè)人生活:大數(shù)據(jù)還可以應(yīng)用于個(gè)人生活,利用與每個(gè)人相關(guān)聯(lián)的“個(gè)人大數(shù)據(jù)”,分析個(gè)人生活行為習(xí)慣,為其提供更加周全的個(gè)性化服務(wù)。
9.舉例說明大數(shù)據(jù)的關(guān)鍵技術(shù)
答:批處理計(jì)算,流計(jì)算,圖計(jì)算,查詢分析計(jì)算
11.定義并解釋以下術(shù)語:云計(jì)算、物聯(lián)網(wǎng)
答:
云計(jì)算:
云計(jì)算就是實(shí)現(xiàn)了通過網(wǎng)絡(luò)提供可伸縮的、廉價(jià)的分布式計(jì)算機(jī)能力,用戶只需要在具備網(wǎng)絡(luò)接入條件的地方,就可以隨時(shí)隨地獲得所需的各種IT資源。
物聯(lián)網(wǎng):
物物相連的互聯(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)的核心
大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)的聯(lián)系:
從整體來看,大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)這三者是相輔相成的。大數(shù)據(jù)根植于云計(jì)算,大數(shù)據(jù)分析的很多技術(shù)都來自于云計(jì)算,云計(jì)算的分布式存儲(chǔ)和管理系統(tǒng)提供了海量數(shù)據(jù)的存儲(chǔ)和管理能力,沒有這些云計(jì)算技術(shù)作為支撐,大數(shù)據(jù)分析就無從談起。物聯(lián)網(wǎng)的傳感器源源不斷的產(chǎn)生大量數(shù)據(jù),構(gòu)成了大數(shù)據(jù)的重要數(shù)據(jù)來源,物聯(lián)網(wǎng)需要借助于云計(jì)算和大數(shù)據(jù)技術(shù),實(shí)現(xiàn)物聯(lián)網(wǎng)大數(shù)據(jù)的存儲(chǔ)、分析和處理。
第二章
1.試述hadoop和谷歌的mapreduce、gfs等技術(shù)之間的關(guān)系
答:Hadoop的核心是分布式文件系統(tǒng)HDFS和MapReduce,HDFS是谷歌文件系統(tǒng)GFS的開源實(shí)現(xiàn),MapReduces是針對(duì)谷歌MapReduce的開源實(shí)現(xiàn)。
2.試述Hadoop具有哪些特性。
答:高可靠性,高效性,高可擴(kuò)展性,高容錯(cuò)性,成本低,運(yùn)行在Linux平臺(tái),支持多種編程語言
4.試述Hadoop的項(xiàng)目結(jié)構(gòu)以及每個(gè)部分的具體功能。
答:
Commeon是為Hadoop其他子項(xiàng)目提供支持的常用工具,主要包括文件系統(tǒng)、RPC和串行化庫。
Avro是為Hadoop的子項(xiàng)目,用于數(shù)據(jù)序列化的系統(tǒng),提供了豐富的數(shù)據(jù)結(jié)構(gòu)類型、快速可壓縮的二進(jìn)制數(shù)據(jù)格式、存儲(chǔ)持續(xù)性數(shù)據(jù)的文件集、遠(yuǎn)程調(diào)用的功能和簡(jiǎn)單的動(dòng)態(tài)語言集成功能。
HDFS是Hadoop項(xiàng)目的兩個(gè)核心之一,它是針對(duì)谷歌文件系統(tǒng)的開源實(shí)現(xiàn)。
HBase是一個(gè)提高可靠性、高性能、可伸縮、實(shí)時(shí)讀寫、分布式的列式數(shù)據(jù)庫,一般采用HDFS作為其底層數(shù)據(jù)存儲(chǔ)。
MapReduce是針對(duì)谷歌MapReduce的開源實(shí)現(xiàn),用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算。
Zoookepper是針對(duì)谷歌Chubby的一個(gè)開源實(shí)現(xiàn),是高效和可靠的協(xié)同工作系統(tǒng),提供分布式鎖之類的基本服務(wù),用于構(gòu)建分布式應(yīng)用,減輕分布式應(yīng)用程序所承擔(dān)的協(xié)調(diào)任務(wù)。
Hive是一個(gè)基于Hadoop的數(shù)據(jù)倉庫工具,可以用于對(duì)Hadoop文件中的數(shù)據(jù)集進(jìn)行數(shù)據(jù)整理、特殊查詢和分布存儲(chǔ)。
Pig是一種數(shù)據(jù)流語言和運(yùn)行環(huán)境,適合于使用Hadoop和MapReducce平臺(tái)上查詢大型半結(jié)構(gòu)化數(shù)據(jù)集。
Sqoop可以改進(jìn)數(shù)據(jù)的互操作性,主要用來在hadoop配合關(guān)系數(shù)據(jù)庫之間交換數(shù)據(jù)。
Chukwa是一個(gè)開源的、用于監(jiān)控大型分布式系統(tǒng)的數(shù)據(jù)收集系統(tǒng),可以將各種類型的數(shù)據(jù)收集成適合Hadoop處理的文件,并保存在HDFS中供Hadoop進(jìn)行各種 MapReduce操作。
5.配置Hadoop時(shí),java的路徑JAVA_HOME是在哪一個(gè)配置文件中進(jìn)行設(shè)置的
答:
hadoop目錄下的etc/hadoop/hadoop-env.sh文件
6.所有節(jié)點(diǎn)的HDFS路徑是通過fs.default.name來設(shè)置的,請(qǐng)問他是在哪個(gè)配置文件中設(shè)置的
答:core-site.xml
8.Hadoop偽分布式運(yùn)行啟動(dòng)后所具有的進(jìn)程都有哪些?
答:
1)NameNode它是hadoop中的主服務(wù)器,管理文件系統(tǒng)名稱空間和對(duì)集群中存儲(chǔ)的文件的訪問,保存有metadate。
2)SecondaryNameNode它不是namenode的冗余守護(hù)進(jìn)程,而是提供周期檢查點(diǎn)和清理任務(wù)。幫助NN合并editslog,減少NN啟動(dòng)時(shí)間。
3)DataNode它負(fù)責(zé)管理連接到節(jié)點(diǎn)的存儲(chǔ)(一個(gè)集群中可以有多個(gè)節(jié)點(diǎn))。每個(gè)存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn)運(yùn)行一個(gè)datanode守護(hù)進(jìn)程。
4)ResourceManager(JobTracker)JobTracker負(fù)責(zé)調(diào)度DataNode上的工作。每個(gè)DataNode有一個(gè)TaskTracker,它們執(zhí)行實(shí)際工作。
5)NodeManager(TaskTracker)執(zhí)行任務(wù)
6)DFSZKFailoverController高可用時(shí)它負(fù)責(zé)監(jiān)控NN的狀態(tài),并及時(shí)的把狀態(tài)信息寫入ZK。它通過一個(gè)獨(dú)立線程周期性的調(diào)用NN上的一個(gè)特定接口來獲取NN的健康狀態(tài)。FC也有選擇誰作為Active NN的權(quán)利,因?yàn)樽疃嘀挥袃蓚€(gè)節(jié)點(diǎn),目前選擇策略還比較簡(jiǎn)單(先到先得,輪換)。
7)JournalNode 高可用情況下存放namenode的editlog文件
第三章
1.試述分布式文件系統(tǒng)設(shè)計(jì)的需求。
答:
4.試述HDFS中的名稱節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)的具體功能。
答:
名稱節(jié)點(diǎn)負(fù)責(zé)管理分布式文件系統(tǒng)系統(tǒng)的命名空間,記錄分布式文件系統(tǒng)中的每個(gè)文件中各個(gè)塊所在的數(shù)據(jù)節(jié)點(diǎn)的位置信息;
數(shù)據(jù)節(jié)點(diǎn)是分布式文件系統(tǒng)HDFS的工作節(jié)點(diǎn),負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和讀取,會(huì)根據(jù)客戶端或者是名稱節(jié)點(diǎn)的調(diào)度來進(jìn)行數(shù)據(jù)的存儲(chǔ)和檢索,并向名稱節(jié)點(diǎn)定期發(fā)送自己所存儲(chǔ)的塊的列表。
hadoop fs -ls 顯示指定的文件的詳細(xì)信息
hadoop fs -cat 將指定的文件的內(nèi)容輸出到標(biāo)準(zhǔn)輸出
hadoop fs -mkdir 創(chuàng)建指定的文件夾
hadoop fs -get [-ignorecrc] [-crc] 復(fù)制指定的文件到本地文件系統(tǒng)指定的文件或文件夾。-ignorecrc選項(xiàng)復(fù)制CRC校驗(yàn)失敗的文件。使用-crc選項(xiàng)復(fù)制文件以及CRC信息。
hadoop fs -put 從本地文件系統(tǒng)中復(fù)制指定的單個(gè)或多個(gè)源文件到指定的目標(biāo)文件系統(tǒng)中。也支持從標(biāo)準(zhǔn)輸入(stdin)中讀取輸入寫入目標(biāo)文件系統(tǒng)。
hadoop fs -rmr 刪除指定的文件夾及其的所有文件
6.HDFS只設(shè)置唯一一個(gè)名稱節(jié)點(diǎn),在簡(jiǎn)化系統(tǒng)設(shè)計(jì)的同時(shí)也帶來了一些明顯的局限性,請(qǐng)闡述局限性具體表現(xiàn)在那些方面。
答:
(1) 命名空間的限制:名稱節(jié)點(diǎn)是保存在內(nèi)存中的,因此,名稱節(jié)點(diǎn)能夠容納的
對(duì)象(文件、塊)的個(gè)數(shù)會(huì)受到內(nèi)存空間大小的限制。
(2) 性能的瓶頸:整個(gè)分布式文件系統(tǒng)的吞吐量,受限于單個(gè)名稱節(jié)點(diǎn)的吞吐量。
(3) 隔離問題:由于集群中只有一個(gè)名稱節(jié)點(diǎn),只有一個(gè)命名空間,因此,無法
對(duì)不同應(yīng)用程序進(jìn)行隔離。
(4) 集群的可用性:一旦這個(gè)唯一的名稱節(jié)點(diǎn)發(fā)生故障,會(huì)導(dǎo)致整個(gè)集群變得不
可用。
7.試述HDFS的冗余數(shù)據(jù)保存策略。
答:
1).第一個(gè)副本:放置在上傳文件的數(shù)據(jù)節(jié)點(diǎn);如果是集群外提交,則隨機(jī)挑選一臺(tái)磁盤不太滿、CPU不太忙的節(jié)點(diǎn)
? 2).第二個(gè)副本:放置在與第一個(gè)副本不同的機(jī)架的節(jié)點(diǎn)上
? 3).第三個(gè)副本:與第一個(gè)副本相同機(jī)架的其他節(jié)點(diǎn)上
? 4).更多副本:隨機(jī)節(jié)點(diǎn)
9.試述HDFS是如何探測(cè)錯(cuò)誤發(fā)生以及如何進(jìn)行恢復(fù)的。
答:
名稱節(jié)點(diǎn)保存了所有的元數(shù)據(jù)信息,其中最核心的兩大數(shù)據(jù)結(jié)構(gòu)是Fslmage和EilLog,如果這兩個(gè)文作發(fā)生根壞 那么管↑HOPS實(shí)例將失效Hap采用兩種機(jī)制來確保名整節(jié)點(diǎn)的安全單門,把不稱節(jié)點(diǎn)上的元數(shù)據(jù)信息同步存儲(chǔ)到其他文件系統(tǒng)( 比如遠(yuǎn)程掛載的網(wǎng)絡(luò)文件系統(tǒng)NFS)中:第二,運(yùn)行 個(gè)第二名稱節(jié)點(diǎn),當(dāng)名稱節(jié)點(diǎn)宕機(jī)以后,可以把第名稱節(jié)點(diǎn)作為一 種彌補(bǔ)措場(chǎng)利用站名稱節(jié)點(diǎn)中的元數(shù)據(jù)信息進(jìn)行系統(tǒng)恢復(fù), 但是從前面對(duì)第二名稱節(jié)點(diǎn)的介紹中可以看出,這樣做仍然會(huì)丟失部分?jǐn)?shù)據(jù)。因此,一般會(huì)把 上述兩種方式結(jié)合使用,當(dāng)名稱節(jié)點(diǎn)發(fā)生宕機(jī)時(shí)首先到遠(yuǎn)程掛載的網(wǎng)絡(luò)文件系統(tǒng)中獲取備份的元數(shù)據(jù)信息,放到第二名稱節(jié)點(diǎn)上進(jìn)行恢復(fù),并把第二名稱節(jié)點(diǎn)作為名稱節(jié)點(diǎn)來使用。
2.數(shù)據(jù)節(jié)點(diǎn)出錯(cuò)
每個(gè)數(shù)據(jù)節(jié)點(diǎn)會(huì)定期向名稱節(jié)點(diǎn)發(fā)送“心跳”信息,向名稱節(jié)點(diǎn)報(bào)告自己的狀態(tài)。當(dāng)數(shù)據(jù)節(jié)點(diǎn)發(fā)生故障,或者網(wǎng)絡(luò)發(fā)生斷網(wǎng)時(shí),名稱節(jié)點(diǎn)就無法收到來自一些數(shù)據(jù)節(jié)點(diǎn)的“心跳”信息,這時(shí)這些數(shù)據(jù)節(jié)點(diǎn)就會(huì)被標(biāo)記為“宕機(jī)”,節(jié)點(diǎn)上面的所有數(shù)據(jù)都會(huì)被標(biāo)記為“不可讀”,名稱節(jié)點(diǎn)不會(huì)再給它們發(fā)送任何IO請(qǐng)求。這時(shí),有可能出現(xiàn)一種情形,即由于一些數(shù)據(jù)節(jié)點(diǎn)的不可用,會(huì)導(dǎo)致一此數(shù)據(jù)塊的副本數(shù)量小于冗余因子。名稱節(jié)點(diǎn)會(huì)定期檢查這種情況,一旦發(fā)現(xiàn)某個(gè)數(shù)據(jù)塊的副本數(shù)量小于冗余因子,就會(huì)啟動(dòng)數(shù)據(jù)冗余復(fù)制,為它生成新的副本。HDFS與其他分布式文件系統(tǒng)的最大區(qū)別就是可以調(diào)整冗余數(shù)據(jù)的位置。
3.數(shù)據(jù)出錯(cuò)
網(wǎng)絡(luò)傳輸和磁盤錯(cuò)誤尊因素都會(huì)造成數(shù)據(jù)錯(cuò)誤。客戶端在讀取到數(shù)據(jù)后,會(huì)采用mds和shal對(duì)數(shù)據(jù)塊進(jìn)行校驗(yàn),以確定讀取到正確的數(shù)據(jù)。在文件被創(chuàng)建時(shí),客戶端就會(huì)對(duì)每- 個(gè)文件塊進(jìn)行信息摘錄,并把這些信息寫人同一個(gè)路徑的隱藏文件里面。當(dāng)客戶端讀取文件的時(shí)候,會(huì)先讀取該信息文件,然后利用該信息文件對(duì)每個(gè)讀取的數(shù)據(jù)塊進(jìn)行校驗(yàn),如果校驗(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)客戶端通過FlSysmeono打開文件相應(yīng)地,在HIDFS文件系統(tǒng)中DitbuedFieSstess具體實(shí)現(xiàn)了FileSystem。 因此,調(diào)用open()方法后,DisribedFilSyste 會(huì)創(chuàng)建輸人流FSDataInputStream.對(duì)于HDFS而言,具體的輸人流就是DFSInputSteam
(2)在DFSInputStream的構(gòu)造函數(shù)中,輸人流通過ClientProtocal getBlockLocations0遠(yuǎn)程調(diào)用名稱節(jié)點(diǎn),獲得文件開始部分?jǐn)?shù)據(jù)塊的保存位置。對(duì)于該數(shù)據(jù)塊,名稱節(jié)點(diǎn)返回保存該數(shù)據(jù)塊的所有數(shù)據(jù)節(jié)點(diǎn)的地址,同時(shí)根據(jù)距離客戶端的遠(yuǎn)近對(duì)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行排序:然后,DistributedFileSystem會(huì)利用DFSInputStream來實(shí)例化FSDataInputSteam.返回給客戶端,同時(shí)返回了數(shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn)地址。
(3)獲得輸人流FDalnpulsreon后,客戶端調(diào)用cao雨數(shù)開始讀取數(shù)據(jù)。輸人流根據(jù)響
面的排序結(jié)果,選擇距離客戶端最近的數(shù)據(jù)節(jié)點(diǎn)建立連接井讀取數(shù)據(jù)。(4)數(shù)據(jù)從該數(shù)據(jù)節(jié)點(diǎn)讀到客戶端:當(dāng)該數(shù)據(jù)塊讀取完畢時(shí),FDsapulsrcor關(guān)閉和該數(shù)星節(jié)點(diǎn)的連接。
(5)輸人流通過getBlockLocations()方法查找下一個(gè)數(shù)據(jù)塊(如果客戶端緩存中已經(jīng)包含了數(shù)據(jù)塊的位置信息,就不需要調(diào)用該方法)。
(6)找到該數(shù)據(jù)塊的最佳數(shù)據(jù)節(jié)點(diǎn),讀取數(shù)據(jù)。
(7)當(dāng)客戶端讀取完畢數(shù)據(jù)的時(shí)候,調(diào)用FSDataInputStream的close()函數(shù),關(guān)閉輸入流,需要注意的是,在讀取數(shù)據(jù)的過程中,如果客戶端與數(shù)據(jù)節(jié)點(diǎn)通信時(shí)出現(xiàn)錯(cuò)誤,就會(huì)嘗試連接包含此數(shù)據(jù)塊的下一個(gè)數(shù)據(jù)節(jié)點(diǎn)。
第四章
3.請(qǐng)闡述HBase和傳統(tǒng)關(guān)系數(shù)據(jù)庫的區(qū)別
答:
答:
行鍵是唯一的,在一個(gè)表里只出現(xiàn)一次,否則就是在更新同一行,行鍵可以是任意的字節(jié)數(shù)組。
列族需要在創(chuàng)建表的時(shí)候就定義好,數(shù)量也不宜過多。列族名必須由可打印字符組成,創(chuàng)建表的時(shí)候不需要定義好列。
時(shí)間戳,默認(rèn)由系統(tǒng)指定,用戶也可以顯示設(shè)置。使用不同的時(shí)間戳來區(qū)分不同的版本。
7.請(qǐng)舉個(gè)實(shí)例來闡述HBase的概念視圖和物理視圖的不同
答:
HBase數(shù)據(jù)概念視圖
HBase數(shù)據(jù)物理視圖
在HBase的概念視圖中,一個(gè)表可以視為一個(gè)稀疏、多維的映射關(guān)系。
在物理視圖中,一個(gè)表會(huì)按照屬于同一列族的數(shù)據(jù)保存在一起
8.試述HBase各功能組建及其作用
(1)庫函數(shù):鏈接到每個(gè)客戶端;
(2)一個(gè)Master主服務(wù)器:主服務(wù)器Master主要負(fù)責(zé)表和Region的管理工作;
(3)許多個(gè)Region服務(wù)器:Region服務(wù)器是HBase中最核心的模塊,負(fù)責(zé)維護(hù)分配給自己的Region,并響應(yīng)用戶的讀寫請(qǐng)求
11.試述HBase的三層結(jié)構(gòu)中各層次的名稱和作用。
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ā)文件分裂操作。
19.請(qǐng)列舉幾個(gè)HBase常用命令,并說明其使用方法
1.進(jìn)入hbase shell console
$HBASE_HOME/bin/hbase shell
如果有kerberos認(rèn)證,需要事先使用相應(yīng)的keytab進(jìn)行一下認(rèn)證(使用kinit命令),認(rèn)證成功之后再使用hbase shell進(jìn)入可以使用whoami命令可查看當(dāng)前用戶
hbase(main)>
whoami
2.表的管理
1)查看有哪些表
hbase(main)>
list
2)創(chuàng)建表
#語法:create
#例如:創(chuàng)建表t1,有兩個(gè)family name:f1,f2,且版本數(shù)均為2
hbase(main)>
create ‘t1’,{NAME
=> ‘f1’,
VERSIONS => 2},{NAME => ‘f2’,
VERSIONS => 2}
3)刪除表
分兩步:首先disable,然后drop
例如:刪除表t1
hbase(main)>
disable ‘t1’
hbase(main)>
drop ‘t1’
4)查看表的結(jié)構(gòu)
#語法:describe
#例如:查看表t1的結(jié)構(gòu)
hbase(main)>
describe ‘t1’
5)修改表結(jié)構(gòu)
修改表結(jié)構(gòu)必須先disable
#語法:alter ‘t1’, {NAME => ‘f1’}, {NAME => ‘f2’, METHOD => ‘delete’}
#例如:修改表test1的cf的TTL為180天
hbase(main)>
disable ‘test1’
hbase(main)>
alter ‘test1’,{NAME=>‘body’,TTL=>‘15552000’},{NAME=>‘meta’,
TTL=>‘15552000’}
hbase(main)>
enable ‘test1’
3.權(quán)限管理
1)分配權(quán)限
#語法 : grant
#權(quán)限用五個(gè)字母表示: “RWXCA”.
#READ(‘R’), WRITE(‘W’), EXEC(‘X’), CREATE(‘C’), ADMIN(‘A’)
#例如,給用戶‘test’分配對(duì)表t1有讀寫的權(quán)限,
hbase(main)>
grant ‘test’,‘RW’,‘t1’
2)查看權(quán)限
#語法:user_permission
#例如,查看表t1的權(quán)限列表
hbase(main)>
user_permission ‘t1’
3)收回權(quán)限
#與分配權(quán)限類似,語法:revoke
#例如,收回test用戶在表t1上的權(quán)限
hbase(main)>
revoke ‘test’,‘t1’
4.表數(shù)據(jù)的增刪改查
1)添加數(shù)據(jù)
#語法:put
#例如:給表t1的添加一行記錄:rowkey是rowkey001,family name:f1,column name:col1,value:value01,timestamp:系統(tǒng)默認(rèn)
hbase(main)>
put ‘t1’,‘rowkey001’,‘f1:col1’,‘value01’
用法比較單一。
2)查詢數(shù)據(jù)
a)查詢某行記錄
#語法:get
#例如:查詢表t1,rowkey001中的f1下的col1的值
hbase(main)>
get ‘t1’,‘rowkey001’,
‘f1:col1’
#或者:
hbase(main)>
get ‘t1’,‘rowkey001’,
{COLUMN=>‘f1:col1’}
#查詢表t1,rowke002中的f1下的所有列值
hbase(main)>
get ‘t1’,‘rowkey001’
b)掃描表
#語法:scan
#另外,還可以添加STARTROW、TIMERANGE和FITLER等高級(jí)功能
#例如:掃描表t1的前5條數(shù)據(jù)
hbase(main)>
scan ‘t1’,{LIMIT=>5}
c)查詢表中的數(shù)據(jù)行數(shù)
#語法:count
#INTERVAL設(shè)置多少行顯示一次及對(duì)應(yīng)的rowkey,默認(rèn)1000;CACHE每次去取的緩存區(qū)大小,默認(rèn)是10,調(diào)整該參數(shù)可提高查詢速度
#例如,查詢表t1中的行數(shù),每100條顯示一次,緩存區(qū)為500
hbase(main)>
count ‘t1’,
{INTERVAL => 100, CACHE => 500}
3)刪除數(shù)據(jù)
a )刪除行中的某個(gè)列值
#語法:delete
#例如:刪除表t1,rowkey001中的f1:col1的數(shù)據(jù)
hbase(main)>
delete ‘t1’,‘rowkey001’,‘f1:col1’
注:將刪除改行f1:col1列所有版本的數(shù)據(jù)
b )刪除行
#語法:deleteall
#例如:刪除表t1,rowk001的數(shù)據(jù)
hbase(main)>
deleteall ‘t1’,‘rowkey001’
c)刪除表中的所有數(shù)據(jù)
#語法: truncate
#其具體過程是:disable table -> drop table -> create table
#例如:刪除表t1的所有數(shù)據(jù)
hbase(main)>
truncate ‘t1’
5.Region管理
1)移動(dòng)region
#語法:move ‘encodeRegionName’, ‘ServerName’
#encodeRegionName指的regioName后面的編碼,ServerName指的是master-status的Region Servers列表
#示例
hbase(main)>move
‘4343995a58be8e5bbc739af1e91cd72d’,
‘db-41.xxx.xxx.org,60020,1390274516739’
2)開啟/關(guān)閉region
#語法:balance_switch true|false
hbase(main)>
balance_switch
3)手動(dòng)split
#語法:split ‘regionName’,‘splitKey’
4)手動(dòng)觸發(fā)major compaction
#語法:
#Compact
all regions in a table:
#hbase>
major_compact ‘t1’
#Compact
an entire region:
#hbase>
major_compact ‘r1’
#Compact
a single column family within a region:
#hbase>
major_compact ‘r1’, ‘c1’
#Compact
a single column family within a table:
#hbase>
major_compact ‘t1’, ‘c1’
6.配置管理及節(jié)點(diǎn)重啟
1)修改hdfs配置
hdfs配置位置:/etc/hadoop/conf
#同步hdfs配置
cat /home/hadoop/slaves|xargs -i
-t scp /etc/hadoop/conf/hdfs-site.xml
hadoop@{}:/etc/hadoop/conf/hdfs-site.xml
#關(guān)閉:
cat /home/hadoop/slaves|xargs -i
-t ssh hadoop@{}
“sudo
/home/hadoop/cdh4/hadoop-2.0.0-cdh4.2.1/sbin/hadoop-daemon.sh --config /etc/hadoop/conf stop datanode”
#啟動(dòng):
cat /home/hadoop/slaves|xargs -i
-t ssh hadoop@{}
“sudo
/home/hadoop/cdh4/hadoop-2.0.0-cdh4.2.1/sbin/hadoop-daemon.sh --config /etc/hadoop/conf start datanode”
2)修改hbase配置
hbase配置位置:
#同步hbase配置
cat /home/hadoop/hbase/conf/regionservers|xargs -i
-t scp /home/hadoop/hbase/conf/hbase-site.xml
hadoop@{}:/home/hadoop/hbase/conf/hbase-site.xml
#graceful重啟
cd ~/hbase
bin/graceful_stop.sh
–restart --reload --debug inspurXXX.xxx.xxx.org
第五章
4.請(qǐng)比較NoSQL數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫的優(yōu)缺點(diǎn)
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理論的具體含義。
答:所謂的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(Tolerance of Network Partition):分區(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)作。
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ū)分為:
總結(jié)
以上是生活随笔為你收集整理的大数据技术原理与应用-林子雨课后(部分习题答案)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 并不对劲的BJOI2019
- 下一篇: MyBatis下载和使用