Hadoop期末復習
選擇題
-
以下選項中,哪個程序負責HDFS數據存儲。 B
A、NameNode B、DataNode C、Secondary NameNode D、ResourceManager
-
下列哪項通常是集群的最主要的性能瓶頸? C
A、CPU B、 網絡 C、磁盤 D、內存
-
下面哪項是Hadoop的作者?B
A、Martin Fowler B、Doug cutting C、Mark Elliot Zuckerberg D、Kent Beck
-
HDFS默認備份數量?D
A、0 B、1 C、2 D、3
-
下列描述說法錯誤的是? D
A、SecureCRT是一款支持SSH的終端仿真程序,它能夠在Windows操作系統上遠程連接Linux服務器執行操作。
B、Hadoop是一個用於處理大數據的分布式集群架構,支持在GNU/Linux系統以及Windows系統上進行安裝使用。
C、VMware Workstation是一款虛擬計算機的軟件,用戶可以在單一的桌面上同時操作不同的操作系統。
D、 SSH是一個軟件,專為遠程登錄會話和其他網絡服務提供安全性功能的軟件。
-
配置Hadoop集群時,下列哪個Hadoop配置文件需要進行修改?(多選) AC
A、hadoop-env.sh B、profile C、core-site.xml D、ifcfg-eth0
-
Hadoop2.x版本中的數據塊大小默認是多少? B
A、 64M B、 128M C、 256M D、 512M -
關於Secondary NameNode哪項是正確?C
A、它是 NameNode 的熱備
B、它對內存沒有要求
C、它的目的是幫助 NameNode合並編輯日志,減少NameNode啟動時間
D、SecondaryNameNode 應與NameNode部署到一個節點
-
客戶端上傳文件的時候哪項是正確的?(多選)BD
A、數據經過 NameNode 傳遞給 DataNode
B、客戶端端將文件切分為多個Block,依次上傳
C、客戶端只上傳數據到一台 DataNode,然后由 NameNode 負責 Block 復制工作
D、客戶端發起文件上傳請求,通過RPC與NameNode建立通訊。
-
MapReduce適用於(D)
A、任意應用程序
B、任意可以在Windows Server 2008上的應用程序
C、可以串行處理的應用程序
D、可以並行處理的應用程序
-
下面關於MapReduce模型中Map函數與Reduce函數的描述正確的是(A)
A、一個Map函數就是對一部分原始數據進行指定的操作。
B、一個Map操作就是對每個Reduce所產生的一部分中間結果進行合並操作。
C、Map與Map之間不是相互獨立的。
D、Reducee與Reduce之間不是相互獨立的。
-
MapReduce自定義排序規則需要重寫下列那項方法(B)
A、readFields()
B、 compareTo()
C、 map()
D、reduce()
-
Zookeeper啟動時會最多監聽幾個端口(B)
A、1
B、2
C、3
D、4
-
下列哪些操作可以設置一個監聽器Watcher(D)
A、getData
B、getChildren
C、exists
D、setData
-
下列關於zookeeper描述正確的是:(A)
A、無論客戶端連接的是哪個Zookeeper服務器,其看到的服務端數據模型都是一致的
B、從同一個客戶端發起的事務請求,最終將會嚴格按照其發起順序被應用到zookeeper中
C、在一個5個節點組成的Zookeeper集群中,如果同時有3台機器宕機,服務不受影響
D、如果客戶端連接到Zookeeper集群中的那台機器突然宕機,客戶端會自動切換連接到集群其他機器
-
下列選項中那些是Hadoop2.x版本獨有的進程(C)
A、JobTracker
B、TaskTracker
C、NodeManager
D、NameNode
-
下列選項描述錯誤的是?A
A、Hadoop HA即集群中包含Secondary NameNode作為備份節點存在。
B、ResourceManager負責的是整個Yarn集群資源的監控、分配和管理工作
C、NodeManager負責定時的向ResourceManager匯報所在節點的資源使用情況以及接收並處理來自ApplicationMaster的啟動停止容器(Container)的各種請求。
D、初次啟動Hadoop HA集群時,需要將格式化文件系統后的目錄拷貝至另外一台NameNode節點上。
-
Hive是建立在(C)之上的一個數據倉庫
A、HDFS
B、MapReduce
C、Hadoop
D、HBase
-
Hive查詢語言和SQL的一個不同之處在於(C)操作
A、Group by
B、Join
C、Partition
D、Union
-
Hive最重視的性能是可測量性、延展性、(B)和對於輸入格式的寬松匹配性
A、較低恢復性
B、容錯性
C、快速查詢
D、可處理大量數據
-
以下選項中,哪種類型間的轉換是被Hive查詢語言所支持的(D)
A、Double—Number
B、BigInt—Double
C、Int—BigInt
D、String--Double
-
按粒度大小的順序,Hive數據被分為:數據庫、數據表、(C)、桶?
A、元祖
B、欄
C、分區
D、行
-
下面說法選項錯誤的是(多選)AD
A、在一個Agent中,同一個source可以有多個channel
B、在一個Agent中,同一個sink可以有多個channel
C、在一個Agent中,同一個source只能多1個channel
D、在一個Agent中,同一個sink只能有1個channel
-
下列選項參數是Sqoop指令的是?(多選)AD
A、import
B、output
C、input
D、export
-
下列語句描述錯誤的是(C)
A、可以通過CLI方式、Java API方式調用Sqoop
B、Sqoop底層會將Sqoop命令轉換為MapReduce任務,並通過Sqoop連接器進行數據的導入導出操作。
C、Sqoop是獨立的數據遷移工具,可以在任何系統上執行。
D、如果在Hadoop分布式集群環境下,連接MySQL服務器參數不能是localhost或127.0.0.1。
判斷題
1、Cloudera CDH是需要付費使用的。X
2、JobTracker是HDFS重要角色。X
3、在Hadoop集群中,NameNode負責管理所有DataNode。√
4、在Hadoop1.x版本中,MapReduce程序是運行在Yarn集群之上。X
5、Hadoop是由Java語言開發的。√
6、Hadoop是Java語言開發的,因此在搭建Hadoop集群時,需要為集群安裝JDK環境變量。√
7、偽分布式模式下的Hadoop功能與完全分布式模式下的Hadoop功能相同。√
8、啟動Hadoop集群服務之前需要格式化文件系統。√
9、Hadoop存在多個副本,且默認備份數量是3。√
10、配置Hadoop集群只需要修改core-site.xml配置文件就可以。X
11、Secondary NameNode是NameNode的備份,可以有效解決Hadoop集群單點故障問題。X
12、NameNode負責管理元數據,客戶端每次讀寫請求時,都會從磁盤中讀取或寫入元數據信息並反饋給客戶端。。√
13、NameNode本地磁盤保存了數據塊的位置信息。X
14、Map階段處理數據時,是按照Key的哈希值與ReduceTask數量取模進行分區的規則。√
15、分區數量是ReduceTask的數量。√
16、在MapReduce程序中,必須開發Map和Reduce相應的業務代碼才能執行程序。X
17、Zookeeper對節點的Watch監聽通知是永久性的。X
18、Zookeeper集群宕機數超過集群數一半,則Zookeeper服務失效。√
19、Zookeeper可以作為文件存儲系統,因此可以將大規模數據文件存在該系統中。X
20、ResourceManager負責監控ApplicationMaster,並在ApplicationMaster運行失敗的時候重啟它,因此ResouceManager負責ApplicationMaster內部任務的容錯。X
21、NodeManager是每個節點上的資源和任務管理器。√
22、Hadoop HA是集群中啟動兩台或兩台以上機器充當NameNode,避免一台NameNode節點發生故障導致整個集群不可用的情況。√
23、Hadoop HA是兩台NameNode同時執行NameNode角色的工作。X
24、在Hadoop HA中,Zookeeper集群為每個NameNode都分配了一個故障恢復控制器,該控制器用於監控NameNode的健康狀態。√
25、Hive使用length()函數可以求出輸出的數量。X
26、再創建外部表的同時要加載數據文件,數據文件會移動到數據倉庫指定的目錄下。X
27、Hive是一款獨立的數據倉庫工具,因此在啟動前無需啟動任何服務。X
28、Hive默認不支持動態分區功能,需要手動設置動態分區參數開啟功能。√
29、Hive分區字段不能與已存在字段重復,且分區字段是一個虛擬的字段,它不存放任何數據,該數據來源於裝載分區表時所指定的數據文。√
30、Flume Agent是一個JVM進程,它承載着數據從外部源流向下一個目標的三個核心組件是Source、Channel和Sink。√
31、Taildir Source用於觀察指定的文件,可以實時監測到添加到每個文件的新行,如果文件正在寫入新行,則此采集器將重試采集它們以等待寫入完成。√
32、Flume采集方案的名稱、位置、以及sources、channels、sinks參數配置信息可以隨定義。X
33、在整個數據傳輸的過程中,Flume將流動的數據封裝到一個event(事件)中,它是Flume內部數據傳輸的基本單元。 √
34、Sqoop是關系型數據庫與Hadoop之間的數據橋梁,這個橋梁的重要組件是Sqoop連接器。√
35、Sqoop從Hive表導出MySQL表時,首先需要在MySQL中創建表結構。√
36、--target-dir參數是指定HDFS目標目錄地址,因此需要提前創建目標文件。X
填空題
1、大數據的4V特征包含____大量、多樣、高速、價值____
2、Hadoop三大組件包含___ HDFS、MapReduce、Yarn______。
3、Hadoop2.x版本中的HDFS是由____ NameNode、DataNode、Secondary NameNode___組成。
4、Hadoop發行版本分為____開源社區版、商業版______。
5、目前Apache Hadoop發布的版本主要有__ Hadoop1.x、Hadoop2.x、Hadoop3.x。
1、Hadoop集群部署方式分別是__ 獨立模式、偽分布式模式、完全分布式模式
2、加載環境變量配置文件需要使用_ source /etc/profile_命令。
3、格式化HDFS集群命令是__ hadoop namenode -format___。
4、腳本一鍵啟動Hadoop集群服務命令是__start-all.sh_。
5、Hadoop默認開設HDFS文件系統端口號___50070____和監控Yarn集群端口號___8088___。
1、 ___NameNode___用於維護文件系統名稱並管理客戶端對文件的訪問,DataNode____存儲真實的數據塊。
2、 NameNode與DataNode通過___心跳監測____機制互相通信。
3、 NameNode以元數據形式維護着______fsimage、EditLog_文件。
1、在MapReduce中,Map______階段負責將任務分解,Reduce______階段將任務合並。
2、MapReduce工作流程分為分片、格式化數據源、執行MapTask、執行Shuffle過程、執行ReduceTask、寫入文件
3、Partitioner組件目的是______將key均勻分布在ReduceTask上_____。
1、Zookeeper集群主要有Leader、Follower、Observer_____三種角色。
2、Znode有兩種節點,分別是__永久節點、臨時節點___。
3、Zookeeper引入Watch_____機制實現分布式的通知功能。
4、System類中所提供的屬性和方法都是____的,想要引用這些屬性和方法,直接使用System類調用即可。
5、已知 sb 為 StringBuffer 的一個實例,且 sb.toString() 的值為 "abcde ", 則執行sb. reverse()后,sb.toString()的值為_____。
1、Yarn的核心組件包含___ResourceManager、NodeManager、ApplicationMaster_____。
2、ResourceManager內部包含了兩個組件,分別是調度器(Scheduler)應用程序管理器(Application Manager)_。
1、數據倉庫是面向__主題的、集成的、非易失的____和時變的數據集合,用於支持管理決策。
2、Hive默認元數據存儲在 Derby數據庫_____數據庫中。
3、Hive建表時設置分割字符命令______row format delimited fields terminated by char____
4、Hive查詢語句select ceil(2.34)輸出內容是___3___。
5、Hive創建桶表關鍵字_____clustered by,且Hive默認分桶數量是___-1____。
1、Flume分為兩個版本,分別是___Flume-og、Flume-ng___。
2、Flume的核心是把數據從數據源通過___數據采集器(Source)_收集過來,再將收集的數據通過___緩沖通道(Channel)匯集到指定的接收器(Sink)。
3、Flume采用三層架構,分別為_____agent,collector和storage_____,每一層均可以水平擴展。
4、Flume的負載均衡接收器處理器支持使用_____round_robin(輪詢)和random(隨機)機制進行流量分配,其默認選擇機制為round_robin__。
1、Sqoop主要用於在Hadoop、關系型數據庫_之間進行傳輸數據。
2、Sqoop底層利用___MapReduce___技術以___批處理___方式加快了數據傳輸速度,並且具有較好的容錯性功能。
3、從數據庫導入HDFS時,指定以制表符作為字段分隔符參數是_________ --fields-terminated-by '\t'____。
簡答題
1、簡述大數據研究的意義。
發散型題目
2、簡述Hadoop版本區別。
Hadoop發行版本分為開源社區版和商業版,社區版是指由Apache軟件基金會維護的版本,是官方維護的版本體系。商業版Hadoop是指由第三方商業公司在社區版Hadoop基礎上進行了一些修改、整合以及各個服務組件兼容性測試而發行的版本,例如比較著名的有Cloudera公司的CDH版本。
1、簡述什么是SSH以及SSH協議解決的問題。
SSH為Secure Shell的縮寫,它是一種網絡安全協議,專為遠程登錄會話和其他網絡服務提供安全性的協議。通過使用SSH服務,可以把傳輸的數據進行加密,有效防止遠程管理過程中的信息泄露問題。
2、簡述Hadoop集群部署方式以及各方式使用場景。
(1)獨立模式:又稱為單機模式,在該模式下,無需運行任何守護進程,所有的程序都在單個JVM上執行。獨立模式下調試Hadoop集群的MapReduce程序非常方便,所以一般情況下,該模式在學習或者開發階段調試使用。
(2)偽分布式模式:Hadoop程序的守護進程運行在一台節點上,通常使用偽分布式模式用來調試Hadoop分布式程序的代碼,以及程序執行是否正確,偽分布式模式是完全分布式模式的一個特例。
(3)完全分布式模式:Hadoop的守護進程分別運行在由多個主機搭建的集群上,不同節點擔任不同的角色,在實際工作應用開發中,通常使用該模式構建企業級Hadoop系統。
1、簡述HDFS上傳文件工作流程
詳情答案見3.2.2小節。
2、簡述NameNode管理分布式文件系統的命名空間。
在NameNode內部是以元數據的形式,維護着兩個文件,分別是FsImage鏡像文件和EditLog日志文件。其中,FsImage鏡像文件用於存儲整個文件系統命名空間的信息,EditLog日志文件用於持久化記錄文件系統元數據發生的變化。當NameNode啟動的時候,FsImage鏡像文件就會被加載到內存中,然后對內存里的數據執行記錄的操作,以確保內存所保留的數據處於最新的狀態,這樣就加快了元數據的讀取和更新操作。
1、簡述HDFS Block與MapReduce split之間的聯系。
Block:HDFS中最小的數據存儲單位,默認是128M;Split:MapReduce中最小的計算單元,默認與Block一一對應。
兩者的對應關系是任意的,可有用戶控制。
2、簡述Shuffle工作流程。
詳情答案見4.2.4小節
1、簡述Watch機制的特點。
一次性觸發、事件封裝、異步發送、先注冊再觸發
2、簡述Zookeeper集群選舉機制。
詳情答案見5.4.2小節
1、簡述Yarn集群的工作流程。
參考答案見6.2.2小節
2、簡述Hadoop HA集群的啟動步驟
(1)啟動集群各個節點的Zookeeper服務;
(2)啟動集群各個節點監控NameNode的管理日志的JournalNode;
(3)在node-01節點格式化NameNode,並將格式化后的目錄拷貝到node-02中;
(4)在node-01節點上格式化ZKFC;
(5)在node-01節點上啟動HDFS;
(6)在node-01節點上啟動YARN。
1、簡述Hive的特點是什么。
Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,並提供完整的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行運行。其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
2、簡述Hive中內部表與外部表區別。
創建表階段:
外部表創建表的時候,不會移動數到數據倉庫目錄中(/user/hive/warehouse),只會記錄表數據存放的路徑,內部表會把數據復制或剪切到表的目錄下。
刪除表階段:
外部表在刪除表的時候只會刪除表的元數據信息不會刪除表數據,內部表刪除時會將元數據信息和表數據同時刪除
1、簡述Flume工作原理。
參考答案見8.1.2小節
1、簡述Sqoop導入與導出數據工作原理。
參考答案:
在導入數據之前,Sqoop使用JDBC檢查導入的數據表,檢索出表中的所有列以及列的SQL數據類型,並將這些SQL類型映射為Java數據類型,在轉換后的MapReduce應用中使用這些對應的Java類型來保存字段的值,Sqoop的代碼生成器使用這些信息來創建對應表的類,用於保存從表中抽取的記錄。
在導出數據之前,Sqoop會根據數據庫連接字符串來選擇一個導出方法,對於大部分系統來說,Sqoop會選擇JDBC。Sqoop會根據目標表的定義生成一個Java類,這個生成的類能夠從文本中解析出記錄數據,並能夠向表中插入類型合適的值,然后啟動一個MapReduce作業,從HDFS中讀取源數據文件,使用生成的類解析出記錄,並且執行選定的導出方法。
編程題
1、通過Java API實現上傳文件至HDFS中。
詳情答案見3.4.2小節
1、 現有數據文本文件number.txt,內容如下所示,請將該文本文件內容重復的數據刪除。
118569
118569
335816
123456
963807
963807
118555
118569
代碼參考4.4.2小節
2、現有一組數據,內容如下所示,請利用MapReduce將下列數據求出最大10個數,並倒序輸出。
10 3 8 7 6 5 1 2 9 4
11 12 17 14 15 20
19 18 13 16
代碼參考4.8小節
1、 利用Java API調用Zookeeper,實現創建節點、獲取節點、修改節點、判斷節點是否存在以及刪除節點。
代碼參考5.7.2小節
1、創建字段為id、name的用戶表,並且以性別gender為分區字段的分區表。
參考答案:
create table t_user (id int, name string)
partitioned by (gender string)
row format delimited fields terminated by ',';
1、利用Sqoop將test數據庫中的user表中id>5的用戶導入到HDFS中的/user目錄(user表字段:id,name)。
$ sqoop import \
--connect jdbc:mysql://hadoop01:3306/test \
--username root \
--password 123456 \
--target-dir /user \
--query 'SELECT id,name FROM user WHERE id>5 \
--num-mappers 1
2、利用Sqoop將test數據庫中的emp表導入Hive表hive.emp_test表中。
$ sqoop import \
--connect jdbc:mysql://hadoop01:3306/test \
--username root \
--password 123456 \
--table emp \
--hive-table hive_emp_test \
--create-hive-table \
--hive-import \
--num-mappers 1