欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

  發(fā)布時(shí)間:2019-12-12 14:06:05   作者:湘上孤獨(dú)   我要評(píng)論
這篇文章主要介紹了Hadoop常見面試/筆試題目與參考答案,總結(jié)分析了大數(shù)據(jù)Hadoop面試過程中常見的各種概念、原理、知識(shí)點(diǎn)問題與參考答案,需要的朋友可以參考下

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)文章

最新評(píng)論