面試常問:Hadoop

二、Hadoop

1、入門

1)常用端口號
Hadoop3.x
???? HDFS ???? 歷史服務器 ???? MapReduce????? ? ? 客戶端
???? 9870???? ? ? ? 19888? ? ? ? ? ???? 8088???? ? ?? ? ? ? 9000/8020
Hadoop2.x
???? HDFS ????
???? 50070
2)安裝配置文件
Hadoop3.x
???? core-site.xml ???? hdfs-site.xml ????mapred-site.xml ???????workers
Hadoop2.x
???? core-site.xml ???? yarn-site.xml ????mapred-site.xml ???????slaves

2、HDFS

1)讀寫流程
2)小文件問題

  • 危害

(1)占namenode元數(shù)據(jù)內(nèi)存
??????????(不管文件多小,都要占用150字節(jié))
??????????128g內(nèi)存的namenode能存儲多少個文件塊
??????????128g * 1024M * 1024 KB * 1024 字節(jié) /150 字節(jié) = 約等于9億
(2)增加切片,進而影響增加MapTask個數(shù)(默認1g),增加計算內(nèi)存

  • 優(yōu)化手段

(1)har歸檔
(2)CombineTextInputformat ????改變切片
(3)jvm重用

3)HDFS有幾個副本

3個

4)HDFS塊大小

????2.x 3.x 默認塊 128M
????本地模式 32M
????1.x 塊多大 64M
????hive的塊大小:256M
????在大廠企業(yè)塊大?。?56M
????塊大小,取決于服務器之間的傳輸速度

3、MapReduce

shuffle及其優(yōu)化: map方法之后,reduce方法之前,混洗的過程

  • Shuffleg過程及三次排序
    Map方法出來,會進入getPartition()方法進行分區(qū),然后會進入環(huán)形緩沖區(qū)(默認100M)一側(cè)存數(shù)據(jù),一側(cè)存索引,到了80%后會溢寫
    第一次排序在環(huán)形緩沖區(qū),對溢寫文件按key的索引進行快速排序,按照字典順序排序。
    第二次排序在環(huán)形緩存區(qū)溢寫進磁盤后,對所有在磁盤的文件按分區(qū)內(nèi)部進行歸并排序,按照分區(qū)寫入進磁盤,然后將磁盤的文件合并成一個最終文件。
    第三次Reduce Task拉取數(shù)據(jù)存儲到內(nèi)存,如果存不下,則放進磁盤,然后將內(nèi)存和磁盤的數(shù)據(jù)進行歸并排序,則還可以進行(第四次排序)分組。最后進入reduce方法

優(yōu)化方案

自定義分區(qū)
調(diào)整環(huán)形緩沖區(qū)大小100M->200M
增大環(huán)形緩沖區(qū)溢寫比列80%->90%或95% (從減少溢寫文件個數(shù)角度)
溢寫文件提前進行Combiner 只要不影響最終業(yè)務邏輯
在磁盤對溢寫文件進行歸并時默認歸并10個,可改成20個
Map端輸出為了減少磁盤IO采用壓縮(快,Snappy,LZO)
Reduce端輸出看需求:下一個MapReduce輸入,數(shù)據(jù)量大小,切片
Reduce端默認一次拉取5個,可以多拉一些10-20,增大reduce內(nèi)存

默認內(nèi)存及內(nèi)存優(yōu)化大小


MapReduce內(nèi)存大小及調(diào)優(yōu).png

4、Yarn

1)FIFO、容量調(diào)度器、公平調(diào)度器
2)默認哪個調(diào)度器:
????????Apache 默認容量
????????CDH 默認公平
3)FIFO調(diào)度器:
????????支持單隊列、先進先出、同一時間只有一個任務執(zhí)行。
????????并發(fā)度非常低、在企業(yè)里面不會使用。
4)容量調(diào)度器:
????????支持多隊列,由多個FIFO調(diào)度器組成,優(yōu)先滿足,先進入的任務,并發(fā)度一般
5)公平調(diào)度器:
????????支持多隊列,每個任務都公平享有資源,并發(fā)度最高
6)在企業(yè)里面怎么選擇
????????如果電腦服務器性能比較好,對并發(fā)度要求比較搞,選擇公平調(diào)度器(上市公司、大廠)
????????如果電腦服務器性能比較差,對并發(fā)度要求不是特別搞,選擇容量調(diào)度器(中小型公司)
7)在企業(yè)開發(fā)時,如何創(chuàng)建隊列
????????容量調(diào)度器默認就一個default隊列;
????????按照執(zhí)行任務的框架創(chuàng)建:hive、spark、flink
????????按照業(yè)務模塊創(chuàng)建(較多):登錄注冊模塊、訂單、物流
618降級使用 登錄注冊模塊、訂單、物流(x) 優(yōu)先保障前兩個任務
8)YARN工作機制

5、Hadoop解決數(shù)據(jù)傾斜方法

1)提前在map進行combine,減少傳輸?shù)臄?shù)據(jù)量
2)導致數(shù)據(jù)傾斜的key大量分布在不同的mapper
(1)局部聚合加全局聚合
(2)增加Reducer,提升并行度
(3)實現(xiàn)自定義分區(qū)

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容