首页 > 代码库 > spark、hadoop动态增减节点

spark、hadoop动态增减节点

之前在搭建实验环境的时候按部就班的配置好,然后就启动了。后来再一琢磨,有点不对劲。分布式系统的一个优势就是动态可伸缩性,如果增删节点需要重启那肯定是不行的。后来研究了一下,发现的确是不需要重启的。仍以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,就可以原样克隆了。

本文出自 “空空如也” 博客,谢绝转载!

spark、hadoop动态增减节点