您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“hadoop基礎面試題有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“hadoop基礎面試題有哪些”這篇文章吧。
使用 job.setInputFormatClass() 定義的 InputFormat ,將輸入的數據集分割成小數據塊 split,同時 InputFormat 提供一個 RecordReader的實現。一般使用的是 TextInputFormat,它提供的 RecordReader 會將文本的行號作為 Key,這一行的文本作為 Value。這就是自定義 Mapper 的輸入是 < LongWritable,Text> 的原因。 然后調用自定義 Mapper 的map方法,將一個個< LongWritable,Text>鍵值對輸入給 Mapper 的 map方法。
將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合并這些輸出文件。
到了reduce階段就是合并map輸出文件了,Partitioner會找到對應的map輸出文件,然后進行復制操作,復制操作時reduce會開啟幾個復制線程,這些線程默認個數是5個,程序員也可以在配置文件更改復制線程的個數,這個復制過程和map寫入磁盤過程類似,也有閥值和內存大小,閥值一樣可以在配置文件里配置,而內存大小是直接使用reduce的tasktracker的內存大小,復制完所有map輸出后,reduce還會進行排序操作和合并文件操作,這些操作完了就會進行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各配置文件分別有什么用
3 hive添加一列語句怎么寫
alter table test_table add columns (d string);
4 sqoop將關系數據庫數據導入hive命令上需要加一個什么配置
--hive-import
5 項目中文件怎么傳到hdfs
flume,kettle,shell腳本
7 hive某個分區文件損壞,對其他分區是否有影響
否
8 怎么理解hive
hive可以理解為基于hadoop的數據倉庫,他負責管理hdfs,并提供解釋器將hive sql翻譯成mr程序進行查詢(個人理解,可自由發揮)
9 怎么理解sqoop
關系型數據庫與hdfs之間互相倒數的工具,底層用mr實現
以上是“hadoop基礎面試題有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。