成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

HDFS參數(shù)調(diào)優(yōu)

IT那活兒 / 1345人閱讀
HDFS參數(shù)調(diào)優(yōu)

點擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!?。?/strong> 

01


NameNode數(shù)據(jù)目錄


dfs.name.dir, dfs.namenode.name.dir
指定一個本地文件系統(tǒng)路徑,決定NN在何處存放fsimage和editlog文件。可以通過逗號分隔指定多個路徑. 目前我們的產(chǎn)線環(huán)境只配置了一個目錄,并存放在了做了RAID1或RAID5的磁盤上。

02


DataNode數(shù)據(jù)路徑


dfs.data.dir, dfs.datanode.data.dir
指定DN存放塊數(shù)據(jù)的本地盤路徑,可以通過逗號分隔指定多個路徑。在生產(chǎn)環(huán)境可能會在一個DN上掛多塊盤。

03


數(shù)據(jù)塊的副本數(shù)


dfs.replication
數(shù)據(jù)塊的副本數(shù),默認(rèn)值為3。

04


數(shù)據(jù)塊大小


dfs.block.size
HDFS數(shù)據(jù)塊的大小,默認(rèn)為128M,目前我們產(chǎn)線環(huán)境配置的是1G。

05


HDFS做均衡時使用的最大帶寬


dfs.datanode.balance.bandwidthPerSec
HDFS做均衡時使用的最大帶寬,默認(rèn)為1048576,即1MB/s,對大多數(shù)千兆甚至萬兆帶寬的集群來說過小。不過該值可以在啟動balancer腳本時再設(shè)置,可以不修改集群層面默認(rèn)值。目前目前我們產(chǎn)線環(huán)境設(shè)置的是50M/s~100M/s。

06


磁盤可損壞數(shù)


dfs.datanode.failed.volumes.tolerated
DN多少塊盤損壞后停止服務(wù),默認(rèn)為0,即一旦任何磁盤故障DN即關(guān)閉。對盤較多的集群(例如每DN12塊盤),磁盤故障是常態(tài),通??梢詫⒃撝翟O(shè)置為1或2,避免頻繁有DN下線。

07


數(shù)據(jù)傳輸連接數(shù)


dfs.datanode.max.xcievers
DataNode可以同時處理的數(shù)據(jù)傳輸連接數(shù),即指定在DataNode內(nèi)外傳輸數(shù)據(jù)使用的最大線程數(shù)。官方將該參數(shù)的命名改為dfs.datanode.max.transfer.threads,默認(rèn)值為4096,推薦值為8192,我們產(chǎn)線環(huán)境也是8192。

08


NameNode處理RPC調(diào)用的線程數(shù)


dfs.namenode.handler.count
NameNode中用于處理RPC調(diào)用的線程數(shù),默認(rèn)為10。對于較大的集群和配置較好的服務(wù)器,可適當(dāng)增加這個數(shù)值來提升NameNode RPC服務(wù)的并發(fā)度,該參數(shù)的建議值:集群的自然對數(shù) * 20。
python -c import math ; print int(math.log(N) * 20)
我們800+節(jié)點產(chǎn)線環(huán)境配置的是200~500之間。

09


NameNode處理datanode 上報數(shù)據(jù)塊和心跳的線程數(shù)


dfs.namenode.service.handler.count
用于處理datanode 上報數(shù)據(jù)塊和心跳的線程數(shù)量,與dfs.namenode.handler.count算法一致。

10


DataNode處理RPC調(diào)用的線程數(shù)


dfs.datanode.handler.count
DataNode中用于處理RPC調(diào)用的線程數(shù),默認(rèn)為3??蛇m當(dāng)增加這個數(shù)值來提升DataNode RPC服務(wù)的并發(fā)度,線程數(shù)的提高將增加DataNode的內(nèi)存需求,因此,不宜過度調(diào)整這個數(shù)值。我們產(chǎn)線環(huán)境設(shè)置的是10。

11


DataNode最大傳輸線程數(shù)


dfs.datanode.max.xcievers
最大傳輸線程數(shù) 指定在 DataNode 內(nèi)外傳輸數(shù)據(jù)使用的最大線程數(shù)。
這個值是指定 datanode 可同時處理的最大文件數(shù)量,推薦將這個值調(diào)大,默認(rèn)是256,最大值可以配置為65535,我們產(chǎn)線環(huán)境配置的是8192。

12


讀寫數(shù)據(jù)時的緩存大小


io.file.buffer.size


–設(shè)定在讀寫數(shù)據(jù)時的緩存大小,應(yīng)該為硬件分頁大小的2倍。

 我們產(chǎn)線環(huán)境設(shè)置的為65536 ( 64K) 。

13


冗余數(shù)據(jù)塊刪除

在日常維護(hù)hadoop集群的過程中發(fā)現(xiàn)這樣一種情況:
某個節(jié)點由于網(wǎng)絡(luò)故障或者DataNode進(jìn)程死亡,被NameNode判定為死亡,HDFS馬上自動開始數(shù)據(jù)塊的容錯拷貝;當(dāng)該節(jié)點重新添加到集群中時,由于該節(jié)點上的數(shù)據(jù)其實并沒有損壞,所以造成了HDFS上某些block的備份數(shù)超過了設(shè)定的備份數(shù)。
通過觀察發(fā)現(xiàn),這些多余的數(shù)據(jù)塊經(jīng)過很長的一段時間才會被完全刪除掉,那么這個時間取決于什么呢?
該時間的長短跟數(shù)據(jù)塊報告的間隔時間有關(guān)。Datanode會定期將當(dāng)前該結(jié)點上所有的BLOCK信息報告給NameNode,參數(shù)dfs.blockreport.intervalMsec就是控制這個報告間隔的參數(shù)。
hdfs-site.xml文件中有一個參數(shù):
<property>
<name>dfs.blockreport.intervalMsecname>

<value>3600000value>
<description>Determines block reporting interval in milliseconds.description>
property>
其中3600000為默認(rèn)設(shè)置,3600000毫秒,即1個小時,也就是說,塊報告的時間間隔為1個小時,所以經(jīng)過了很長時間這些多余的塊才被刪除掉。通過實際測試發(fā)現(xiàn),當(dāng)把該參數(shù)調(diào)整的稍小一點的時候(60秒),多余的數(shù)據(jù)塊確實很快就被刪除了。

14


新增塊延遲匯報
當(dāng)datanode上新寫完一個塊,默認(rèn)會立即匯報給namenode。在一個大規(guī)模Hadoop集群上,每時每刻都在寫數(shù)據(jù),datanode上隨時都會有寫完數(shù)據(jù)塊然后匯報給namenode的情況。因此namenode會頻繁處理datanode這種快匯報請求,會頻繁地持有鎖,其實非常影響其他rpc的處理和響應(yīng)時間。
通過延遲快匯報配置可以減少datanode寫完塊后的塊匯報次數(shù),提高namenode處理rpc的響應(yīng)時間和處理速度。
<property>   
<name>dfs.blockreport.incremental.intervalMsecname>
   
<value>300value>
property>
我們產(chǎn)線環(huán)境HDFS集群上此參數(shù)配置為500毫秒,就是當(dāng)datanode新寫一個塊,不是立即匯報給namenode,而是要等待500毫秒,在此時間段內(nèi)新寫的塊一次性匯報給namenode。

15


增大同時打開的文件描述符和網(wǎng)絡(luò)連接上限
使用ulimit命令將允許同時打開的文件描述符數(shù)目上限增大至一個合適的值。同時調(diào)整內(nèi)核參數(shù)net.core.somaxconn網(wǎng)絡(luò)連接數(shù)目至一個足夠大的值。
補(bǔ)充:net.core.somaxconn的作用 
net.core.somaxconn是Linux中的一個kernel參數(shù),表示socket監(jiān)聽(listen)的backlog上限。什么是backlog呢?
backlog就是socket的監(jiān)聽隊列,當(dāng)一個請求(request)尚未被處理或建立時,它會進(jìn)入backlog。而socket server可以一次性處理backlog中的所有請求,處理后的請求不再位于監(jiān)聽隊列中。當(dāng)server處理請求較慢,以至于監(jiān)聽隊列被填滿后,新來的請求會被拒絕。
在Hadoop 1.0中,參數(shù)ipc.server.listen.queue.size控制了服務(wù)端socket的監(jiān)聽隊列長度,即backlog長度,默認(rèn)值是128。而Linux的參數(shù)net.core.somaxconn默認(rèn)值同樣為128。
當(dāng)服務(wù)端繁忙時,如NameNode或JobTracker,128是遠(yuǎn)遠(yuǎn)不夠的。這樣就需要增大backlog,例如我們的集群就將ipc.server.listen.queue.size設(shè)成了32768,為了使得整個參數(shù)達(dá)到預(yù)期效果,同樣需要將kernel參數(shù)net.core.somaxconn設(shè)成一個大于等于32768的值。


END



 

本文作者:劉光肆

本文來源:IT那活兒(上海新炬王翦團(tuán)隊)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129498.html

相關(guān)文章

  • cdh調(diào)優(yōu)

      CDH(Cloudera Distribution Including Apache Hadoop)是一個用于在企業(yè)中部署和管理Apache Hadoop生態(tài)系統(tǒng)的分發(fā)版本。CDH包含了Hadoop核心組件,如HDFS、YARN和MapReduce,以及許多其他工具,如Apache Hive、Apache Pig、Apache Spark和Apache HBase?! ≡贑DH中進(jìn)行調(diào)優(yōu)的...

    白馬嘯西風(fēng) 評論0 收藏0
  • Spark面試題(七)——Spark程序開發(fā)調(diào)優(yōu)

    摘要:過程中,各個節(jié)點上的相同都會先寫入本地磁盤文件中,然后其他節(jié)點需要通過網(wǎng)絡(luò)傳輸拉取各個節(jié)點上的磁盤文件中的相同。因此在過程中,可能會發(fā)生大量的磁盤文件讀寫的操作,以及數(shù)據(jù)的網(wǎng)絡(luò)傳輸操作。Spark系列面試題 Spark面試題(一) Spark面試題(二) Spark面試題(三) Spark面試題(四) Spark面試題(五)——數(shù)據(jù)傾斜調(diào)優(yōu) Spark面試題(...

    taowen 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<