從這篇開(kāi)始記錄一下集群遷移的事情
早先因?yàn)闄C(jī)房沒(méi)地方,就已經(jīng)開(kāi)始規(guī)劃集群搬機(jī)房的事情,最近終于開(kāi)始動(dòng)手了,我會(huì)把這次不停機(jī)遷移的過(guò)程遇到的主要問(wèn)題和矛盾以及各種解決方法記錄下來(lái)。
集群規(guī)模說(shuō)大不大,幾百臺(tái),總?cè)萘?0PB左右。Hadoop使用CDH 5.5.1加一些自定義patch的rpm打包編譯版本。
總的方案是集群不停機(jī),在兩個(gè)機(jī)房之間架設(shè)專(zhuān)線,舊機(jī)房decommission,拉到新機(jī)房recommission。每天不能下線太多機(jī)器,要保證計(jì)算。
新機(jī)房提前架設(shè)90臺(tái)機(jī)器,測(cè)試帶寬。帶寬的測(cè)試方式是比較簡(jiǎn)單粗暴的,就是在新機(jī)房拿幾十臺(tái)新機(jī)器搭一個(gè)集群,然后舊機(jī)房集群和新機(jī)房集群之間做distcp,帶寬能打滿(mǎn)即可。
新機(jī)房拆除小集群,合并到大集群里,機(jī)架感知按照 "/機(jī)房/機(jī)架" 這種方式劃分,然后提前做一段時(shí)間balancer。
當(dāng)然在這里面會(huì)發(fā)現(xiàn)一些問(wèn)題,我記錄在上一篇博客里了,這里再重復(fù)記錄一下。
萬(wàn)兆網(wǎng)卡的mtu問(wèn)題,新機(jī)房的新機(jī)器datanode報(bào)slow block receiver問(wèn)題,調(diào)整網(wǎng)卡mtu從1500到9000,解決。
df 命令卡死,升級(jí)systemd并重啟解決
跑作業(yè)慢,打Centos 7 CPU補(bǔ)丁 重啟
廣播風(fēng)暴問(wèn)題,流量比較大,查看網(wǎng)口每機(jī)器每秒幾百條ARP通告,目前無(wú)解,后續(xù)運(yùn)維VLAN解決。
詳情看 運(yùn)維記錄系列二十三 https://blog.51cto.com/slaytanic/2141665
期間還遇到了decommission速度慢的問(wèn)題,調(diào)整了一下dn參數(shù)dfs.datanode.max.transfer.threads到16384,然后調(diào)整NN參數(shù) dfs.namenode.replication.max-streams-hard-limit參數(shù)到8感覺(jué)也沒(méi)快多少,然后翻看源碼,在 src/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/UnderReplicatedBlocks.java 這個(gè)文件里面
public synchronized List<List<Block>> chooseUnderReplicatedBlocks( int blocksToProcess) { // initialize data structure for the return value List<List<Block>> blocksToReplicate = new ArrayList<List<Block>>(LEVEL); for (int i = 0; i < LEVEL; i++) { blocksToReplicate.add(new ArrayList<Block>()); } if (size() == 0) { // There are no blocks to collect. return blocksToReplicate; } int blockCount = 0; for (int priority = 0; priority < LEVEL; priority++) { // Go through all blocks that need replications with current priority. BlockIterator neededReplicationsIterator = iterator(priority); Integer replIndex = priorityToReplIdx.get(priority); // skip to the first unprocessed block, which is at replIndex for (int i = 0; i < replIndex && neededReplicationsIterator.hasNext(); i++) { neededReplicationsIterator.next(); } blocksToProcess = Math.min(blocksToProcess, size()); if (blockCount == blocksToProcess) { break; // break if already expected blocks are obtained } // Loop through all remaining blocks in the list. while (blockCount < blocksToProcess && neededReplicationsIterator.hasNext()) { Block block = neededReplicationsIterator.next(); blocksToReplicate.get(priority).add(block); replIndex++; blockCount++; } if (!neededReplicationsIterator.hasNext() && neededReplicationsIterator.getPriority() == LEVEL - 1) { // reset all priorities replication index to 0 because there is no // recently added blocks in any list. for (int i = 0; i < LEVEL; i++) { priorityToReplIdx.put(i, 0); } break; } priorityToReplIdx.put(priority, replIndex); } return blocksToReplicate; }
從這里獲取需要被復(fù)制的數(shù)據(jù)塊的索引,我們只需要將 Integer replIndex = proorityToReplIdx.get(priority);改為 Integer replIndex = 0;即可。
但是為了改一行代碼我還得重新編譯,就不劃算了。于是同事找了個(gè)工具叫byteman,jboss公司出品的內(nèi)存修改器,可以理解成針對(duì)Java進(jìn)行內(nèi)存修改的金山游俠。
具體修改參考同事的github,我就不重復(fù)了。不過(guò)萬(wàn)一內(nèi)存改崩潰了,本人不負(fù)任何責(zé)任。
https://github.com/whitelilis/whitelilis.github.io/issues/17
另外有需要云服務(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ù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱(chēng):Hadoop運(yùn)維記錄系列(二十四)-創(chuàng)新互聯(lián)
地址分享:http://chinadenli.net/article10/dgpcgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、面包屑導(dǎo)航、網(wǎng)站制作、App設(shè)計(jì)、商城網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容