环境介绍:
一共三台机器:
hadoop11: 192.168.230.11 namenode 、kerberos client
hadoop12: 192.168.230.12 datanode 、kerberos client
hadoop13: 192.168.230.13 datanode 、kerberos server(KDC)
保证安装kerberos 之前能正常开启hadoop集群(已安装集群)

一、介绍安装kerberos服务器

1、在hadoop13安装kerberos server相关组件:
yum install krb5-server krb5-libs krb5-auth-dialog krb5-workstation
2、安装上述组件之后, 会有如下配置文件:
/var/kerberos/krb5kdc/kdc.conf:KDC的相关信息
配置示例:

[kdcdefaults]kdc_ports = 88kdc_tcp_ports = 88
[realms]HADOOP.COM = {#master_key_type = aes256-ctsacl_file = /var/kerberos/krb5kdc/kadm5.acldict_file = /usr/share/dict/wordsadmin_keytab = /var/kerberos/krb5kdc/kadm5.keytabmax_renewable_life = 7dsupported_enctypes = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal}

注意:把aes256-cts去掉
/etc/krb5.conf: 包含Kerberos的配置信息。例如,KDC的位置,Kerberos的admin的realms 等)
配置示例:

[logging]default = FILE:/var/log/krb5libs.logkdc = FILE:/var/log/krb5kdc.logadmin_server = FILE:/var/log/kadmind.log
[libdefaults]default_realm = HADOOP.COMdns_lookup_realm = falsedns_lookup_kdc = falseticket_lifetime = 24hrenew_lifetime = 7dforwardable = true
[realms]HADOOP.COM = {kdc = hadoop13admin_server = hadoop13}
[domain_realm].hadoop.com = HADOOP.COMhadoop.com = HADOOP.COM

注意:/etc/krb5.conf保证和hadoop11、hadoop12的配置文件一致
3、创建/初始化Kerberos database

/usr/sbin/kdb5_util create -s -r HADOOP.COM

注意:这个步骤执行的时间较长,需要设定database管理员的密码(切记)
当Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:
kadm5.acl
kdc.conf
principal
principal.kadm5
principal.kadm5.lock
principal.ok
4、 添加database administrator

/usr/sbin/kadmin.local -q "addprinc admin/admin"

5、为database administrator设置ACL权限
将文件/var/kerberos/krb5kdc/kadm5.acl的内容编辑为
*/admin@HADOOP.COM代表名称匹配/admin@HADOOP.COM 都认为是admin,权限是 。代表全部权限。
6、在hadoop13启动Kerberos daemons
手工启动:
service krb5kdc start
service kadmin start
设置开机自动启动:
chkconfig krb5kdc on
chkconfig kadmin on
7、在hadoop11、hadoop12 安装kerberos client相关组件:

yum install krb5-workstation krb5-libs krb5-auth-dialog

配置/etc/krb5.conf,保证和hadoop13上的配置文件一致

scp /etc/krb5.conf root@hadoop11:/etc
scp /etc/krb5.conf root@hadoop12:/etc

8、kerberos的日常操作与常见问题
通过本地直接登录:kadmin.local

list_principals 可以查看所有凭据

常用操作命令如下:
登录Kerberos: kadmin.local
查看已存在凭据:list_principals, listprincs, get_principals, getprincs
添加凭据:add_principal, addprinc, ank
修改凭据密码:change_password, cpw
删除凭据:delete_principal, delprinc
认证用户:kinit
查看当前认证用户:klist
删除当前认证的缓存:kdestroy
生成keytab:使用xst命令或者ktadd命令
通过凭证文件认证:

kinit -k -t /opt/module/hadoop-2.7.2/etc/hadoop/root.keytab root/hadoop12@HADOOP.COM

另外:配置JCE,这是因为CentOS6.5及以上系统默认使用AES-256加密,因此需要所有节点安装并配置JCE(jce_policy-8.zip),解压后覆盖至:
$JAVA_HOME/jre/lib/security。
到目前安装kerberos服务完成。

二:hdfs开启kerberos认证

1、在hadoop13上创建认证凭证

kadmin.local -q "addprinc -randkey root/hadoop13@HADOOP.COM"
kadmin.local -q "addprinc -randkey root/hadoop11@HADOOP.COM"
kadmin.local -q "addprinc -randkey root/hadoop12@HADOOP.COM"
kadmin.local -q "addprinc -randkey HTTP/hadoop12@HADOOP.COM"
kadmin.local -q "addprinc -randkey HTTP/hadoop13@HADOOP.COM"
kadmin.local -q "addprinc -randkey HTTP/hadoop11@HADOOP.COM"

2、创建认证凭证文件

mkdir /home/kerberos
cd /home/kerberos
 kadmin.local -q "xst -k root-unmerged.keytab root/hadoop13@HADOOP.COM"
kadmin.local -q "xst -k root-unmerged.keytab root/hadoop11@HADOOP.COM"
kadmin.local -q "xst -k root-unmerged.keytab root/hadoop12@HADOOP.COM"

合并keytab文件
[root@hadoop13 kerberos]# ktutil
ktutil: rkt hdfs-unmerged.keytab
ktutil: rkt HTTP.keytab
ktutil: wkt hdfs.keytab
ktutil: q
验证认证:

kinit -k -t root.keytab root/hadoop11@HADOOP.COM

3、拷贝Kerberos Keytab文件到各自的机器

scp root.keytab root@hadoop11:/opt/module/hadoop-2.7.2/etc/hadoop/
scp root.keytab root@hadoop12:/opt/module/hadoop-2.7.2/etc/hadoop/

4、hadoop配置文件配置:kerberos
修改core-site.xml,增加如下配置:

<property><name>hadoop.security.authentication</name><value>kerberos</value></property><property><name>hadoop.security.authorization</name><value>true</value></property>

修改hdfs-site.xml,增加如下配置:

<!--kerberos security--><property><name>dfs.block.access.token.enable</name><value>true</value></property><property><name>dfs.datanode.data.dir.perm</name><value>700</value></property><property><name>dfs.namenode.keytab.file</name><value>/opt/module/hadoop-2.7.2/etc/hadoop/root.keytab</value></property><property><name>dfs.namenode.kerberos.principal</name><value>root/_HOST@HADOOP.COM</value></property><property><name>dfs.namenode.kerberos.https.principal</name><value>HTTP/_HOST@HADOOP.COM</value></property><property><name>dfs.datanode.keytab.file</name><value>/opt/module/hadoop-2.7.2/etc/hadoop/root.keytab</value></property><property><name>dfs.datanode.kerberos.principal</name><value>root/_HOST@HADOOP.COM</value></property><property><name>dfs.datanode.kerberos.https.principal</name><value>HTTP/_HOST@HADOOP.COM</value></property><property><name>dfs.datanode.address</name><value>0.0.0.0:61004</value></property><property><name>dfs.datanode.http.address</name><value>0.0.0.0:61006</value></property>
<!--webHDFS security--><property><name>dfs.webhdfs.enabled</name><value>true</value></property><property><name>dfs.web.authentication.kerberos.keytab</name><value>/opt/module/hadoop-2.7.2/etc/hadoop/root.keytab</value></property><property><name>dfs.web.authentication.kerberos.principal</name><value>HTTP/_HOST@HADOOP.COM</value></property>
<!-- datanode SASL-->
<property><name>dfs.http.policy</name><value>HTTPS_ONLY</value>
</property>
<property><name>dfs.data.transfer.protection</name><value>integrity</value>
</property>
<property><name>dfs.permissions.supergroup</name><value>supergroup</value><description>The name of the group ofsuper-users.</description>
</property>
<property>
<name>dfs.secondary.namenode.keytab.file</name>
<value>/opt/module/hadoop-2.7.2/etc/hadoop/root.keytab</value>
</property>
<property>
<name>dfs.secondary.namenode.kerberos.principal</name>
<value>root/_HOST@HADOOP.COM</value>
</property>
</configuration>

分别复制core-site.xml,hdfs-site.xml到hadoop11,hadoop12机器上

scp hdfs-site.xml root@hadoop13:/opt/module/hadoop-2.7.2/etc/hadoop/
scp hdfs-site.xml root@hadoop11:/opt/module/hadoop-2.7.2/etc/hadoop/
scp core-site.xml root@hadoop13:/opt/module/hadoop-2.7.2/etc/hadoop/
scp core-site.xml root@hadoop11:/opt/module/hadoop-2.7.2/etc/hadoop/

三、ssl配置。

如没配置,会有如下错误:

在hadoop13执行如下语句,生产CA证书,然后分别拷贝至hadoop11、hadoop12

openssl req -new -x509 -keyout ca_key -out ca_cert -days 9999 -subj '/C=CN/ST=hunan/L=changsha/O=dtdream/OU=security/CN=hadoop.com'

然后分别在hadoop11、hadoop12、hadoop13执行如下语句:

keytool -keystore keystore -alias localhost -validity 9999 -genkey -keyalg RSA -keysize 2048 -dname "CN=hadoop.com, OU=test, O=test, L=changsha, ST=hunan, C=cn"
keytool -keystore truststore -alias CARoot -import -file ca_cert
keytool -certreq -alias localhost -keystore keystore -file cert
openssl x509 -req -CA ca_cert -CAkey ca_key -in cert -out cert_signed -days 9999 -CAcreateserial -passin pass:changeit
keytool -keystore keystore -alias CARoot -import -file ca_cert
keytool -keystore keystore -alias localhost -import -file cert_signed

分别在每台机器进行kerberos认证:

kinit -k -t /opt/module/hadoop-2.7.2/etc/hadoop/root.keytab root/hadoop12@HADOOP.COM
kinit -k -t /opt/module/hadoop-2.7.2/etc/hadoop/root.keytab root/hadoop12@HADOOP.COM
kinit -k -t /opt/module/hadoop-2.7.2/etc/hadoop/root.keytab root/hadoop13@HADOOP.COM
/opt/module/hadoop-2.7.2/sbin,然后执行:./start-dfs.sh

cd /opt/module/hadoop-2.7.2/sbin,执行./start-dfs.sh
查看各个节点namenode,datanode节点正常。
然后在任意机器执行:hadoop fs -ls /

执行kdestroy,之后再执行hadoop fs -ls / 查看报错,kerberos认证生效。

四、yarn开启kerberos认证

因为之前配置hsfs认证已经设置了认证文件,因此我们这一步用之前的认证文件,只需要配置文件:yarn-site.xml,加入如下配置:

<property><name>yarn.resourcemanager.keytab</name><value>/opt/module/hadoop-2.7.2/etc/hadoop/root.keytab</value>
</property>
<property><name>yarn.resourcemanager.principal</name> <value>root/_HOST@HADOOP.COM</value>
</property><property><name>yarn.nodemanager.keytab</name><value>/opt/module/hadoop-2.7.2/etc/hadoop/root.keytab</value>
</property>
<property><name>yarn.nodemanager.principal</name> <value>root/_HOST@HADOOP.COM</value>
</property>
<property><name>yarn.nodemanager.container-executor.class</name>  <value>org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor</value>
</property>
<property><name>yarn.nodemanager.linux-container-executor.group</name><value>root</value>
</property>
<property><name>yarn.http.policy</name><value>HTTPS_ONLY</value>
</property>
</configuration>

配置container-executor.cfg

#configured value of yarn.nodemanager.linux-container-executor.group
yarn.nodemanager.linux-container-executor.group=root
#comma separated list of users who can not run applications
banned.users=bin
#Prevent other super-users
min.user.id=0
#comma separated list of system users who CAN run applications
allowed.system.users=root,nobody,impala,hive,hdfs,yarn

拷贝相应的配置文件到各节点:
另外需要配置如下权限,不然会报如下错误:

cd /opt/module/hadoop-2.7.2/bin
chmod 6050 container-executor


然后整个集群的kerberos认证完成。
参考:
https://blog.csdn.net/lovebomei/article/details/79807484
https://blog.csdn.net/forever19870418/article/details/68945850
https://blog.csdn.net/dxl342/article/details/55510659
https://blog.csdn.net/qq_27499099/article/details/77771253

hadoop2.7.2开启kerberos认证相关推荐

  1. Spark操作Hive(开启Kerberos认证)代码提交华为云DAYU的MRS Spark组件--方法流程及注意事项

    背景: 最近在测试华为云DAYU MRS Spark操作Hive的流程,因kerberos认证的问题一直测试失败. 代码示例: val sparkSession = SparkSession.buil ...

  2. CD5X开启Kerberos认证

                                CDH5x开启Kerberosle 环境: 服务器:云服务器 环境版本: CDH:5.12 Cloudera Manager:5.12 liln ...

  3. 使用Spark/Java读取已开启Kerberos认证的HBase

    1.赋予drguo用户相应的权限 2.KDC中创建drguo用户并导出相应的keytab文件 [root@bigdata28 ~]# kadmin.local  Authenticating as p ...

  4. Zookeeper集群安装(开启kerberos)

    安装规划 zookeeper集群模式,安装到如下三台机器 10.43.159.237 zdh-237 10.43.159.238 zdh-238 10.43.159.239 zdh-239 Kerbe ...

  5. Zookeeper单机安装(开启kerberos)

    安装规划 zookeeper安装到zdh41上面,单机模式 10.43.159.41 zdh41 ZDH.COM 安装用户 zookeeper/zdh1234 useradd -g hadoop -s ...

  6. 配置两个Hadoop集群Kerberos认证跨域互信(两个集群互通)

    配置两个Hadoop集群Kerberos认证跨域互信 两个Hadoop集群开启Kerberos验证后,集群间不能够相互访问,需要实现Kerberos之间的互信,使用Hadoop集群A的客户端访问Had ...

  7. Java API连接Kerberos认证的HBASE

    网上关于 Java 代码连接启用了Kerberos认证的HBASE资料很多,但是总感觉不够准确,总是出现各种问题.经过整合网上资料和亲自试验,得出连接成功的最小配置项如下: java.security ...

  8. Kylin开启Kerberos安全认证

    Kylin开启Kerberos安全认证, 由于Kylin是依赖Hbase启动的, Kylin启动脚本kylin.sh中就是调用的Hbase的启动脚本, 所以当Hbase开启了Keberos之后就等于K ...

  9. 【安全】CDH集群开启Kerberos安全认证

    文章目录 1.安装kerberos 2.CDH集群开启Kerberos安全认证 1.安装kerberos 参考:https://blog.csdn.net/qq_21383435/article/de ...

最新文章

  1. 程序员35岁生死大关!被迫无奈转行.....
  2. 怎样用modelsim做后仿真
  3. Java5:BigInteger、BigDecimal详解
  4. magento url rewrite规则
  5. CUDA 8.0 + VS2013 + win10 x64开发环境搭建
  6. 大数据是如何作用于实体经济
  7. 嵌入式系统调试仿真工具
  8. opengl游戏引擎源码_我用C++复刻了这款上世纪最伟大的游戏
  9. dockerfile_nginx+PHP+mongo数据库_完美搭建
  10. c语言dll注入进程,DLL注入--设置消息钩子
  11. USB转NRF24L01模块 带UI上位机
  12. 【SpringCloud 2021.0.0】12、路由网关Gateway之简介 (spring-boot 2.6.3)
  13. Julia常见问题总结
  14. html如何加页脚,html-如何将页脚扩展到页面底部?
  15. 包无法更新、相关性或冲突验证解决方案
  16. 知识?一文解析币圈一级二级市场 原来币圈居然这么多要知道的
  17. 七年北漂落幕-【文末送书】
  18. html如何自动调整边框大小,html5如何设置复选框大小
  19. 关于HTML中圆角的实现
  20. 4.BI 探索数据的数据可视化工具

热门文章

  1. 漫画中的透视怎么画?该注意什么?
  2. * google 的达芬奇密码
  3. 气动快速接头的常用领域和基本结构
  4. 微软S2D2016滚动升级2019
  5. UiPath设置Excel表格自适应行高、自适应列宽或固定行高、列宽
  6. centos7关闭防火墙命令(centos7关闭防火墙命令)
  7. web前端基础——背景图片
  8. Computer Coin(CCN) 为元宇宙发展提供动力
  9. html图片怎么放在页眉的中心,如何将HTML页眉和页脚添加到页面?
  10. 抖音爆粉的捷径该怎么玩