分布式系統的一個優勢就是動態可伸縮性,如果增刪節點需要重啟那肯定是不行的。后來研究了一下,發現的確是不需要重啟集群,直接在新增的節點上分別啟動以下進程即可。
以hadoop、spark和hbase為例:
因為1.x版本和2.x版本有比較大的差異,我這里是以2.7為例。
在namenode節點上,將hadoop-2.7復制到新節點上,并在新節點上刪除data和logs目錄中的文件。
在此節點上啟動hdfs:
./sbin/hadoop-daemon.sh start datanode # (后臺模式)
或
./bin/hdfs datanode # (控制臺模式)
修改集群里機器的所有$HADOOP_HOME/etc/hadoop/slaves配置文件,添加新節點。
./bin/hdfs dfsadmin -refreshNodes
./bin/hdfs dfsadmin -report
./sbin/start-balancer.sh
如果不balance,那么cluster會把新的數據都存放在新的node上,這樣會降低工作效率:
查看hdfs節點狀態:
hdfsdfsadmin –report
1048576(=1Mb/s)
104857600(=100Mb/s)
hdfsdfsadmin -setBalancerBandwidth 104857600
#設置不同節點之間復制數據的帶寬是受限的,默認是1MB/s
start-balancer.sh -threshold 1
#設置如果某個datanode的磁盤里使用率比平均水平高出1%,Blocks向其他低于平均水平的datanode中傳送, 也就是每個節點使用率相差不超過1%。
或者:
start-balancer.sh
stop-balancer.sh
卸載節點一般不建議直接停掉,需要先將其排除在集群之外,
<property>
<name>dfs.hosts</name>
<value>.../etc/hadoop/datanode-allow.list</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>.../etc/hadoop/datanode-deny.list</value>
</property>
在datanode-deny.list中 加入要卸載的節點名稱
./bin/hdfs dfsdmin -refreshNodes # 會看到節點變成Dead和Decommissioned狀態
./sbin/hadoop-daemon.sh stop datanode
####啟動:
./sbin/yarn-daemon.sh start nodemanager # (后臺模式)
或
./bin/yarn nodemanager # (控制臺模式)
####停止:
./sbin/yarn-daemon.sh stop nodemanager
./bin/hadoop dfsadmin -safemode leave
./sbin/start-slave.sh spark://<master>:7077
就完成了新節點的注冊和加入集群。
執行jps命令,slave可以看到Worker進程
看到Workers中有新增節點
./sbin/stop-slave.sh
之后在master的管理端會顯示這個節點已經“死掉”了。然而這條信息會一直顯示到重啟master為止。
把這個節點名稱加入到$SPARK_HOME/conf/slaves文件里。
hbase-daemon.shstart regionserver
hbase-daemon.shstart zookeeper
hbase shell中輸入status
hbase shell中輸入:balance_switch true
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。