之前在搭建實驗環境的時候按部就班的配置好,然後就啓動了。後來再一琢磨,有點不對勁。分佈式系統的一個優勢就是動態可伸縮性,如果增刪節點需要重啓那肯定是不行的。後來研究了一下,發現的確是不需要重啓的。仍以spark和hadoop爲例:
對於spark來說很簡單,增加一個節點就是命令啓動: ./sbin/start-slave.sh spark://<master>:7077 ,就完成了新節點的註冊和加入集羣。停止的時候是: ./sbin/stop-slave.sh。之後在master的管理端會顯示這個節點已經“死掉”了。然而這條信息會一直顯示到重啓master爲止。如果希望下次自動啓動這個新節點,把這個節點名稱加入到conf/slaves文件裏。
對於hadoop來說略複雜一點,因爲1.x版本和2.x版本有比較大的差異,不少教程說的還是1.x版本的做法,我這裏是以2.7爲例。
增加hdfs數據節點
在此節點上啓動hdfs:./sbin/hadoop-daemon.sh start datanode(後臺模式) 或./bin/hdfs datanode(控制檯模式),如果希望下次自動啓動,修改集羣裏機器的所有slaves配置文件
刷新節點信息:
./bin/hdfs dfsdmin -refreshNodes
啓動後可以均衡數據,使用命令
./sbin/start-balancer.sh
卸載節點
卸載節點一般不建議直接停掉,需要先將其排除在集羣之外,編輯配置文件:etc/hadoop/hdfs-core.xml
<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
增減任務節點在2.x版本里貌似和spark一樣,不用再麻煩的設置了:啓動:
./sbin/yarn-daemon.sh start nodemanager(後臺模式) 或./bin/yarn nodemanager(控制檯模式)
停止:
./sbin/yarn-daemon.sh stop nodemanager
題外話,以前習慣用virtualbox的 vboxmanage clonehd命令克隆磁盤在增加新虛擬機,後來發現這樣的克隆是初始的硬盤狀態,一旦做過snapshot,就不能把後續的狀態克隆進去,這就不方便了。所以改用vboxmanage clonevm <old_vm> --name <new_vm> --mode all,就可以原樣克隆了。