环境说明
9个节点,7个DataNode,每个DataNode有3块硬盘,两块是后来加的,挂载在系统所在文件系统。
hdfs-site.xml配置
结果
这样hdfs在写数据的时候就会三个目录中轮询,一般这些目录是不同的块设备,不存在的目录会被忽略掉。
建议
如果有多个磁盘不建议做raid,因为做raid会有性能损失,还会导致一个磁盘坏了,整个硬盘也不能用了,而hadoop可以规避这个问题。
遇到的问题
第一次将挂载硬盘的目录直接作为HDFS的data目录,start-all.sh之后,所有的DataNode没有启动,看日志发现是对data1和data2目录没有权限(data1和data2分别挂载着一块硬盘),但是已经将data1和data2的目录权限改成777了。
查找发现原因:data1和data2所挂载的硬盘的根目录下有lost+found这个文件夹,而这个文件的权限是root,导致在hadoop用户下启动的hadoop在扫描配置文件中配置的data目录时,发现有文件hadoop用户没有写权限,就报错,DataNode进程也没启动。
解决方法:在data1和data2目录下分别建立hdfs文件夹,将hadoop的dfs.datanode.data.dir指向hdfs文件夹。