Hadoop的全分佈式安裝網上也不少教程,踩過不少坑,整理不出來了……趕忙把增長刪除節點留住。
(1)設置數據傳輸帶寬爲64M(默認值比較低)node
hdfs dfsadmin -setBalancerBandwidth 67108864web
(2)平衡數據,默認balancer的threshold爲10%,即各個節點存儲使用率誤差不超過10%,咱們可將其設置爲1%(1~100)app
./sbin/start-balancer.sh -threshold 1ssh
或者hdfs balancer -threshold 1(顯示平衡過程)分佈式
從hadoop的web頁面能夠觀察到各個節點的存儲使用率更接近了oop
已有CentOS 7的虛擬機node00(namenode)、node01(datanode)、node02(datanode),虛擬機上都有JDK1.8.0_45,Hadoop-2.6.5。準備一個新的虛擬機node03(datanode)。spa
爲了方便,選擇克隆虛擬機node02,克隆後修改新虛擬機node03的配置:3d
(1)刪除logs和core-site.xml配置文件中hadoop.tmp.dir的目錄xml
rm -rf /usr/local/hadoop-2.6.5/logs/*.*blog
rm -rf /usr/local/hadoop-2.6.5/tmp/*
(2)刪除hdfs-site.xml配置文件中datanode.data.dir目錄
rm -rf /app/hadoop/data/*
(3)修改主機名、IP地址
vi /etc/sysconfig/network
vi /etc/sysconfig/network-scripts/ifcfg-ens33
而後修改全部虛擬機的配置(加上新節點):
(1)/etc/hosts
(2)Slaves
設置無密碼訪問node03(在node00生成密鑰並分發給其餘虛擬機)
ssh-keygen -t rsa
scp -p ~/.ssh/id_rsa.pub node01@192.168.59.254:/root/.ssh/authorized_keys
scp -p ~/.ssh/id_rsa.pub node02@192.168.59.253:/root/.ssh/authorized_keys
scp -p ~/.ssh/id_rsa.pub node03@192.168.59.252:/root/.ssh/authorized_keys
啓動node03的datanode和nodemanager
hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager
刷新hadoop 的web頁面便可看的新的節點。若是原節點中有數據,會自動分給新節點必定量的數據
在namenode中打開hdfs-site.xml,設置節點排除文件的位置(絕對路徑)
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop-2.6.5/etc/hadoop/excludes</value>
</property>
在路徑中新建文件excludes,並在文件中添加要排除的節點主機名
在namenode中強制從新加載配置
hdfs dfsadmin -refreshNodes
在hadoop的web頁面上看到該節點變成Decommission,此時namenode會檢查並將數據複製到其它節點上以恢復副本數(要移除的節點上的數據不會被刪除,若是數據比較敏感,要手動刪除它們)。
經過命令也能夠查看狀態:
hdfs dfsadmin -report
等狀態變成Decommissioned後就能夠關閉該節點
hadoop-daemon.sh stop datanode
幾分鐘後,節點將從Decommissioned進入Dead狀態。
最後更新集羣配置,從namenode的excludes文件及slaves文件、hosts文件中去掉已經移除的主機名,在全部DataNode上執行hadoop-pull.sh腳本,同步配置。
刪除的節點能夠清空數據從新使用
rm -rf /usr/local/hadoop-2.6.5/logs/*.*
rm -rf /usr/local/hadoop-2.6.5/tmp/*
rm -rf /app/hadoop/data/*
原始數據分佈
自動備份中
自動備份後
刪除節點後