hdfs是一个文件系统,有用户概念
注意
- hdfs没有相关命令和接口去创建用户
1:HDFS采用信任客户端的方式
- 默认情况使用的 操作系统提供的用户
- 也可以扩展 kerberos LDAP 继承第三方用户认证系统
- HDFS有超级用户的概念
- linux系统中超级用户:root
- hdfs系统中超级用户: 是namenode进程的启动用户
- 有权限概念
hdfs的权限是自己控制的 来自于hdfs的超级用户
一般在企业中不会用root做什么事情
- 面向操作系统 root是管理员 其他用户都叫【普通用户】
- 面向操作系统的软件 谁启动,管理这个进程,那么这个用户叫做这个软件的管理员
2:实操
我们用root搭建的HDFS 用god这个用户来启动hdfs,然后在节点上创建good这个用户进行hdfs上创建目录
报错,没权限
因为hdfs已经启动了,不知道你操作系统又偷偷摸摸创建了用户和组
默认hdfs依赖操作系统上的用户和组
但是这句话是需要重启生效的,当然你也可以在NN节点执行下述命令
hdfs dfsadmin -refreshUserToGroupsMappings
记住一定是NN节点
执行后就会发现,你可以用操作系统上的用户和组创建目录了
3:IDEA等开发工具注意点
作为开发hdfs的client
权限:
- 1)参考系统登录用户名;
- 2)参考windows环境变量;
- HADOOP_USER_NAME=god windows高级属性设置
- fs=FileSystem.get(conf)------自动读取环境变量
局部生效,但是全局不生效,如下图
也可以用Java的System.setProperty (“HADOOP_USR_NAME”, “god”);来设置hdfs超级用户
- 3)代码中给出
- fs=FileSystem.get(URI.create(“hdfs://mycluster/”),conf,user:“good”);
- jdk版本:集群和开发环境jdk版本一致~!!