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

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

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

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中,combinerpartition作用?

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

最新評論