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

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