概念
hdfs是一个文件系统
类unix、linux
有用户概念
hdfs没有相关命令和接口去创建用户
信任客户端 <- 默认情况使用的 操作系统提供的用户
扩展 kerberos LDAP 继承第三方用户认证系统
有超级用户的概念
linux系统中超级用户:root
hdfs系统中超级用户: 是namenode进程的启动用户
有权限概念
hdfs的权限是自己控制的 来自于hdfs的超级用户
实操:(一般在企业中不会用root做什么事情)
面向操作系统 root是管理员 其他用户都叫【普通用户】
面向操作系统的软件 谁启动,管理这个进程,那么这个用户叫做这个软件的管理员
实操:
切换我们用root搭建的HDFS 用god这个用户来启动
node01~node04:
*)stop-dfs.sh
1)添加用户:root
useradd god
passwd god
2)讲资源与用户绑定(a,安装部署程序;b,数据存放的目录)
chown -R god src
chown -R god /opt/bigdata/hadoop-2.6.5
chown -R god /var/bigdata/hadoop
3)切换到god去启动 start-dfs.sh < 需要免密
给god做免密
*我们是HA模式:免密的2中场景都要做的
ssh localhost >> 为了拿到生成.ssh
cd /home/god/.ssh >>>进入ssh
ssh-keygen -t dsa -P '' -f ./id_dsa >>>生成秘钥
cat id_dsa >> authorized_keys >>>>吧公钥写进
注意: .ssh 的权限应为700;authorized_keys的权限应为600
node01~node02:
node01:
ssh-copy-id -i id_dsa node01
ssh-copy-id -i id_dsa node02
ssh-copy-id -i id_dsa node03
ssh-copy-id -i id_dsa node04
node02
cd /home/god/.ssh
ssh-copy-id -i id_dsa node01
ssh-copy-id -i id_dsa node02
4)hdfs-site.xml
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/god/.ssh/id_dsa</value>
</property>
分发给node02~04
5)god ,直接启动全部组件
start-dfs.sh
如果DFSZKFfailoverController进程没有启动,则stop-dfs.sh
stop-yarn.sh后执行hdfs zkfc -formatZK
----------用户权限验证实操:
node01:
su god
hdfs dfs -mkdir /temp
hdfs dfs -chown god:ooxx /temp
hdfs dfs -chmod 770 /temp
node04:
root:
useradd good
groupadd ooxx
usermod -a -G ooxx good
id good
su good
hdfs dfs -mkdir /temp/abc <失败
hdfs groups
good: <因为hdfs已经启动了,不知道你操作系统又偷偷摸摸创建了用户和组
*node01:
root:
useradd good
groupadd ooxx
usermod -a -G ooxx good
su god
hdfs dfsadmin -refreshUserToGroupsMappings
node04:
good:
hdfs groups
good : good ooxx
结论:默认hdfs依赖操作系统上的用户和组