hadoop基礎(chǔ)面試題有哪些

這篇文章主要為大家展示了“hadoop基礎(chǔ)面試題有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“hadoop基礎(chǔ)面試題有哪些”這篇文章吧。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的吳川網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

1 描述下mr整個(gè)過(guò)程,中間用到哪些類
Map起始階段:

使用 job.setInputFormatClass() 定義的 InputFormat ,將輸入的數(shù)據(jù)集分割成小數(shù)據(jù)塊 split,同時(shí) InputFormat 提供一個(gè) RecordReader的實(shí)現(xiàn)。一般使用的是 TextInputFormat,它提供的 RecordReader 會(huì)將文本的行號(hào)作為 Key,這一行的文本作為 Value。這就是自定義 Mapper 的輸入是 < LongWritable,Text> 的原因。 然后調(diào)用自定義 Mapper 的map方法,將一個(gè)個(gè)< LongWritable,Text>鍵值對(duì)輸入給 Mapper 的 map方法。

Map階段
shuffle階段:

將map的輸出作為reduce的輸入的過(guò)程就是shuffle了,這個(gè)是mapreduce優(yōu)化的重點(diǎn)地方。Shuffle一開始就是map階段做輸出操作,一般mapreduce計(jì)算的都是海量數(shù)據(jù),map輸出時(shí)候不可能把所有文件都放到內(nèi)存操作,因此map寫入磁盤的過(guò)程十分的復(fù)雜,更何況map輸出時(shí)候要對(duì)結(jié)果進(jìn)行排序,內(nèi)存開銷是很大的,map在做輸出時(shí)候會(huì)在內(nèi)存里開啟一個(gè)環(huán)形內(nèi)存緩沖區(qū),這個(gè)緩沖區(qū)專門用來(lái)輸出的,默認(rèn)大小是100mb,并且在配置文件里為這個(gè)緩沖區(qū)設(shè)定了一個(gè)閥值,默認(rèn)是0.80(這個(gè)大小和閥值都是可以在配置文件里進(jìn)行配置的),同時(shí)map還會(huì)為輸出操作啟動(dòng)一個(gè)守護(hù)線程,如果緩沖區(qū)的內(nèi)存達(dá)到了閥值的80%時(shí)候,這個(gè)守護(hù)線程就會(huì)把內(nèi)容寫到磁盤上,這個(gè)過(guò)程叫spill,另外的20%內(nèi)存可以繼續(xù)寫入要寫進(jìn)磁盤的數(shù)據(jù),寫入磁盤和寫入內(nèi)存操作是互不干擾的,如果緩存區(qū)被撐滿了,那么map就會(huì)阻塞寫入內(nèi)存的操作,讓寫入磁盤操作完成后再繼續(xù)執(zhí)行寫入內(nèi)存操作。在寫磁盤之前,線程首先根據(jù)數(shù)據(jù)最終要傳的reducer把數(shù)據(jù)劃分成相應(yīng)的分區(qū)(job.setPartitionerClass())。在每個(gè)分區(qū)中,后臺(tái)進(jìn)程按鍵進(jìn)行內(nèi)排序( job.setSortComparatorClass(),如果沒(méi)設(shè)置回默認(rèn)使用 Key 實(shí)現(xiàn)的 compareTo() 方法),如果我們定義了combiner函數(shù)(job.setCombinerClass()),那么排他就在排序后的輸出上運(yùn)行。每次spill操作也就是寫入磁盤操作時(shí)候就會(huì)寫一個(gè)溢出文件,也就是說(shuō)在做map輸出有幾次spill就會(huì)產(chǎn)生多少個(gè)溢出文件,等map輸出全部做完后,map還會(huì)調(diào)用combine合并這些輸出文件。

到了reduce階段就是合并map輸出文件了,Partitioner會(huì)找到對(duì)應(yīng)的map輸出文件,然后進(jìn)行復(fù)制操作,復(fù)制操作時(shí)reduce會(huì)開啟幾個(gè)復(fù)制線程,這些線程默認(rèn)個(gè)數(shù)是5個(gè),程序員也可以在配置文件更改復(fù)制線程的個(gè)數(shù),這個(gè)復(fù)制過(guò)程和map寫入磁盤過(guò)程類似,也有閥值和內(nèi)存大小,閥值一樣可以在配置文件里配置,而內(nèi)存大小是直接使用reduce的tasktracker的內(nèi)存大小,復(fù)制完所有map輸出后,reduce還會(huì)進(jìn)行排序操作和合并文件操作,這些操作完了就會(huì)進(jìn)行reduce計(jì)算了。

reduce過(guò)程中用到的類

在 Reduce 階段,reduce() 方法接受所有映射到這個(gè) Reduce 的 map 輸出后,也是會(huì)調(diào)用 job.setSortComparatorClass()方法設(shè)置的 Key 比較函數(shù)類,對(duì)所有數(shù)據(jù)進(jìn)行排序。然后開始構(gòu)造一個(gè) Key 對(duì)應(yīng)的 Value 迭代器。 這時(shí)就要用到分組,使用 job.setGroupingComparatorClass()方法設(shè)置分組函數(shù)類。只要這個(gè)比較器比較的兩個(gè) Key 相同,它們就屬于同一組,它們的 Value 放在一個(gè) Value 迭代器,而這個(gè)迭代器的 Key 使用屬于同一個(gè)組的所有Key的第一個(gè)Key。最后就是進(jìn)入 Reducer 的 reduce() 方法,reduce() 方法的輸入是所有的 Key 和它的 Value 迭代器,同樣注意輸入與輸出的類型必須與自定義的 Reducer 中聲明的一致。

數(shù)據(jù)經(jīng)過(guò)reduce處理后,通過(guò)OutPutFormat實(shí)現(xiàn)類輸出

2 hadoop各配置文件分別有什么用

3 hive添加一列語(yǔ)句怎么寫

alter table test_table add columns (d string);

4 sqoop將關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)導(dǎo)入hive命令上需要加一個(gè)什么配置

--hive-import

5 項(xiàng)目中文件怎么傳到hdfs

flume,kettle,shell腳本

7 hive某個(gè)分區(qū)文件損壞,對(duì)其他分區(qū)是否有影響

8 怎么理解hive

hive可以理解為基于hadoop的數(shù)據(jù)倉(cāng)庫(kù),他負(fù)責(zé)管理hdfs,并提供解釋器將hive sql翻譯成mr程序進(jìn)行查詢(個(gè)人理解,可自由發(fā)揮)

9 怎么理解sqoop

關(guān)系型數(shù)據(jù)庫(kù)與hdfs之間互相倒數(shù)的工具,底層用mr實(shí)現(xiàn)

以上是“hadoop基礎(chǔ)面試題有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站標(biāo)題:hadoop基礎(chǔ)面試題有哪些
本文鏈接:http://muchs.cn/article26/gjsccg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)App開發(fā)、網(wǎng)站營(yíng)銷、自適應(yīng)網(wǎng)站、網(wǎng)站排名用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)