//Hadoop基礎
Doug Cutting所創立的項目的名稱都受到其家人的啟發,以下項目不是由他創立的項目是
A. Hadoop
B. Nutch
C. Lucene
D. Solr
答案:D
配置Hadoop時,JAVA_HOME包含在哪一個配置文件中
A. hadoop-default.xml
B. hadoop-env.sh
C. hadoop-site.xml
D. configuration.xsl
答案:B
知識點:hadoop配置
Hadoop配置文件中,hadoop-site.xml顯示覆蓋hadoop-default.xml里的內容。在版本0.20中,hadoop-site.xml被分離成三個XML文件,不包括
A. conf-site.xml
B. mapred-site.xml
C. core-site.xml
D. hdfs-site.xml
答案:A
知識點:hadoop配置
HDFS默認的當前工作目錄是/user/$USER,fs.default.name的值需要在哪個配置文件內說明
A. mapred-site.xml
B. core-site.xml
C. hdfs-site.xml
D. 以上均不是
答案:B
知識點:hadoop配置
關於Hadoop單機模式和偽分布式模式的說法,正確的是
A. 兩者都起守護進程,且守護進程運行在一台機器上
B. 單機模式不使用HDFS,但加載守護進程
C. 兩者都不與守護進程交互,避免復雜性
D. 后者比前者增加了HDFS輸入輸出以及可檢查內存使用情況
答案:D
知識點:hadoop配置
下列關於Hadoop API的說法錯誤的是
A. Hadoop的文件API不是通用的,只用於HDFS文件系統
B. Configuration類的默認實例化方法是以HDFS系統的資源配置為基礎的
C. FileStatus對象存儲文件和目錄的元數據
D. FSDataInputStream是java.io.DataInputStream的子類
答案:A
//HDFS
HDFS的NameNode負責管理文件系統的命名空間,將所有的文件和文件夾的元數據保存在一個文件系統樹中,這些信息也會在硬盤上保存成以下文件:
A.日志
B.命名空間鏡像
C.兩者都是
答案:C
知識點:
HDFS的namenode保存了一個文件包括哪些數據塊,分布在哪些數據節點上,這些信息也存儲在硬盤上。
A.正確
B.錯誤
答案:B
知識點:在系統啟動的時候從數據節點收集而成的
Secondary namenode就是namenode出現問題時的備用節點
A.正確
B.錯誤
答案:B
知識點:它和元數據節點負責不同的事情。其主要功能就是周期性將元數據節點的命名空間鏡像文件和修改日志合並,以防日志文件過大。合並過后的命名空間鏡像文件也在Secondary namenode保存了一份,以防namenode失敗的時候,可以恢復。
出現在datanode的VERSION文件格式中但不出現在namenode的VERSION文件格式中的是
A. namespaceID
B. storageID
C. storageType
D. layoutVersion
答案:B
知識點:其他三項是公有的。layoutVersion是一個負整數,保存了HDFS的持續化在硬盤上的數據結構的格式版本號;namespaceID是文件系統的唯一標識符,是在文件系統初次格式化時生成的;storageType表示此文件夾中保存的是數據節點的類型
Client在HDFS上進行文件寫入時,namenode根據文件大小和配置情況,返回部分datanode信息,誰負責將文件划分為多個Block,根據DataNode的地址信息,按順序寫入到每一個DataNode塊
A. Client
B. Namenode
C. Datanode
D. Secondary namenode
答案:A
知識點:HDFS文件寫入
HDFS的是基於流數據模式訪問和處理超大文件的需求而開發的,默認的最基本的存儲單位是64M,具有高容錯、高可靠性、高可擴展性、高吞吐率等特征,適合的讀寫任務是
A.一次寫入,少次讀寫
B.多次寫入,少次讀寫
C.一次寫入,多次讀寫
D.多次寫入,多次讀寫
答案:C
知識點:HDFS特性
HDFS無法高效存儲大量小文件,想讓它能處理好小文件,比較可行的改進策略不包括
A. 利用SequenceFile、MapFile、Har等方式歸檔小文件
B. 多Master設計
C. Block大小適當調小
D. 調大namenode內存或將文件系統元數據存到硬盤里
答案:D
知識點:HDFS特性
關於HDFS的文件寫入,正確的是
A. 支持多用戶對同一文件的寫操作
B. 用戶可以在文件任意位置進行修改
C. 默認將文件塊復制成三份存放
D. 復制的文件塊默認都存在同一機架上
答案:C
知識點:在HDFS的一個文件中只有一個寫入者,而且寫操作只能在文件末尾完成,即只能執行追加操作。默認三份文件塊兩塊在同一機架上,另一份存放在其他機架上。
Hadoop fs中的-get和-put命令操作對象是
A. 文件
B. 目錄
C. 兩者都是
答案:C
知識點:HDFS命令
Namenode在啟動時自動進入安全模式,在安全模式階段,說法錯誤的是
A. 安全模式目的是在系統啟動時檢查各個DataNode上數據塊的有效性
B. 根據策略對數據塊進行必要的復制或刪除
C. 當數據塊最小百分比數滿足的最小副本數條件時,會自動退出安全模式
D. 文件系統允許有修改
答案:D
知識點:HDFS安全模式
//MapReduce
MapReduce框架提供了一種序列化鍵/值對的方法,支持這種序列化的類能夠在Map和Reduce過程中充當鍵或值,以下說法錯誤的是
A. 實現Writable接口的類是值
B. 實現WritableComparable<T>接口的類可以是值或鍵
C. Hadoop的基本類型Text並不實現WritableComparable<T>接口
D. 鍵和值的數據類型可以超出Hadoop自身支持的基本類型
答案:C
以下四個Hadoop預定義的Mapper實現類的描述錯誤的是
A. IdentityMapper<K, V>實現Mapper<K, V, K, V>,將輸入直接映射到輸出
B. InverseMapper<K, V>實現Mapper<K, V, K, V>,反轉鍵/值對
C. RegexMapper<K>實現Mapper<K, Text, Text, LongWritable>,為每個常規表達式的匹配項生成一個(match, 1)對
D. TokenCountMapper<K>實現Mapper<K, Text, Text, LongWritable>,當輸入的值為分詞時,生成(taken, 1)對
答案:B
知識點:InverseMapper<K, V>實現Mapper<K, V, V, K>
下列關於HDFS為存儲MapReduce並行切分和處理的數據做的設計,錯誤的是
A. FSDataInputStream擴展了DataInputStream以支持隨機讀
B. 為實現細粒度並行,輸入分片(Input Split)應該越小越好
C. 一台機器可能被指派從輸入文件的任意位置開始處理一個分片
D. 輸入分片是一種記錄的邏輯划分,而HDFS數據塊是對輸入數據的物理分割
答案:B
知識點:每個分片不能太小,否則啟動與停止各個分片處理所需的開銷將占很大一部分執行時間
針對每行數據內容為”Timestamp Url”的數據文件,在用JobConf對象conf設置conf.setInputFormat(WhichInputFormat.class)來讀取這個文件時,WhichInputFormat應該為以下的
A. TextInputFormat
B. KeyValueTextInputFormat
C. SequenceFileInputFormat
D. NLineInputFormat
答案:B
知識點:四項主要的InputFormat類。KeyValueTextInputFormat以每行第一個分隔符為界,分隔符前為key,之后為value,默認制表符為\t
有關MapReduce的輸入輸出,說法錯誤的是
A. 鏈接多個MapReduce作業時,序列文件是首選格式
B. FileInputFormat中實現的getSplits()可以把輸入數據划分為分片,分片數目和大小任意定義
C. 想完全禁止輸出,可以使用NullOutputFormat
D. 每個reduce需將它的輸出寫入自己的文件中,輸出無需分片
答案:B
知識點:分片數目在numSplits中限定,分片大小必須大於mapred.min.size個字節,但小於文件系統的塊
Hadoop Streaming支持腳本語言編寫簡單MapReduce程序,以下是一個例子:
bin/hadoop jar contrib/streaming/hadoop-0.20-streaming.jar
—input input/filename
—output output
—mapper ‘dosth.py 5’
—file dosth.py
—D mapred.reduce.tasks=1
以下說法不正確的是
A. Hadoop Streaming使用Unix中的流與程序交互
B. Hadoop Streaming允許我們使用任何可執行腳本語言處理數據流
C. 采用腳本語言時必須遵從UNIX的標准輸入STDIN,並輸出到STDOUT
D. Reduce沒有設定,上述命令運行會出現問題
答案:D
知識點:沒有設定特殊的reducer,默認使用IdentityReducer
在高階數據處理中,往往無法把整個流程寫在單個MapReduce作業中,下列關於鏈接MapReduce作業的說法,不正確的是
A.Job和JobControl類可以管理非線性作業之間的依賴
B.ChainMapper和ChainReducer類可以用來簡化數據預處理和后處理的構成
C.使用ChainReducer時,每個mapper和reducer對象都有一個本地JobConf對象
D.ChainReducer.addMapper()方法中,一般對鍵/值對發送設置成值傳遞,性能好且安全性高
答案:D
知識點:ChainReducer.addMapper()方法中,值傳遞安全性高,引用傳遞性能高
//源碼分析
//Zookeeper