内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Hadoop運維記錄系列(二十四)

從這篇開始記錄一下集群遷移的事情

成都創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為邵陽企業(yè)提供專業(yè)的網(wǎng)站設計、網(wǎng)站建設,邵陽網(wǎng)站改版等技術服務。擁有十余年豐富建站經驗和眾多成功案例,為您定制開發(fā)。

早先因為機房沒地方,就已經開始規(guī)劃集群搬機房的事情,最近終于開始動手了,我會把這次不停機遷移的過程遇到的主要問題和矛盾以及各種解決方法記錄下來。

集群規(guī)模說大不大,幾百臺,總容量30PB左右。Hadoop使用CDH 5.5.1加一些自定義patch的rpm打包編譯版本。

總的方案是集群不停機,在兩個機房之間架設專線,舊機房decommission,拉到新機房recommission。每天不能下線太多機器,要保證計算。

  1. 新機房提前架設90臺機器,測試帶寬。帶寬的測試方式是比較簡單粗暴的,就是在新機房拿幾十臺新機器搭一個集群,然后舊機房集群和新機房集群之間做distcp,帶寬能打滿即可。

  2. 新機房拆除小集群,合并到大集群里,機架感知按照 "/機房/機架" 這種方式劃分,然后提前做一段時間balancer。

當然在這里面會發(fā)現(xiàn)一些問題,我記錄在上一篇博客里了,這里再重復記錄一下。

  1. 萬兆網(wǎng)卡的mtu問題,新機房的新機器datanode報slow block receiver問題,調整網(wǎng)卡mtu從1500到9000,解決。

  2. df 命令卡死,升級systemd并重啟解決

  3. 跑作業(yè)慢,打Centos 7 CPU補丁 重啟

  4. 廣播風暴問題,流量比較大,查看網(wǎng)口每機器每秒幾百條ARP通告,目前無解,后續(xù)運維VLAN解決。

詳情看 運維記錄系列二十三 https://blog.51cto.com/slaytanic/2141665

期間還遇到了decommission速度慢的問題,調整了一下dn參數(shù)dfs.datanode.max.transfer.threads到16384,然后調整NN參數(shù) dfs.namenode.replication.max-streams-hard-limit參數(shù)到8感覺也沒快多少,然后翻看源碼,在 src/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/UnderReplicatedBlocks.java 這個文件里面

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;
}

從這里獲取需要被復制的數(shù)據(jù)塊的索引,我們只需要將 Integer replIndex = proorityToReplIdx.get(priority);改為 Integer replIndex = 0;即可。

但是為了改一行代碼我還得重新編譯,就不劃算了。于是同事找了個工具叫byteman,jboss公司出品的內存修改器,可以理解成針對Java進行內存修改的金山游俠。

具體修改參考同事的github,我就不重復了。不過萬一內存改崩潰了,本人不負任何責任。

https://github.com/whitelilis/whitelilis.github.io/issues/17

新聞名稱:Hadoop運維記錄系列(二十四)
本文URL:http://www.rwnh.cn/article6/ggddog.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、關鍵詞優(yōu)化、微信小程序外貿建站、建站公司、響應式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設
南宁市| 历史| 如东县| 平乡县| 仪征市| 高碑店市| 南靖县| 千阳县| 闻喜县| 济宁市| 东兰县| 宁德市| 利津县| 邮箱| 井研县| 博爱县| 绥德县| 锦州市| 六枝特区| 德保县| 咸宁市| 措勤县| 淄博市| 武乡县| 霍林郭勒市| 徐闻县| 贵溪市| 蛟河市| 固始县| 密山市| 彭山县| 玛纳斯县| 礼泉县| 乌兰察布市| 宝清县| 轮台县| 长寿区| 北碚区| 华池县| 岳阳县| 隆子县|