全栈工程师开发手册 (作者:栾鹏)
架构系列文章
如果你既要增加节点,又要删除节点呢,
我推荐的顺序是:新增datanode,新增regionserver,停掉regionserver ,停掉datanode。
如果你单独的增加或者移出呢,顺序就是上面拆开的就行啦。
如果你新增机器呢,新增datanode,新增regionserver。
如果你减少机器呢,停掉regionserver ,停掉datanode。
所以演示的话呢,就来个全套,就是新增datanode,新增regionserver,停掉regionserver ,停掉datanode。
一、准备工作
新增的机器,提前安装好java,ssh免密登录,然后把好的机器上的从节点的安装包scp过来。
二、新增datanode节点
1。先把$HADOOP_HOME/etc/hadoop/slaves
和/etc/hosts
, 都加上你加上的主机名。
2。 在你本机目录下,创建dfs.data.dir里面的value值得目录,如果这个dfs.data.dir里面的value值得目录底下有东西的话,确认没用,最好删了,删了!!!!删了!!!!,不然一会你会发现,你的clusterId会发生冲突,什么storageId冲突,block pool 编号不一样,等等等等。
3。进入bin目录 执行hadoop-daemon.sh start datanode
4。hdfs dfsadmin -refreshNodes
刷新一下
5。hdfs dfsadmin -report
再查看是否添加进去了。
6。设置带宽,配置均衡器balancer,一般不在主节点上运行,以避免影响业务,可以有专门的balancer节点
hdfs dfsadmin -setBalancerBandwidth 1048576
如果某个datanode的磁盘里用率比平均水平高出5%,Blocks向其他低于平均水平的datanode中传送list
start-balancer.sh -threshold 5
7。最后再查看一下,hdfs dfsadmin -report 完成。
三、新增RegionServer节点
0。把一台好的节点上的Hbase拷贝过来(配置文件以配置好的)
1。先把$HBASE_HOME/conf/regionservers
和/etc/hosts
, 都加上你加上的主机名。
2。执行以下命令启动
hbase-daemon.sh start regionserver
3。在新的节点上进入hbase shell
然后输入balance_switch true
过一会,你就会发现regions 已经负载均衡了。
四、hbase删除regionserver节点
执行命令
graceful_stop.sh regionser(主机名)
然后启动之后,就会自动让这个机器上的region分布到其他机器上去,然后自动下线,我看网上说,还需要像上面一样,执行一遍balance_switch true,但是我发现,其实那个graceful_stop.sh regionser已经自动帮你均衡了region,所以我们去shell里执行balance_true,也可。
五、hdfs安全删除datanode节点
千万不要直接输hadoop-daemon.sh stop datanode
这样可能,可能会导致数据块的丢失,强烈不建议datanode这样退役。
然后就是在excludes里面添加你要退役的节点即可。
整个流程大体如下:
编辑hdfs-site.xml
加入以下选项:
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/hadoop/etc/hadoop/excludes</value>
</property>
然后在这个路径下面,编辑excludes,在里面加入你要退役的节点,例如加上这个hadoop-dn-2。
如果你是HA模式的话,两个NN都要加,一定要两个NN都加哦~
然后输入hdfs dfsadmin -refreshNodes (记住,不用重启,不用重启服务,也别关掉datanode !!!)
这样你就会登陆主节点的50070端口,你会发现有一个节点的状态是Decommissioned in Process 这是后你
就静静地看着他会往不均衡的节点传输Block块,等传输好了后,你就会发现状态变更为Decommissioned
这时候你就可以安全下线datanode即可。
这样就可以啦,然后你就删除了。
最后,再次提醒顺序。新增datanode,新增regionserver,停掉regionserver ,停掉datanode。切记切记,年轻人们!!!!!