* 通过API创建目录
* 检查目录权限
* 填坑思路
* 处理方法
(一) 通过API创建目录
用JAVA代码调用HADOOP API创建目录,代码如下:
public class HdfsOps {
/**
* Public static function
*/
public static FileSystem iniConf() {
FileSystem fs = null;
try {
Configuration configuration = new Configuration();
fs = FileSystem.get(configuration);
} catch (Exception e) {
}
return fs;
}
/**
* Make dir with permission
*/
public static void MkdirHdfs() throws IOException {
Path path = new Path("/data/test");
FsPermission permission = new FsPermission(FsAction.ALL,
FsAction.ALL, FsAction.ALL); # 全部权限(777)
boolean mkdirs = iniConf().mkdirs(path, permission);
System.out.println(mkdirs);
}
public static void main(String[] args) throws Exception {
MkdirHdfs();
}
}
(二)查看目录权限
#> hdfs dfs -ls /data
会发现/data 目录下的test目录的权限是755(drwxr-xr-x), 填坑由此而来
(三) 填坑思路
查看HDFS的umask
#> hdfs getconf -confkey fs.permissions.umask-mode
打印结果是022, 缘由在此处产生(777-022=755)
(四) 处理方法
* 1.在公共方法iniConf中添加配置设置代码如下
public static FileSystem iniConf() {
FileSystem fs = null;
try {
Configuration configuration = new Configuration();
configuration.set("fs.permissions.umask-mode", "000");
fs = FileSystem.get(configuration);
} catch (Exception e) {
}
return fs;
}
* 2. 在项目根目录下创建core-site.xml文件,配置umask,配置如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.permissions.umask-mode</name>
<value>000</value>
</property>
</configuration>
热门工具 换一换