Hadoop維護(hù)實(shí)戰(zhàn) 設(shè)置hdfs副本數(shù) dfs.replication
有個(gè)臨時(shí)應(yīng)用,使用臨時(shí)調(diào)配的機(jī)器,機(jī)器磁盤差別數(shù)十倍。
在使用hadoop存儲(chǔ)數(shù)據(jù)時(shí)導(dǎo)致小磁盤機(jī)器使用率達(dá)80%多,而大磁盤機(jī)器使用不過(guò)才10%多一點(diǎn)。
明顯的hadoop集群各datanode空間使用率很不均衡,需要重新balance。于是想到了hdfs的均衡器balancer。
sbin/start-balancer.sh -threshold 10
但是在執(zhí)行hdfs的balancer時(shí)會(huì)自動(dòng)退出,不執(zhí)行,也沒(méi)有發(fā)現(xiàn)Error或者Warning。
但在out文件中可以看到一些信息:
balancer已經(jīng)計(jì)算出要移動(dòng)的數(shù)據(jù)量,但是就是沒(méi)有移動(dòng),只是提示:
No block has been moved for 5 iterations. Exiting...
原來(lái)hadoop balancer在進(jìn)行轉(zhuǎn)移block的時(shí)候是會(huì)判斷的:
* <p>The balancer automatically exits when any of the following five
* conditions is satisfied:
* <ol>
* <li>The cluster is balanced;
* <li>No block can be moved;
* <li>No block has been moved for five consecutive(連續(xù)) iterations;
* <li>An IOException occurs while communicating with the namenode;
* <li>Another balancer is running.
* </ol>
* 下面5種情況會(huì)導(dǎo)致Balance操作的失敗
* 1、整個(gè)集群已經(jīng)達(dá)到平衡狀態(tài)
* 2、經(jīng)過(guò)計(jì)算發(fā)現(xiàn)沒(méi)有可以被移動(dòng)的block塊
* 3、在連續(xù)5次的迭代中,沒(méi)有block塊被移動(dòng)
* 4、當(dāng)datanode節(jié)點(diǎn)與namenode節(jié)點(diǎn)通信的時(shí)候,發(fā)生IO異常
* 5、已經(jīng)存在一個(gè)Balance操作
顯然是第三點(diǎn)問(wèn)題了,log里顯示執(zhí)行了5次迭代但都每移動(dòng),應(yīng)該是多副本的原因,迭代的block在大磁盤機(jī)器上都已經(jīng)存在,那邊都已經(jīng)存在了,所以balancer移動(dòng)進(jìn)程就退出了。
不能執(zhí)行均衡器了,那只有減少副本數(shù)了。
修改hdfs的副本數(shù),首先想到的是修改hdfs-site.xml中的dfs.replication參數(shù),默認(rèn)為3,開(kāi)始時(shí)設(shè)置成了2,現(xiàn)在索性修改為1,然后重啟datanode命令:sbin/hadoop-daemon.sh start datanode
但似乎沒(méi)有起作用,數(shù)據(jù)量沒(méi)有變化,按理說(shuō)應(yīng)該大量數(shù)據(jù)減少才對(duì)啊。這又是為什么呢?
首先 dfs.replication這個(gè)參數(shù)是個(gè)client參數(shù),即node level參數(shù)。需要在每臺(tái)datanode上設(shè)置。
一個(gè)文件,上傳到hdfs上時(shí)指定的是幾個(gè)副本就是幾個(gè)。以后你修改了副本數(shù),對(duì)已經(jīng)上傳了的文件也不會(huì)起作用。可以在上傳文件的同時(shí)指定創(chuàng)建的副本數(shù)。
如果你只有3個(gè)datanode,但是你卻指定副本數(shù)為4,是不會(huì)生效的,因?yàn)槊總€(gè)datanode上只能存放一個(gè)副本。
啊,原來(lái)是這樣,那就看下現(xiàn)在HDFS的副本數(shù),并把它們都修改執(zhí)行下,是不是有相應(yīng)的hadoop shell命令呢?
Hadoop Commands和FileSystem Shell
http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/CommandsManual.html
http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/FileSystemShell.html
執(zhí)行 hadoop fsck / 查看整個(gè)目錄的備份數(shù)分布,輸出結(jié)果如下:
Default replication factor 2
Average block replication 2.38
修改hdfs文件備份系數(shù):hadoop dfs -setrep [-R] <path> 如果有-R將修改子目錄文件的性質(zhì)。
hadoop dfs -setrep -w 1 -R /user/hadoop/dir1 就是把目錄下所有文件備份系數(shù)設(shè)置為1.
這個(gè)需要一些時(shí)間,感覺(jué)會(huì)掃描所有指定目錄下的文件。
修改完已經(jīng)存儲(chǔ)的文件后,記得要修改以后放入的數(shù)據(jù)副本數(shù),這個(gè)就要看client端了,如果client端有設(shè)置,一定要修改。
上面的都執(zhí)行后如果還是不均衡,此時(shí)可以再執(zhí)行hdfs的均衡器balancer。
個(gè)人感覺(jué)以上的只是出現(xiàn)問(wèn)題時(shí)的一個(gè)解決方案,期望不要出現(xiàn)這樣的問(wèn)題,畢竟數(shù)據(jù)量大了操作會(huì)有很大的影響的。
我們應(yīng)該對(duì)dfs.replication的數(shù)值做出很好的規(guī)劃,盡量避免需要降低該數(shù)值的情況出現(xiàn)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前文章:Hadoop維護(hù)實(shí)戰(zhàn)-設(shè)置hdfs副本數(shù)dfs.replication-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://chinadenli.net/article10/decpgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、軟件開(kāi)發(fā)、響應(yīng)式網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站策劃、App開(kāi)發(fā)
聲明:本網(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)
猜你還喜歡下面的內(nèi)容