Hadoop常見面試/筆試題目與參考答案小結(jié)

1. namenode的重要性是什么?
namenode的作用在Hadoop中非常重要。它是Hadoop的大腦,主要負(fù)責(zé)管理系統(tǒng)上的分配塊,還為客戶提出請(qǐng)求時(shí)的數(shù)據(jù)提供特定地址
2. 當(dāng)NameNode關(guān)閉時(shí)會(huì)發(fā)生什么?
如果NameNode關(guān)閉,文件系統(tǒng)將脫機(jī)。
3. 是否可以在不同集群之間復(fù)制文件?如果是的話,怎么能做到這一點(diǎn)?
是的,可以在多個(gè)Hadoop集群之間復(fù)制文件,這可以使用分布式復(fù)制來完成。Distcp是一個(gè)Hadoop復(fù)制工具,主要用于執(zhí)行MapReduce作業(yè)來復(fù)制數(shù)據(jù)。 Hadoop環(huán)境中的主要挑戰(zhàn)是在各集群之間復(fù)制數(shù)據(jù),distcp也將提供多個(gè)datanode來并行復(fù)制數(shù)據(jù)。
4. 什么是檢查點(diǎn)?
對(duì)文件數(shù)據(jù)的修改不是直接寫回到磁盤的,很多操作是先緩存到內(nèi)存的Buffer中,當(dāng)遇到一個(gè)檢查點(diǎn)Checkpoint時(shí),系統(tǒng)會(huì)強(qiáng)制將內(nèi)存中的數(shù)據(jù)寫回磁盤,當(dāng)然此時(shí)才會(huì)記錄日志,從而產(chǎn)生持久的修改狀態(tài)。因此,不用重放一個(gè)編輯日志,NameNode可以直接從FsImage加載到最終的內(nèi)存狀態(tài),這肯定會(huì)降低NameNode啟動(dòng)時(shí)間
5. 什么是機(jī)架感知?
這是一種決定如何根據(jù)機(jī)架定義放置塊的方法。Hadoop將嘗試限制存在于同一機(jī)架中的datanode之間的網(wǎng)絡(luò)流量。為了提高容錯(cuò)能力,名稱節(jié)點(diǎn)會(huì)盡可能把數(shù)據(jù)塊的副本放到多個(gè)機(jī)架上。綜合考慮這兩點(diǎn)的基礎(chǔ)上Hadoop設(shè)計(jì)了機(jī)架感知功能。
6. 投機(jī)性執(zhí)行
如果一個(gè)節(jié)點(diǎn)正在執(zhí)行比主節(jié)點(diǎn)慢的任務(wù)。那么就需要在另一個(gè)節(jié)點(diǎn)上冗余地執(zhí)行同一個(gè)任務(wù)的一個(gè)實(shí)例。所以首先完成的任務(wù)會(huì)被接受,另一個(gè)可能會(huì)被殺死。這個(gè)過程被稱為“投機(jī)執(zhí)行”。
7. 是否可以在Windows上運(yùn)行Hadoop?
可以,但是最好不要這么做,Red Hat Linux或者是Ubuntu才是Hadoop的最佳操作系統(tǒng)。在Hadoop安裝中,Windows通常不會(huì)被使用,因?yàn)闀?huì)出現(xiàn)各種各樣的問題。因此,Windows絕不是Hadoop推薦系統(tǒng)。
8. 主動(dòng)和被動(dòng)“名稱節(jié)點(diǎn)”是什么?
在HA(高可用性)架構(gòu)中,我們有兩個(gè)NameNodes - Active“NameNode”和被動(dòng)“NameNode”。
活動(dòng)“NameNode”是在集群中運(yùn)行的“NameNode”。
被動(dòng)“NameNode”是一個(gè)備用的“NameNode”,與“NameNode”有著相似的數(shù)據(jù)。
當(dāng)活動(dòng)的“NameNode”失敗時(shí),被動(dòng)“NameNode”將替換群集中的活動(dòng)“NameNode”。因此,集群永遠(yuǎn)不會(huì)沒有“NameNode”,所以它永遠(yuǎn)不會(huì)失敗。
9. 如果 NameNode 意外終止,SecondaryNameNode 會(huì)接替它使集群繼續(xù)工作
錯(cuò)誤,SecondaryNameNode是幫助恢復(fù),而不是替代,如何恢復(fù),可以查看
10. Block Size 是不可以修改的
它是可以被修改的Hadoop 的基礎(chǔ)配置文件是 hadoop-default.xml,默認(rèn)建立一
個(gè) Job 的時(shí)候會(huì)建立 Job 的 Config,Config 首先讀入hadoop-default.xml 的配置,然
后再讀入 hadoop-site.xml 的配置(這個(gè)文件初始的時(shí)候配置為空),hadoop-site.xml 中主要配置需要覆蓋的hadoop-default.xml 的系統(tǒng)級(jí)配置
11. 請(qǐng)列出你所知道的hadoop調(diào)度器,并簡(jiǎn)要說明其工作方法
--1.先進(jìn)先出調(diào)度器(FIFO)
--Hadoop 中默認(rèn)的調(diào)度器,也是一種批處理調(diào)度器。它先按照作業(yè)的優(yōu)先級(jí)高低,再按照到達(dá)時(shí)間的先后選擇被執(zhí)行的作業(yè)
--2.容量調(diào)度器(Capacity Scheduler)
--支持多個(gè)隊(duì)列,每個(gè)隊(duì)列可配置一定的資源量,每個(gè)隊(duì)列采用FIFO調(diào)度策略,為了防止同一個(gè)用戶的作業(yè)獨(dú)占隊(duì)列中的資源,該調(diào)度器會(huì)對(duì)同一用戶提交的作業(yè)所占資源量進(jìn)行限定。調(diào)度時(shí),首先按以下策略選擇一個(gè)合適隊(duì)列:計(jì)算每個(gè)隊(duì)列中正在運(yùn)行的任務(wù)數(shù)與其應(yīng)該分得的計(jì)算資源之間的比值,選擇一個(gè)該比值最小的隊(duì)列;然后按以下策略選擇該隊(duì)列中一個(gè)作業(yè):按照作業(yè)優(yōu)先級(jí)和提交時(shí)間順序選擇,同時(shí)考慮用戶資源量限制和內(nèi)存限制
--3.公平調(diào)度器(Fair Scheduler)
--公平調(diào)度是一種賦予作業(yè)(job)資源的方法,它的目的是讓所有的作業(yè)隨著時(shí)間的推移,都能平均的獲取等同的共享資源。所有的 job 具有相同的資源,當(dāng)單獨(dú)一個(gè)作業(yè)在運(yùn)行時(shí),它將使用整個(gè)集群。當(dāng)有其它作業(yè)被提交上來時(shí),系統(tǒng)會(huì)將任務(wù)(task)空閑資源(container)賦給這些新的作業(yè),以使得每一個(gè)作業(yè)都大概獲取到等量的CPU時(shí)間。與Hadoop默認(rèn)調(diào)度器維護(hù)一個(gè)作業(yè)隊(duì)列不同,這個(gè)特性讓小作業(yè)在合理的時(shí)間內(nèi)完成的同時(shí)又不"餓"到消耗較長(zhǎng)時(shí)間的大作業(yè)。公平調(diào)度可以和作業(yè)優(yōu)先權(quán)搭配使用——優(yōu)先權(quán)像權(quán)重一樣用作為決定每個(gè)作業(yè)所能獲取的整體計(jì)算時(shí)間的比例。同計(jì)算能力調(diào)度器類似,支持多隊(duì)列多用戶,每個(gè)隊(duì)列中的資源量可以配置, 同一隊(duì)列中的作業(yè)公平共享隊(duì)列中所有資源。
12. 請(qǐng)簡(jiǎn)述mapreduce中,combiner,partition作用?
在MapReduce整個(gè)過程中,combiner是可有可無的,需要是自己的情況而定,如果只是單純的對(duì)map輸出的key-value進(jìn)行一個(gè)統(tǒng)計(jì),則不需要進(jìn)行combiner,combiner相當(dāng)于提前做了一個(gè)reduce的工作,減輕了reduce端的壓力,
Combiner只應(yīng)該適用于那種Reduce的輸入(key:value與輸出(key:value)類型完全一致,且不影響最終結(jié)果的場(chǎng)景。比如累加,最大值等,也可以用于過濾數(shù)據(jù),在 map端將無效的數(shù)據(jù)過濾掉。
在這些需求場(chǎng)景下,輸出的數(shù)據(jù)是可以根據(jù)key值來作合并的,合并的目的是減少輸出的數(shù)據(jù)量,減少IO的讀寫,減少網(wǎng)絡(luò)傳輸,以提高M(jìn)R的作業(yè)效率。
1.combiner的作用就是在map端對(duì)輸出先做一次合并,以減少傳輸?shù)絩educer的數(shù)據(jù)量.
2.combiner最基本是實(shí)現(xiàn)本地key的歸并,具有類似本地reduce,那么所有的結(jié)果都是reduce完成,效率會(huì)相對(duì)降低。
3.使用combiner,先完成的map會(huì)在本地聚合,提升速度.
--partition意思為分開,分區(qū)。它分割map每個(gè)節(jié)點(diǎn)的結(jié)果,按照key分別映射給不同的reduce,也是可以自定義的。其實(shí)可以理解歸類。也可以理解為根據(jù)key或value及reduce的數(shù)量來決定當(dāng)前的這對(duì)輸出數(shù)據(jù)最終應(yīng)該交由哪個(gè)reduce task處理
partition的作用就是把這些數(shù)據(jù)歸類。每個(gè)map任務(wù)會(huì)針對(duì)輸出進(jìn)行分區(qū),及對(duì)每一個(gè)reduce任務(wù)建立一個(gè)分區(qū)。劃分分區(qū)由用戶定義的partition函數(shù)控制,默認(rèn)使用哈希函數(shù)來劃分分區(qū)。
HashPartitioner是mapreduce的默認(rèn)partitioner。計(jì)算方法是
which reducer=(key.hashCode() &Integer.MAX_VALUE) % numReduceTasks,得到當(dāng)前的目的reducer
13. hadoop的優(yōu)化
1)優(yōu)化的思路可以從配置文件和系統(tǒng)以及代碼的設(shè)計(jì)思路來優(yōu)化
2)配置文件的優(yōu)化:調(diào)節(jié)適當(dāng)?shù)膮?shù),在調(diào)參數(shù)時(shí)要進(jìn)行測(cè)試
3)代碼的優(yōu)化:combiner的個(gè)數(shù)盡量與reduce的個(gè)數(shù)相同,數(shù)據(jù)的類型保持一致,可以減少拆包與封包的進(jìn)度
4)系統(tǒng)的優(yōu)化:可以設(shè)置linux系統(tǒng)打開最大的文件數(shù)預(yù)計(jì)網(wǎng)絡(luò)的帶寬MTU的配置
5)為 job 添加一個(gè) Combiner,可以大大的減少shuffer階段的maoTask拷貝過來給遠(yuǎn)程的reduce task的數(shù)據(jù)量,一般而言combiner與reduce相同。
6)在開發(fā)中盡量使用stringBuffer而不是string,string的模式是read-only的,如果對(duì)它進(jìn)行修改,會(huì)產(chǎn)生臨時(shí)的對(duì)象,二stringBuffer是可修改的,不會(huì)產(chǎn)生臨時(shí)對(duì)象。
相關(guān)文章
京東大數(shù)據(jù)方向Java實(shí)習(xí)面試經(jīng)歷簡(jiǎn)述【一面、二面】
這篇文章主要介紹了京東大數(shù)據(jù)方向Java實(shí)習(xí)面試經(jīng)歷,簡(jiǎn)單描述了京東大數(shù)據(jù)方向java面試一面與二面過程中所遇到的各種問題,需要的朋友可以參考下2019-12-10大數(shù)據(jù)爬蟲實(shí)習(xí)招聘面試題解析
這篇文章主要介紹了大數(shù)據(jù)爬蟲實(shí)習(xí)招聘面試題,總結(jié)分析了大數(shù)據(jù)爬蟲崗位招聘中的面試題及參考答案,需要的朋友可以參考下2019-11-29阿里大數(shù)據(jù)工程師面試流程與經(jīng)驗(yàn)總結(jié)
這篇文章主要介紹了阿里大數(shù)據(jù)工程師面試流程與經(jīng)驗(yàn),總結(jié)分析了阿里大數(shù)據(jù)工程師三輪面試的經(jīng)歷與相關(guān)問題注意事項(xiàng),需要的朋友可以參考下2019-11-15百度大數(shù)據(jù)實(shí)習(xí)生職位電話面試總結(jié)
這篇文章主要介紹了百度大數(shù)據(jù)實(shí)習(xí)生職位電話面試,總結(jié)分析了百度大數(shù)據(jù)實(shí)習(xí)生職位招聘電話面試過程中所遇到的各種問題與面試經(jīng)驗(yàn),需要的朋友可以參考下2019-11-07大數(shù)據(jù)spark經(jīng)典面試題目與參考答案總結(jié)
這篇文章主要介紹了大數(shù)據(jù)spark經(jīng)典面試題目,整理總結(jié)了大數(shù)據(jù)spark面試中遇到的比較經(jīng)典的簡(jiǎn)答題與選擇題,涉及spark概念、原理、配置、使用等相關(guān)知識(shí)點(diǎn),需要的朋友可以參2019-10-24大數(shù)據(jù)相關(guān)常見面試題與答案整理
這篇文章主要介紹了大數(shù)據(jù)相關(guān)常見面試題與答案,總結(jié)分析了大數(shù)據(jù)相關(guān)的概念、技術(shù)、原理,需要的朋友可以參考下2019-10-21- 這篇文章主要介紹了大數(shù)據(jù)spark精華面試題與參考答案,整理總結(jié)了大數(shù)據(jù)spark面試中經(jīng)常遇到的各類問題、概念與知識(shí)點(diǎn),需要的朋友可以參考下2019-10-15
- 這篇文章主要介紹了大數(shù)據(jù)工程師面試題與參考答案,總結(jié)整理了大數(shù)據(jù)相關(guān)的基本概念、原理、知識(shí)點(diǎn)與注意事項(xiàng),需要的朋友可以參考下2019-09-16
大數(shù)據(jù)基礎(chǔ)面試題考點(diǎn)與知識(shí)點(diǎn)整理
這篇文章主要介紹了大數(shù)據(jù)基礎(chǔ)面試題考點(diǎn)與知識(shí)點(diǎn),總結(jié)整理了大數(shù)據(jù)常見的各種知識(shí)點(diǎn)、難點(diǎn)、考點(diǎn)以及相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-09-09BAT面試中的大數(shù)據(jù)相關(guān)問題筆記
這篇文章主要介紹了BAT面試中的大數(shù)據(jù)相關(guān)問題,涉及大數(shù)據(jù)相關(guān)的概念、原理、知識(shí)點(diǎn)與算法等問題,需要的朋友可以參考下2019-08-30