通过本文,你将有如下收获:
- 如何根据hdfs location定位到真实DataNode上的哪个目录,再进一步定位到磁盘扇区?
- 如何模拟扇区故障。诱发HDFS的IOException?
- HDFS踢盘的优化方案。
##一、实验过程
准备工作:为了防止坏块被HDFS修复,增大每次坏块的复现时间成本,因此在上传测试文件时指定为单副本,这样弄坏这个block之后,HDFS也没法正常补充它。
- 上传文件,并指定单副本命令
hdfs dfs -D dfs.replication=1 -put testfile /user/zhanghaobo/
补充知识:设置某个目录或文件为单副本(对已经上传的不影响)
hdfs dfs -setrep -R 1 /xxx/xxx
- 使用hdfs fsck命令查看上传文件所在DataNode
hdfs fsck /user/zhanghaobo/testfile -files -blocks -locations
输出如下(隐去了公司服务器的IP地址):
BP-1950479666-x.x.x.x-1620631820311:blk_1141558067_6