熱線電話:13121318867

登錄
首頁精彩閱讀面試hadoop可能被問到的問題,附部分參考答案
面試hadoop可能被問到的問題,附部分參考答案
2015-03-25
收藏

面試hadoop可能被問到的問題,附部分參考答案


盡信書不如無書,盡信答案不如無答案,下面只供參考:

一、hadoop運行的原理?

hadoop主要由三方面組成:
1、HDFS
2、MapReduce
3、Hbase

Hadoop框架中最核心的設計就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇論文所提及而被廣為流傳的, 簡單的一句話解釋MapReduce就是“任務的分解與結果的匯總”。HDFSHadoop分布式文件系統(Hadoop Distributed File System)的縮寫 ,為分布式計算存儲提供了底層支持。

MapReduce從它名字上來看就大致可以看出個緣由,兩個動詞Map和Reduce,“Map(展開)”就是將一個任務分解成為多個任 務,“Reduce”就是將分解后多任務處理的結果匯總起來,得出最后的分析結果。這不是什么新思想,其實在前面提到的多線程,多任務的設計就可以找到這種思想的影子。

不論是現實社會,還是在程序設計中,一項工作往往可以被拆分成為多個任務,任務之間的關系可以分為兩種:一種是不相關的任務,可以并行執 行;另一種是任務之間有相互的依賴,先后順序不能夠顛倒,這類任務是無法并行處理的?;氐酱髮W時期,教授上課時讓大家去分析關鍵路徑,無非就是找最省時的 任務分解執行方式。在分布式系統中,機器集群就可以看作硬件資源池,將并行的任務拆分,然后交由每一個空閑機器資源去處理,能夠極大地提高計算效率,同時 這種資源無關性,對于計算集群的擴展無疑提供了最好的設計保證。(其實我一直認為Hadoop的卡通圖標不應該是一個小象,應該是螞蟻,分布式計算就好比 螞蟻吃大象,廉價的機器群可以匹敵任何高性能的計算機,縱向擴展的曲線始終敵不過橫向擴展的斜線)。任務分解處理以后,那就需要將處理以后的結果再匯總起 來,這就是Reduce要做的工作。

2、mapreduce的原理?

Hadoop中的MapReduce是一個使用簡易的軟件框架,基于它寫出來的應用程序能夠運行在由上千個商用機器組成的大型集群上,并以一種可靠容錯的式并 行處理上T級別的數據集。

一個MapReduce作業(job)通常會把輸入的數據集切分為若干獨立的數據塊,由map任務(task)以完全并行的方式處理它們??蚣軙ap的輸出先進行排序,然后把結果輸入給reduce任務。通常作業的輸入和輸出都會被存儲在文件系統中。整個框架負責任務的調度和監控,以及重新執行已經失敗的任務。

通常,MapReduce框架和分布式文件系統是運行在一組相同的節點上的,也就是說,計算節點和存儲節點通常在一起。這種配置允許框架在那些已經存好數據的節點上高效地調度任務,這可以使整個集群的網絡帶寬被非常高效地利用。

MapReduce框架由一個單獨的master JobTracker和每個集群節點一個slave TaskTracker共同組成。master負責調度構成一個作業的所有任務,這些任務分布在不同的slave上,master監控它們的執行,重新執行已經失敗的任務。而slave僅負責執行由master指派的任務

3、HDFS存儲的機制?

HDFS的三個實體

數據塊

每個磁盤都有默認的數據塊大小,這是磁盤進行讀寫的基本單位.構建于單個磁盤之上的文件系統通過磁盤塊來管理該文件系統中的塊.該文件系統中的塊一般為磁盤塊的整數倍.磁盤塊一般為512字節.HDFS也有塊的概念,默認為64MB(一個map處理的數據大小).HDFS上的文件也被劃分為塊大小的多個分塊,與其他文件系統不同的是,HDFS中小于一個塊大小的文件不會占據整個塊的空間.

HDFS用塊存儲帶來的第一個明顯的好處一個文件的大小可以大于網絡中任意一個磁盤的容量,數據塊可以利用磁盤中任意一個磁盤進行存儲.第二個簡化了系統的設計,將控制單元設置為塊,可簡化存儲管理,計算單個磁盤能存儲多少塊就相對容易.同時也消除了對元數據的顧慮,如權限信息,可以由其他系統單獨管理.

DataNode節點

DataNode是HDFS文件系統的工作節點,它們根據需要存儲并檢索數據塊,受NameNode節點調度.并且定期向NameNode發送它們所存儲的塊的列表

NameNode節點

NameNode管理HDFS文件系統的命名空間,它維護著文件系統樹及整棵樹的所有的文件及目錄.這些文件以兩個文件形式永久保存在本地磁盤上(命名空間鏡像文件和編輯日志文件).NameNode記錄著每個文件中各個塊所在的數據節點信息但并不永久保存這些塊的位置信息,因為這些信息在系統啟動時由數據節點重建.

沒有NameNode,文件系統將無法使用.如提供NameNode服務的機器損壞,文件系統上的所有文件丟失,我們就不能根據DataNode的塊來重建文件.因此,對NameNode的容錯非常重要.第一種機制,備份那些組成文件系統元數據持久狀態的文件.通過配置使NameNode在多個文件系統上保存元數據的持久狀態或將數據寫入本地磁盤的同時,寫入一個遠程掛載的網絡文件系統.當然這些操作都是原子操作.第二種機制是運行一個輔助的NameNode,它會保存合并后的命名空間鏡像的副本,并在Name/Node發生故障時啟用.但是輔助NameNode保存.態總是滯后于主力節點,所以在主節點全部失效后難免丟失數據.在這種情況下,一般把存儲在遠程掛載的網絡文件系統的數據復制到輔助NameNode并作為新的主NameNode運行

四、舉一個簡單的例子說明mapreduce是怎么來運行的 ?

五、面試的人給你出一些問題,讓你用mapreduce來實現?

比如:現在有10個文件夾,每個文件夾都有1000000個url.現在讓你找出top1000000url。

六、hadoop中Combiner的作用?

1、combiner最基本是實現本地key的聚合,對map輸出的key排序,value進行迭代。如下所示:

map: (K1, V1) → list(K2, V2)
combine: (K2, list(V2)) → list(K2, V2)
reduce: (K2, list(V2)) → list(K3, V3)

2、combiner還具有類似本地的reduce功能.

例如hadoop自帶的wordcount的例子和找出value的最大值的程序,combiner和reduce完全一致。如下所示:

map: (K1, V1) → list(K2, V2)
combine: (K2, list(V2)) → list(K3, V3)
reduce: (K3, list(V3)) → list(K4, V4)

3、如果不用combiner,那么,所有的結果都是reduce完成,效率會相對低下。使用combiner,先完成的map會在本地聚合,提升速度。

4、對于hadoop自帶的wordcount的例子,value就是一個疊加的數字,所以map一結束就可以進行reduce的value疊加,而不必要等到所有的map結束再去進行reduce的value疊加。

combiner使用的合適,可以在滿足業務的情況下提升job的速度,如果不合適,則將導致輸出的結果不正確。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢