hadoop面試記錄(一)

1 描述下mr整個過程,中間用到哪些類

Map起始階段:

使用 job.setInputFormatClass() 定義的 InputFormat 將輸入的數據集分割成小數據塊 split,同時 InputFormat 提供一個 RecordReader的實現。通常使用的是 TextInputFormat,它提供的 RecordReader 會將文本的行號做爲 Key,這一行的文本做爲 Value。這就是自定義 Mapper 的輸入是 < LongWritable,Text> 的緣由。 而後調用自定義 Mapper 的map方法,將一個個< LongWritable,Text>鍵值對輸入給 Mapper 的 map方法。程序員

Map階段
shuffle階段:

將map的輸出做爲reduce的輸入的過程就是shuffle了,這個是mapreduce優化的重點地方。Shuffle一開始就是map階段作輸出操做,通常mapreduce計算的都是海量數據,map輸出時候不可能把全部文件都放到內存操做,所以map寫入磁盤的過程十分的複雜,更況且map輸出時候要對結果進行排序,內存開銷是很大的,map在作輸出時候會在內存裏開啓一個環形內存緩衝區,這個緩衝區專門用來輸出的,默認大小是100mb,而且在配置文件裏爲這個緩衝區設定了一個閥值,默認是0.80(這個大小和閥值都是能夠在配置文件裏進行配置的),同時map還會爲輸出操做啓動一個守護線程,若是緩衝區的內存達到了閥值的80%時候,這個守護線程就會把內容寫到磁盤上,這個過程叫spill,另外的20%內存能夠繼續寫入要寫進磁盤的數據,寫入磁盤和寫入內存操做是互不干擾的,若是緩存區被撐滿了,那麼map就會阻塞寫入內存的操做,讓寫入磁盤操做完成後再繼續執行寫入內存操做。在寫磁盤以前,線程首先根據數據最終要傳的reducer把數據劃分紅相應的分區(job.setPartitionerClass())。在每一個分區中,後臺進程按鍵進行內排序 job.setSortComparatorClass(),若是沒設置回默認使用 Key 實現的 compareTo() 方法),若是咱們定義了combiner函數(job.setCombinerClass()),那麼排他就在排序後的輸出上運行。每次spill操做也就是寫入磁盤操做時候就會寫一個溢出文件,也就是說在作map輸出有幾回spill就會產生多少個溢出文件,等map輸出所有作完後,map還會調用combine合併這些輸出文件。sql

到了reduce階段就是合併map輸出文件了,Partitioner會找到對應的map輸出文件,而後進行復制操做,複製操做時reduce會開啓幾個複製線程,這些線程默認個數是5個,程序員也能夠在配置文件更改複製線程的個數,這個複製過程和map寫入磁盤過程相似,也有閥值和內存大小,閥值同樣能夠在配置文件裏配置,而內存大小是直接使用reduce的tasktracker的內存大小,複製完全部map輸出後,reduce還會進行排序操做和合並文件操做,這些操做完了就會進行reduce計算了。
shell

reduce過程當中用到的類

在 Reduce 階段,reduce() 方法接受全部映射到這個 Reduce 的 map 輸出後,也是會調用 job.setSortComparatorClass()方法設置的 Key 比較函數類,對全部數據進行排序。而後開始構造一個 Key 對應的 Value 迭代器。 這時就要用到分組,使用 job.setGroupingComparatorClass()方法設置分組函數類。只要這個比較器比較的兩個 Key 相同,它們就屬於同一組,它們的 Value 放在一個 Value 迭代器,而這個迭代器的 Key 使用屬於同一個組的全部Key的第一個Key。最後就是進入 Reducer 的 reduce() 方法,reduce() 方法的輸入是全部的 Key 和它的 Value 迭代器,一樣注意輸入與輸出的類型必須與自定義的 Reducer 中聲明的一致。數據庫

數據通過reduce處理後,經過OutPutFormat實現類輸出緩存


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

3 hive添加一列語句怎麼寫函數

alter table test_table add columns (d string);


4 sqoop將關係數據庫數據導入hive命令上須要加一個什麼配置工具

--hive-import

5 項目中文件怎麼傳到hdfsoop

flume,kettle,shell腳本優化

7 hive某個分區文件損壞,對其餘分區是否有影響

8 怎麼理解hive

hive能夠理解爲基於hadoop的數據倉庫,他負責管理hdfs,並提供解釋器將hive sql翻譯成mr程序進行查詢(我的理解,可自由發揮)

9 怎麼理解sqoop

關係型數據庫與hdfs之間互相倒數的工具,底層用mr實現

相關文章
相關標籤/搜索