Hadoop+HBase技術項目教程 課后習題答案_第1頁
Hadoop+HBase技術項目教程 課后習題答案_第2頁
Hadoop+HBase技術項目教程 課后習題答案_第3頁
Hadoop+HBase技術項目教程 課后習題答案_第4頁
Hadoop+HBase技術項目教程 課后習題答案_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

【課后練習答案】

項目1:

一、選擇題

l.A2.C3.D4.C5.A

二、判斷題

l.T2.T3.F4.F

三、簡答題

1.簡述大數據研究的意義。

研究大數據,最重要的意義是預測。因為數據從根本上講,是對過去和現在

的歸納和總結,其本身不具備趨勢和方向性的特征,但是我們可以應用大數據去

了解事物發展的客觀規律、了解人類行為,并且能夠幫助我們改變過去的思維方

式,建立新的數據思維模型,從而對未來進行預測和推測。比如,商業公司對消

費者日常的購買行為和使用商品習慣進行匯總和分析,了解到消費者的需求,從

而改進己有商品并適時推出新的商品,消費者的購買欲將會提高。知名互聯網公

司谷歌對其用戶每天頻繁搜索的詞匯進行數據挖掘,從而進行相關的廣告推廣和

商業研究。

2.簡述Hadoop版本區別。

Hadoopl.0和2.0的主要區別:

1.新增yarn,1.0時mr的運行環境為JobTracker和TaskTracker,2.0

則取消了JobTracker和TaskTracker,使用yarn作為mr的資源調度調度器

2.解決了hadoopl.0中NN的單點故障,可以使用NN的Ha

3.Hadoop2.x默認的block大小是128MB,Hadoop1.x默認的block

大小是64MB

項目2:

一、選擇題

l.D2.D3.B4.C5.B6.B

二、判斷題

l.T2.F3.F4.F

三、問答題:

1.啟動Hadoop系統,當使用bin/start-all.sh命令啟動時,請給出集群

各進程啟動順序。

啟動順序:

namenode->datanode->secondarynamenode->resourcemanager->nodemanager

2.列出Hadoop的進程名,作用分別是什么?

Namenode進程:HDFS的守護進程,負責維護整個文件系統,存儲著整個文

件系統的元數據信息,有image+editlognamenode不會持久化存儲這些數據,

而是在啟動時重建這些數據。

Datanode進程:具體文件系統的工作節點,當我們需要某個數據,namenode

告訴我們去哪里找,就直接和那個DataNode對應的服務器的后臺進程進行通信,

由DataNode進行數據的檢索,然后進行具體的讀/寫操作

Secondarynamenode進程:一個冗余的守護進程,相當于一個namenode的

元數據的備份機制,定期的更新,和namenode進行通信,將namenode上的image

和edits進行合并,可以作為namenode的備份使用

Resourcemanager進程:yarn平臺的守護進程,負責所有資源的分配與調度,

client的請求由此負責,監控nodemanager

nodemanager進程:單個節點的資源管理,執行來自resourcemanager的具

體任務和命令

項目3:

一、選擇題

1.A2.C3.C4.D5.C

二、填空題

1.DataNode2.hdfsversion3.一次寫入,多次讀取4.DataNode

5.hadoopfs、hadoopdfs、hdfsdfs

三、問答題:

1.HDFS和傳統的分布式文件系統相比較,有哪些獨特的特性?

(1)分片冗余,本地校驗。傳統的分布式的文件系統會因為分布后的結構不

完整,導致系統復雜度加大,并且引入的網絡編程,同樣導致分布式文件系統更

加復雜。而HDFS采用分片冗余,本地校驗的方法很好的解決了傳統分布式的文

件系統的這一問題。數據冗余式存儲,直接將多份的分片文件交給分片后的存儲

服務器去校驗。

(2)準確性高。冗余后的分片文件還有個額外功能,只要冗余的分片文件中

有一份是完整的,經過多次協同調整后,其他分片文件也將完整。經過協調校驗,

無論是傳輸錯誤,I/O錯誤,還是個別服務錯宕機,整個系統里的文件是完整的

(3)彈性好。傳統分布式文件系統有個無法回避的問題,因為文件不在一個

磁盤導致讀取訪問操作的延時,而現階段,HDFS的配置是按照高數據吞吐量優

化的,可能會以高時間延時為代價。但萬幸的是,HDFS是具有很高彈性,可以

針對具體應用再優化。

(4)優化的副本存放策略。HDFS采用一種稱為機架感知的策略來改進數據的

可靠性、可用性和網絡帶寬的利用率。

2.為什么HDFS的塊如此之大?

HDFS的塊比磁盤塊大,其目的是為了最小化尋址開銷。如果塊設置得足夠

大,從磁盤傳輸數據的時間可以明顯大于定位這個塊開始位置所需的時間。這樣,

傳輸一個由多個塊組成的文件的時間取決于磁盤傳輸速率。

我們來做一個速算,如果尋址時間為10ms左右,而傳輸速率為100MB/S,

為了使尋址時間僅占傳輸時間的1%,我們需要設置塊大小為100MB左右。而默

認的塊大小實際為64MB,但是很多情況下HDFS使用128MB的塊設置。以后隨著

新一代磁盤驅動器傳輸速率的提升,塊的大小將被設置得更大。

但是該參數也不會設置得過大。M卯Reduce中的map任務通常一次處理一個

塊中的數據,因此任務數太少(少于集群中的節點數量),作業的運行速度就會

比較慢。

3.HDFS中數據副本的存放策略是什么?

副本一:同Client的節點上

副木二,不同機架中的節點上

副本三:同第二個副本的機架中的另一個節點上

其他副本:隨機挑選

項目4:

一、填空題:

Map;Reduce

Copy;Merge;Sort;Reduce;Write

Shuffle

二、判斷題:

1、正確2、錯誤3、正確

三、單選題:

1、A2、D3、B

四、簡答題

1.MapReduce的核心思想是什么?

MapReduce的核心思想就是“分而治之”。也就是說把一個復雜的問題,按

照一定的“分解”方法分為等價的規模較小的若干部分,然后逐個解決,分別找

出各個部分的結果,把各部分的結果組成整個問題的結果。

2.簡述MapReduce的執行過程。

MapReduce存在以下4個獨立的實體。

(1)JobClient:運行于clientnode,負責將MapReduce程序打成Jar包

存儲到HDFS,并把Jar包的路徑提交到Jobtracker,由Jobtracker進行任務的

分配和監控。

(2)JobTracker:運行于namenode,負責接收JobClient提交的Job,

調度Job的每一個子task運行于TaskTracker上,并監控它們,如果發現有失

敗的task就重新運行它。

(3)TaskTracker:運行于datanode,負責主動與JobTracker通信,接

收作業,并直接執行每一個任務。

(4)HDFS:用來與其它實體間共享作業文件。

項目5:

一、填空題:

1.Combiner

2.分片;格式化數據源;執行MapTask;執行Shuffle過程;執行ReduceTask;

寫入文件

3.將key均勻分布在ReduceTask上

二、判斷題:

1、正確2、正確3、錯誤

三、單選題:

1、B2、B3、C

四、簡答題

1.為什么要進行Combiner操作?

每一個map可能會產生大量的輸出,combiner的作用就是在map端對輸出

先做一次合并,以減少傳輸到reducer的數據量。

combiner最基本是實現本地key的歸并,combiner具有類似本地的reduce

功能。

如果不用combiner,那么,所有的結果都是reduce完成,效率會相對低下。

使用combiner,先完成的map會在本地聚合,提升速度。

2.MapReduce是如何進行Partitioner分區的?

定義一個Partitioner組件,需要繼承Partitioner類,并重寫

getPartition()方法。在重寫getPartition()方法時,通常的做法是使用hash

函數對文件數量進行分區,即通過hash操作,獲得一個非負整數的hash碼,然

后用當前作業的reduce節點數進行取模運算,從而實現數據均勻分布在

ReduceTask的目的。

項目6:

答案:本題為設計類題,設計答案不唯一,給出部分答案

1)按字段創建表vistor。

將數據源內容存儲到集群中/usr/local/src/datas/user.txtr下。

創建表

hive>createdatabasevistorData;

hive>usevistorData;

hive>createtableifnotexistsvistor(useidint,name

string,umonthint,numint)

rowformatdelimitedfieldsterminatedby'\t'

storedastextfile

locationJ/usr/local/src/user,;

2)導入數據源到表中。

向普通表vistor中利用loaddata方式導入數據。

hive>loaddatalocalinpath*/usr/local/src/datas/user.txtJinto

tablevistor;

項目7:

以表7-5為例進行部分答案說明,本題為設計類題,設計答案不唯一

表7-5學生表(Student)

S_NoNameSexAge

2015001Zhangsanmale23

2015002Maryfemale22

2015003Lisimale24

1)要求用HBaseshell命令實現建表及數據的增/刪除/改操作。

過程:

轉換成HBase的邏輯表。

S_Nofl

namesexage

201500Zhangsanmale23

1

201500Maryfemale22

2

201500Lisimale24

3

用HBaseshell命令實現建表

hbase>create'student,,'fT

數據的增/刪除/改操作。

增加數據:

hbase>putstudent*,'201500T,'fl:name,,'Zhangsan'

hbase>putstudent','2015001','fl:dex',male'

hbase>putstudent','2015001','fl:age',‘23'

hbase>putstudent'2015002',,fl:name,,,Mary

hbase>putstudent'2015002','fl:dcx',*female'

hbase>putstudent'2015002','fl:age','22'

hbase>putstudent'2015003',,fl:name,,,Lisi

hbase>putstudent1,'2015003','fl:dex',,male

hbase>putstudent*,'2015003',,fl:age,,'24'

修改數據:將2015002的age值改為23

hbase>put'student','2015002,,'f1rage*,'23

刪除數據:將2015002的age值刪除

hbase>delete'student'2015002','fl:age'

2)要求用HBaseJavaAPI編程實現建表及數據的增/刪除/改操作。

大家查看前面教材中相關內容,自行編寫相關代碼。

3)要求能用HBaseshell命令實現單條/多條記錄查詢。

單條記錄查詢

查詢student中2015002的age列的值。

hbase>get'student','rkOOl','2015002','fl:age,

利用ValueFilter屬性,查詢2015002中2015002行中值是23的數據。

hbase>get'student','2015002,,{FILTER

ValueFilter(=,Jbinary:23,)w)

多條記錄查詢

掃描整個表列族為fl的數據。

hbase>scan'student',{COLUMN=>'fl'}

倒序掃描整個表。

hbase>scan*student?,{

溫馨提示

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

評論

0/150

提交評論