hadoop hdfs 灾备、动态扩容测试

来源:互联网 发布:淘宝直通车几心可以开 编辑:程序博客网 时间:2024/05/16 13:43

听说hadoop以灾备能力、动态扩展能力著称。我的集群部署方案见 http://blog.csdn.net/a775700879/article/details/20692259

今天做几个简单的试验:

实验一: 模拟一块硬盘突然挂掉

假设datanode的数据存储目录有两个,分别是/data1/hadoop-dn 和 /data2/hadoop-dn

我们直接强行删除掉任意一个datanode(例如node2)上的存储目录:

例如:

hadoop@node2:/data1$ rm -rf /data1/hadoop-dn/hadoop@node2:/data1$ rm -rf /data2/hadoop-dn/
然后重启node2上的datanode:

hadoop@node2:/data1$ hadoop-daemon.sh  --script hdfs stop datanode     stopping datanodehadoop@node2:/data1$ hadoop-daemon.sh  --script hdfs start datanode     starting datanode, logging to /home/hadoop/hadoop-2.3.0/logs/hadoop-hadoop-datanode-node2.out
这个时候,发现删掉的hadoop-dn目录被自动重建了。

然后 短短几秒内,数据就恢复原状了。。

这个恢复是以极限带宽进行拷贝的。


实验二:模拟要让某个节点临时退役的情况:

生产环境中,经常会遇到需要重启或者维护某个node,让他临时退役。

hadoop提供了一种优雅的方案:

$HADOOP_CONF_DIR/dfs.exclude 中配置想要退役的节点,一行一个:

hadoop@master:~/hadoop/etc/hadoop$ cat dfs.exclude node2
然后执行 

hdfs dfsadmin -refreshNodes

就可以让那个节点临时退役啦!


维护好后,把那个节点从dfs.exclude中删除,再执行

hdfs dfsadmin -refreshNodes

即可恢复那个节点


需要注意的是,namenode启动的时候,请把这个文件置为空。等启动后,再添加exclude host。再执行dfsadmin命令。这个顺序不要搞错,否则会报错。







0 0