开发者学堂课程【快速掌握 Hadoop 集成 Kerberos 安全技术:配置 HDFS-创建 Kerberos 对应的账户设置 Keytab 文件】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/708/detail/12561
配置 HDFS-创建 Kerberos 对应的账户设置 Keytab 文件
内容介绍:
一、添加用户
二、配置 HDFS 相关的 Kerberos 账户
三、创建数据目录
一、添加用户
Groupadd hadoop;useradd hdfs-g hadoop-p hdfs;useradd hive-
-g hadoop-p hive;useradd yarn-g hadoop-yarn;useradd mapred -g hadoop -p mapred
语句已经执行,跑一遍确保没问题,执行,提示创建好。
[root@cdh0~]#groupadd hadoop;useradd hdfs-g hadoo p- phdfs
useradd hive-g hadoop-p hive;useradd yarn-g hadoop-p yarn;us
eradd mapred-g hadoop-p mapred groupadd: group 'hadoop’al
ready exists
useradd: user 'hdfs’ already exists
useradd: user 'hive' already exists
useradd: user 'yarn’ already exists
useradd: user 'mapred’already exists
[root@cdh0 ~]#
ch0 cdh1 cdh2 均执行
二、配置 HDFS 相关的 Kerberos 账户
namenode 指定 nn/cdh0.itcast.cn@ITCAST.CN 账户,如果想要启动namenode 就必须拿到账户对应的车票。
1.在每个节点执行 mkdir /etc/security/keytabs
每个节点创建 mkdir /etc/security/keytabs 文件夹,进行 e
tc/security/keytabs,为空。keytabs 表示免密登录的文件,拿到 keytabs 文件相当于通行证。
[root@cdh0~]#mkdir/etc/security/keytabs
[root@cdh0 ~]#cd /etc/secur
securetty security/
[root@cdh0~]#cd/etc/security/keytabs/
[root@cdh0 keytabs]#11
total 0
执行 kinit 想拿到 test/admin@ITCAST.CN 账户车票,回车需要输入密码才能拿到账户车票。有 keytabs 文件后输入 kinit-kt xxx.keytabs 加账户名,不需要输入密码,keytabs 文件将密码输入。
[root@cdh0 keytabs]#kinit test/admin@ITCAST.CN
Password for test/admin@ITCAST.CN:
[root@cdh0 keytabs]#kinit-kt xxx.keytab test/admin@ITCAST.CN
kinit:Keytable file'xxx.keytab’not found while getting initial credentials
启用 namenode 需要使用 nn/cdh0.it.cast.cn@ITCAST.CN
如果过期需要重新拿车票,没有给免密码的 keytable 文件,需要人工输入密码,人不在电脑前不能输入密码,无法工作。所以需要自动完成工作,设置 keytable 文件,不需要输入密码就能认证账户,此文件至关重要,不能轻易传给他人。
2.配置 cdh0上面运行的服务对应的 Kerberos 账户
进入 admin 管理界面,当前认证 test/admin 账户属于 admin 账户,使用 test/admin@ITCAST.CN 可进入admin 后台。Kadmin 回车,输入密码,进入 Kerberos 的 admin后台。
Default principal:test/admin@ITCAST.CN
Valid starting Expires Service principal
09/27/19 17:43:4609/28/19 17:43:46 krbtgt/ITCAST.CN@ITCAST.C
N
renew until 09/27/19 17:43:46
[root@cdh0 keytabs]# kadmin
Authenticating as principal test/admin@ITCASTCN with password
Password for test/admin@ITCAST.CN:
cdh0 运行 namenode、secondarynamenode、https 相关服务,比如 namenode 浏览器页面需要 https 托管,需要创建三个账户。
创建 namenode 的账户,randkey 不指定密码,系统随机创建密码,输入addprinc
-randkey nn/cdh0itcast.cn@ITCAS
,回车。
提示账户创建成功
kadmin: addprics -randkeynn/cdh0.itcast.cn@ITCAST.CN
kadmin:Unknown request"addprics".Type "?" for a request list.
kadmin: addprinc -randkeynn/cdh0.itcast.cn@ITCAST.CN
WARNING:no policy specified for nn/cdh0.itcast.cn@ITCAST.CN; de
faulting to no policy
Principal “nn/cdh0.itcast.cn@ITCAST.CN"created.
kadmin: addprinc -randkeynn/cdh0.itcast.cn@ITCAST.CN
创建 secondarynamenode 的账户
输入 addprinc
-randkey rm/cdh0.itcast.cn@ITCAST.CN
回车。
kadmin: addprics -randkeyrm/cdh0.itcast.cn@ITCAST.CN
kadmin:Unknown request"addprics".Type "?" for a request list.
kadmin: addprinc -randkeyrm/cdh0.itcast.cn@ITCAST.CN
WARNING:no policy specified for rm/cdh0.itcast.cn@ITCAST.CN; de
faulting to no policy
Principal “rm/cdh0.itcast.cn@ITCAST.CN"created.
kadmin: addprinc -randkeyrm/cdh0.itcast.cn@ITCAST.CN
创建用于 https 服务的相关账户
addprinc -randkey HTTP/cdh0.itcastcnITCAST.CN
kadmin:addprinc-randkeyHTTP/cdh0.itcast.cn@ITCAST.CN
WARNING:nopolicy specified for HTTP/cdh0.itcast.cn@ITC
AST.CN;defaulting to no policy
Principal “HTTP/cdh0.itcast.cn@ITCAST.CN"created.
# 防止启动或者操作的过程中需要输入密码,创建免密登录的 kevtab 文件
# 创建 nn 账户的 keytab
使用 ktadd 命令,指定参数-k,输入 etc/security/keytabs/nn.servic
e.keytab, keytab
对应 nn/cdh0.itcast.cn@ITCAST
.CN 账户,给此账户创建 keytab 文件。回车,没有报错创建成功。
ktadd-k/etc/security/keytabs/nn.service.keytab
nn/cdh0.itcast.cn
@ITCAST.CN
# 创建 rm 账户的keytab
ktadd-k/etc/security/keytabs/sn.service keytab rm/cdh0.itcast.cn
@ITCAST.CN
#创建 HTTP 账户的 keytab
创建文件名回车
ktadd-k/etc/security/keytabs/spnego.service keytab HTTP
/cdh0.itcast.cn@ITCAST.CN
退出 admin,在 /etc/security/keytabs 目录下
三个 keytab 创建成功最终得到:
-r--------1root root 406 Sep 27 17:48 nn.service.keytab
-r--------1 root root 406 Sep 27 17:48 rm.service.keytab
-r--------1root root 418 Sep 27 17:48 spnego.service.keytab
设置对应权限,namenode 需要使用 nn,hdfs 账户,为了别的账户可以读取设置权限 chmod 400,400权限是只允许本账户读取,其它用户没有任何权限。
[root@cdh0 keytabs]#chmod 400*
[root@cdh0 keytabs]#11
total 12
-r--------1root root 406 Sep 27 17:48 nn.service.keytab
-r--------1 root root 406 Sep 27 17:48 rm.service.keytab
-r--------1root root 418 Sep 27 17:48 spnego.service.keytab
修改权限后修改所属,nn 属于 hdfs、rm 属于 yarn、spnego 属于 hdfs。
[root@cdh0 keytabs]#chown hdfs:hadoop nn.service.keytab
[root@cdh0 keytabs]#chown yarn:hadoop rm.service.keytab
[root@cdh0 keytabs]#chown hdfs:hadoop spnego.service.keytab
[root@cdh0 keytabs]#11
total 12
r--------1hdfs hadoop 406 Sep 2717:48 nn.service.keytab
r--------1yarn hadoop 406 Sep 27 17:48 rm.service.keytab
r--------1hdfs hadoop 418 Sep 2717:48 spnego.service.keytab
spnego.service.keytab 400有问题,除了 namenode、data
node 使用 http 服务,resourcemanager 也需要读取文件。400权限说明只有 hdfs 账户才能访问文件,yarm、hdfs 都属于 hadoop 组,给组权限。
[root@cdh0 keytabs]#chmod 440 spnego.service keytab
[root@cdh0 keytabs]#11
total 12
r--------1hdfs hadoop 406 Sep 2717:48 nn.service.keytab
r--------1yarn hadoop 406 Sep 27 17:48 rm.service.keytab
r--r------1hdfs hadoop 418 Sep 2717:48 spnego.service.keytab
cdh0 配置完毕,cdh0运行 namenode、resourcemanager、http 三个服务。
3.配置 cdh1和 cdh2
cdh1和 cdh2 作为 hadoop 集群的节点,运行 datanode、nodemanager 服务,http ,datanode、nodemanager 有自己的管理界面,需要三个文件三个账户,执行。
klist 已经注册 test/admin@ITCAST.CN,直接执行 kadmin,输入 admin 密码进入后台。添加账户 addprinc-randkey,指定账户名 dn,randkey 表示随机密码。回车,账户创建完成。
[root@cdh1~]#datanode nodemanager http^c
[root@cdh1 ~]#[root@cdh1 ~]#
[root@cdh1 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal:test/admin@ITCAST.CN
Valid starting Expires Service principal
09/27/19 17:33:52 09/28/1917:33:52 krbtgt/ITCAST.CN@ITCAST.C
N
renew until 09/27/19 17:33:52
[root@cdh1 ~]# kadmin
Authenticating as principal test/admin@ITCAST.CN with password.
Password for test/admin@ITCAST.CN:
kadmin: addprinc -randkey dn/
WARNING:no policy specified for dn/@ITCAST.CN; defaulting to nopolicy
Principal"dn/@ITCAST.CN"created.
kadmin: addprinc -randkey dn/cdh1.itcast.cn@ITCAST.CN
WARNING:no policy specified for dn/cdh1.itcast.cn@ITCAST.CN; defaulting to no policy
Principal"dn/cdh1.itcast.cn@ITCAST.CN"created.nm
回车,http 账户,回车。
kadmin: addprinc -randkeynm/cdh1.itcast.cn@ITCAST.CN
WARNING:no policy specified for nm/cdh1.itcast.cn@ITCAST.CN; defaulting to no policy
Principal "nm/cdh1.itcast.cn@ITCAST.CN"created.
kadmin:addprinc-randkeyHTTP/cdh1.itcast.cn@ITCAST.CN
WARNING:no policy specified for HTTP/cdh1.itcast.cn@ITCAST.CN:defaulting to no policy
Principal“HTTP/cdh1.itcast.cn@ITCAST.CN"created.
指定 ktadd -k 参数,etc
/security/keytabs/dn.service.keyta
b
dn/cdh1.itcast.cn@ITCAST.CN
回车
kadmin:ktadd-k/etc/security/keytabs/dn.service.keytab
dn/cdh1.i
tcast.cn@ITCAST.CN
nm 对应 keytab 文件
kadmin:ktadd-k/etc/security/keytabs/nm.service.keytabnm/cdh1
.itcast.cn@ITCAST.CN
HTTP 对应文件名
kadmin:ktadd-k/etc/security/keytabs/spnego.service.keytab HTT
P/cdh1.itcast.cn@ITCAST.CN
退出查看 /etc/security/keytabs/
-rw--------1root root 406 Sep 27 17:53 dn.service.keytab
-rw--------1 root root 406 Sep 27 17:53nm.service.keytab
-rw--------1root root 418 Sep 27 17:53 spnego.service.keytab
修改权限400,datanode 改为 hdfs 账户,resourcemanager 改为 yarn 账户,HTTP 改为 hdfs 账户。
[root@cdh1 keytabs]# chmod 400 *
[root@cdh1 keytabs]#11 total 12
-r--------1root root 406 Sep 27 17:53 dn.service.keytab
-r--------1 root root 406 Sep 27 17:53nm.service.keytab
-r--------1root root 418 Sep 27 17:53 spnego.service.keytab
[root@cdh1 keytabs]# chown hdfs:hadoop dn.service.keytab
[root@cdh1 keytabs]# chown yarn:hadoop nm.service.key tab
[root@cdh1 keytabs]# chown hdfs:hadoop spnego.service.key tab
[root@cdh1 keytabs]#11
total 12
r--------1hdfs hadoop 406 Sep 2717:53 dn.service.keytab
r--------1yarn hadoop 406 Sep 27 17:53nm.service.keytab
r--------1hdfs hadoop 418 Sep 2717:53 spnego.service.keytab
spnego 文件 chmod 440,表示主用户可以读取
[root@cdh1 keytabs]# chmod 440 spnego.service.keytab [root@cdh1 keytabs]#11
total 12
r--------1hdfs hadoop 406 Sep 2717:53 dn.service.keytab
r--------1yarn hadoop 406 Sep 27 17:53nm.service.keytab
r--r------1hdfs hadoop 418 Sep 2717:53 spnego.service.keytab
cdh2 机器,操作相同。
有 test 账户可进入 admin 后台,输入 admin 账户密码。
cdh2同样有 datanode,创建 kadmin: addprinc -randkey
dn/cdh2.itcast.cn@ITCAST.CN
创建 nm
kadmin: addprinc -randkey
nm/cdh2.itcast.cn@ITCA
ST.CN
创建 HTTP
kadmin:addprinc-randkey
HTTP/cdh2.itcast.cn@ITCAST.CN
添加 ktadd 文件
kadmin:ktadd-k/etc/security/keytabs/dn.service.keytab
dn/cdh2.i
tcast.cn@ITCAST.CN
kadmin:ktadd-k/etc/security/keytabs/nm.service.keytab
nm/cd
h
2.itcast.cn@ITCAST.CN
Kadmin:ktadd-k/etc/security/keytabs/spnego.service.keeytab
HTT
P/cdh2.itcast.cn@ITCAST.CN
退出查看 /etc/security/keytabs/
-rw--------1root root 406 Sep 27 17:55 dn.service.keytab
-rw--------1 root root 406 Sep 27 17:55 nm.service.keytab
-rw--------1root root 418 Sep 27 17:55 spnego.service.keytab
修改权限400,datanode 改为 hdfs 账户,resourcemanag
er 改为 yarn 账户,HTTP 改为 hdfs 账户。
[root@cdh2 keytabs]# chmod 400 *
[root@cdh2 keytabs]#11 total 12
-r--------1root root 406 Sep 27 17:55 dn.service.keytab
-r--------1 root root 406 Sep 27 17:55nm.service.keytab
-r--------1root root 418 Sep 27 17:55 spnego.service.keytab
[root@cdh2 keytabs]# chown hdfs:hadoop dn.service.keytab
[root@cdh2 keytabs]# chown yarn:hadoop nm.service.key tab
[root@cdh2 keytabs]# chown hdfs:hadoop spnego.service.key tab
[root@cdh2 keytabs]#11
total 12
r--------1hdfs hadoop 406 Sep 2717:55 dn.service.keytab
r--------1yarn hadoop 406 Sep 27 17:55nm.service.keytab
r--------1hdfs hadoop 418 Sep 2717:55 spnego.service.keytab
HTTP 改为440权限
[root@cdh2 keytabs]# chmod 440 spnego.service.keytab [root@cdh2 keytabs]#11
total 12
r--------1hdfs hadoop 406 Sep 2717:55 dn.service.keytab
r--------1yarn hadoop 406 Sep 27 17:55nm.service.keytab
r--r------1hdfs hadoop 418 Sep 2717:55 spnego.service.keytab
三、创建数据目录
执行,回车
mkdir-p/data/nn;mkdir/data/dn;mkdir/data/nm-local;mkdir/data/nm-log;mkdir /data/mr-history
cd 到 data
[root@cdh0keytabs]#mkdir-p/data/nn;mkdir/data/dn;mkdir/data/nm-local;mkdir/data/nm-log;mkdir/data/mr-history
root@cdh0 keytabs]# cd /
root@cdh0 /]#cd /data/
[root@cdh0 data]# 11
total 20
drwxr-xr-x 2 root root 4096 Sep 27 17:56 dn
drwxr-xr-x 2 root root 4096 Sep 27 17:56 mr-history
drwxr-xr-x 2 root root 4096 Sep 27 17:56 nm-local
drwxr-xr-x 2 root root 4096 Sep 27 17:56 nm-log
drwxr-xr-x 2 root root 4096 Sep 27 17:56 nn
/data/nn:namenode 数据目录
/data/dn:datanode 数据目录
/data/nm-local;/data/nm-log:nodemanager 相关目录
/data/mr-history:mr history 目录
cdh0机器上只需要 nn、history。
复制命令,在 cdh1、cdh2执行。
创建 log 文件:
mkdir -p /bigdata/hadoop-2.6.0-cdh5.14.4/logs/hadoop
mkdir /bigdata/hadoop-2.6.0-cdh5.14.4/logs/yarn
每台机器都执行,路径可根据自己需求修改。
bigdata/hadoop 里有 logs 文件夹创建 yarn,将yarn、hadoop、hdfs 相关日志分离,不在同一个 logs