Cloudera Manager Server节点需要安装IPA admin libraries。命令如下:
yum install ipa-server
FreeIPA的krb5.conf默认配置包含如下内容:
default_ccache_name = KEYRING:persistent:%{uid}
CDH不支持keyring credential cache,所以需要注释此配置。
另外,需要增加以下配置:
renew_lifetime = 7d
renewable = true
具体操作,在每个集群节点编辑**/etc/krb5.conf** 文件,修改**[libdefaults]** 域如下:
#default_ccache_name = KEYRING:persistent:%{uid}
renew_lifetime = 7d
renewable = true
在ipa server节点,重启ipa服务,命令如下:
ipactl restart
如果YARN Resource Manager HA已经在一个非安全集群中激活,启用Kerberos之前,你需要清除StateStore。
步骤如下:
停止YARN服务,停止之后,进入YARN服务管理页,点开操作 ,点击格式化State Store ,完成后,关机命令页即可。
按照要求,配置集群,符合要求后,全部勾选,继续。
不要使用Cloudera Manager管理krb5.conf,最好手动管理,更容易维护。
这里直接使用FreeIPA的管理员凭据即可。
在此之前,确保集群节点都已经被FreeIPA管理。FreeIPA客户端使用ipa-client。
启用Kerberos后,建议修改HDFS超级用户配置,例如修改成hdfssupergroup 。
登陆FreeIPA Web UI,导航:身份 -> 用户 -> 添加。填写内容如下:(注意设置密码)
点击添加,即可创建用户。结果如下:
配置搜索框输入Superuser Group 进行搜索,找到如下配置:
修改为hdfssupergroup ,保存,按照提示重启服务。
启用Kerberos,需要为集群用户添加Kerberos principal 以使用集群。这里以用户 xingweidong 为例。
过程类似上面添加hdfssupergroup,按照上述过程添加即可。结果如下:
在HDFS上为用户创建用户目录。
切换到HDFS超级用户主体,初次登陆会要求重置密码,按照提示操作即可。
kinit hdfssupergroup
为用户创建用户目录:
hdfs dfs -mkdir /user/xingweidong
hdfs dfs -chown xingweidong /user/xingweidong
切换到集群用户主体:
kinit xingweidong
提交一个mapreduce测试任务:
yarn jar /opt/cloudera/parcels/CDH/jars/hadoop-mapreduce-examples-3.0.0-cdh6.3.2.jar pi 10 10000
一切运行正常,完美!
按照上文配置,应该不会遇到这个问题了。
Hue的Kerberos Ticket Renewer服务无法启动,报错如下:
Couldn't renew kerberos ticket in order to work around Kerberos 1.8.1 issue. Please check that the ticket for 'hue/[email protected]' is still renewable:
$ klist -f -c /var/run/hue/hue_krb5_ccache
If the 'renew until' date is the same as the 'valid starting' date, the ticket cannot be renewed. Please check your KDC configuration, and the ticket renewal policy (maxrenewlife) for the 'hue/[email protected]' and `krbtgt' principals.
[08/Jul/2020 11:06:33 ] settings INFO Welcome to Hue 4.4.0
编辑**/etc/krb5.conf** 文件,[libdefaults] 域下增加如下配置:
renew_lifetime = 7d
renewable = true
注意:
1、renew_lifetime需要和max_renewable_life保持一致。
2、每个节点的配置文件都需要增加这些配置,因为服务读取的是本地的krb5.conf,全部配置可以减少不必要的问题。
参考一:
这个讨论里提到了解决方法,但是经过测试后,并没有解决问题,不过,我发现里面提到的一个信息很有价值,就是renew_lifetime需要和max_renewable_life保持一致,这个一致只需要保持换算后的时间是一致的即可。
参考二:
这里面提到了两个配置项,文中提到只需在ipa-server配置即可,如下:
renew_lifetime = 7d
renewable = true
综合两个参考的信息,经过多次调整测试,得出上面的解决方法。
在阿里云VPC主机上部署生产环境时遇到的。
启用Kerberos过程中出现问题,报错如下:
/opt/cloudera/cm/bin/gen_credentials_ipa.sh failed with exit code 9 and output of <<
+ CMF_REALM=BIGDATA.ZXXK.COM
+ export PATH=/usr/kerberos/bin:/usr/kerberos/sbin:/usr/lib/mit/sbin:/usr/sbin:/usr/lib/mit/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
+ PATH=/usr/kerberos/bin:/usr/kerberos/sbin:/usr/lib/mit/sbin:/usr/sbin:/usr/lib/mit/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
+ kinit -k -t /var/run/cloudera-scm-server/cmf5054368646837616543.keytab [email protected]
+ KEYTAB_OUT=/var/run/cloudera-scm-server/cmf3990789607448816448.keytab
+ PRINCIPAL=HTTP/[email protected]
+ MAX_RENEW_LIFE=432000
+ '[' -z /etc/krb5.conf ']'
+ echo 'Using custom config path '\''/etc/krb5.conf'\'', contents below:'
+ cat /etc/krb5.conf
+ PRINC=HTTP
++ echo HTTP/[email protected]
++ cut -d / -f 2
++ cut -d @ -f 1
+ HOST=utility1.bigdata.zxxk.com
+ set +e
+ ipa host-find utility1.bigdata.zxxk.com
+ ERR=0
+ set -e
+ [[ 0 -eq 0 ]]
+ echo 'Host utility1.bigdata.zxxk.com exists'
+ set +e
+ ipa service-find HTTP/[email protected]
+ ERR=0
+ set -e
+ [[ 0 -eq 0 ]]
+ echo 'Principal HTTP/[email protected] exists'
+ PRINC_EXISTS=yes
+ KADMIN='kadmin -k -t /var/run/cloudera-scm-server/cmf5054368646837616543.keytab -p [email protected] -r BIGDATA.ZXXK.COM'
+ '[' 432000 -gt 0 ']'
+ kadmin -k -t /var/run/cloudera-scm-server/cmf5054368646837616543.keytab -p [email protected] -r BIGDATA.ZXXK.COM -q 'modprinc -maxrenewlife "432000 sec" HTTP/[email protected]'
Couldn't open log file /var/log/kadmind.log: Permission denied
modify_principal: Operation requires ``get'' privilege while getting "HTTP/[email protected]".
+ KEYTAB_PATH=/tmp/HTTP_utility1.bigdata.zxxk.com.keytab
++ ipa env server
++ tr -d '[:space:]'
++ cut -f2 -d:
+ IPA_HOST=utility1.bigdata.zxxk.com
+ [[ yes = \y\e\s ]]
+ [[ HTTP/ = \H\T\T\P\/ ]]
+ [[ utility1.bigdata.zxxk.com = \u\t\i\l\i\t\y\1\.\b\i\g\d\a\t\a\.\z\x\x\k\.\c\o\m ]]
+ echo 'Attempting to retrieve keytab for IPA HTTP principal. To grant the right to do so, run:\n ' '\tipa service-allow-retrieve-keytab HTTP/[email protected] [email protected]'
+ ipa-getkeytab -r --principal=HTTP/[email protected] --keytab=/tmp/HTTP_utility1.bigdata.zxxk.com.keytab
Failed to parse result: Insufficient access rights
Failed to get keytab
>>
ipa service-allow-retrieve-keytab HTTP/[email protected] --users=cmadmin-5d5055fa
其中cmadmin-5d5055fa
是Cloudera Manager在FreeIPA中创建的用户,可以从FreeIPA中查看,用户名格式:cmadmin-<random_id>
。
注意--users
指定的用户名不要带域名,下面的分析过程对此进行了解释。
执行成功后,重试启用Kerberos失败的环节,继续。
如果已退出启用Kerberos向导,则可以在Cloudera Manager的 安全 -> Kerberos凭据 页面,执行 生成丢失的凭据。
经过观察报错信息,失败的环节是:
ipa-getkeytab -r --principal=HTTP/[email protected] --keytab=/tmp/HTTP_utility1.bigdata.zxxk.com.keytab
Failed to parse result: Insufficient access rights
这里是Cloudera Manager通过ipa-getkeytab命令获取keytab,结果因为无效的访问权限(Insufficient access rights)而失败。
失败信息上面一条提示很重要:
+ echo 'Attempting to retrieve keytab for IPA HTTP principal. To grant the right to do so, run:\n ' '\tipa service-allow-retrieve-keytab HTTP/[email protected] [email protected]'
这个提示很详细,Cloudera Manager计划检索keytab,并说明了授权的方法。其中[email protected]是Cloudera Manager创建的用户。
而失败的环节就是因为无效的访问权限而失败的,所以尝试使用提示的命令进行授权:
使用FreeIPA admin主体权限执行命令,登录主体的命令:kinit admin
ipa service-allow-retrieve-keytab HTTP/[email protected] --users=[email protected]
不过直接执行这个命令会有问题,报错如下:
[[email protected] ~]# ipa service-allow-retrieve-keytab HTTP/[email protected] [email protected]
主机名: HTTP/[email protected]
主体别名: HTTP/[email protected]
证书: MIIE5TCCA82gAwIBAgIBCTANBgkqhkiG9w0BAQsFADA7MRkwFwYDVQQKDBBCSUdEQVRBLlpYWEsuQ09NMR4wHAYDVQQDDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMjAwNzMxMDExODU2WhcNMjIwODAxMDExODU2WjA/MRkwFwYDVQQKDBBCSUdEQVRBLlpYWEsuQ09NMSIwIAYDVQQDDBl1dGlsaXR5MS5iaWdkYXRhLnp4eGsuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx+9cmjs3CD/wL8dJqk7xji1jOtGIpdTagReVkyuHx639AjZzDyatwihPGLnVCg/4lmKeZ3lwrmiQnfLk5e2i4yIwKrpgKdrA6tp/b9cAtAm1Aq3VYpWMbih2wIgVbuVKWP/I8TSwqNfQ9ZLj1PPuApNYmoNcwDxGSBXLXcaUsiVHY1Q+x68kBxB/WFTbeBjPgremgSAojdNiLVIqWXQQXaytBX1RG9npU7COJtlnHnbwwzimKsHnCzdNza6jnzts776P4M6s7yrvhewXDJGmMIAj0PgXCvfdMudx+OVjJFkIzSBIw/7Sl5Fmkps5u6pclwXN+PVc5iUYOpj8pYJBnwIDAQABo4IB7jCCAeowHwYDVR0jBBgwFoAUNJYYJQKe+0MhNjglFCqa4pvuDLMwQgYIKwYBBQUHAQEENjA0MDIGCCsGAQUFBzABhiZodHRwOi8vaXBhLWNhLmJpZ2RhdGEuenh4ay5jb20vY2Evb2NzcDAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMHsGA1UdHwR0MHIwcKA4oDaGNGh0dHA6Ly9pcGEtY2EuYmlnZGF0YS56eHhrLmNvbS9pcGEvY3JsL01hc3RlckNSTC5iaW6iNKQyMDAxDjAMBgNVBAoMBWlwYWNhMR4wHAYDVQQDDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHQYDVR0OBBYEFBrWhdEchPrA8DUCRLxhMZIxcf0HMIG3BgNVHREEga8wgayCGXV0aWxpdHkxLmJpZ2RhdGEuenh4ay5jb22gPwYKKwYBBAGCNxQCA6AxDC9IVFRQL3V0aWxpdHkxLmJpZ2RhdGEuenh4ay5jb21AQklHREFUQS5aWFhLLkNPTaBOBgYrBgEFAgKgRDBCoBIbEEJJR0RBVEEuWlhYSy5DT02hLDAqoAMCAQGhIzAhGwRIVFRQGxl1dGlsaXR5MS5iaWdkYXRhLnp4eGsuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQCR+Kr0WjbiS5FyagxDPCRS1fGlzXzeQraXw2mI6lxX2RHy1dBiAjqRR3jOzJArKanUBSlTDyJymoQhd3Kc9cZ6k4eAoEZIXONzo6e3dT6yc0mplK/9AvNFUBlLAajfJmK50ay7OoTsLY3jWaP2aadZzQTLyNsxV9DHcLHMETI3jJ8D3P61cB78tc9X781JWFvPB8NYvHqI1XvpcYfmMUdWleSkd/FWjHqq/ymVGG7Sgy4eCrhZ2b903Froa0fiMXWEVa1rUQ8G4fFBx67InVN1v9Z675lI95aZCIpL2k9onYDpmTme+YiybL+11JE3KDynjlMydS13JEjWNEMs4wRI
Managed by: utility1.bigdata.zxxk.com
不允许检索keytab:
member user: [email protected]: no such entry
member group:
member host:
member host group:
---------
已添加的成员数 0
---------
可以看到核心提示:
[email protected]: no such entry
[email protected]
是用户cmadmin-5d5055fa
的带域名形式,尝试去掉域名,执行成功,命令如下:
ipa service-allow-retrieve-keytab HTTP/[email protected] --users=cmadmin-5d5055fa
运算符 一、对于C/C++来说,Java中的运算符号并没有做多大改动,在称谓上面,由C/C++里面的“目”改成了“元”。比如说:在C++里面叫做“三目运算符”的?:,在Java里面叫做“三元运算符”。 同样,Java是允许进行自加(i++或者++i)和自减(j--或者--j)运算的。 二、Java的运算符归纳如下: 1、算术运算符 ( + 、- 、* 、
最近遇到了事务不回滚的情况,很多方法都加tyr catch,在catch中打印日志。但是方法异常时候,日志打印了事务却没有回滚。Spring AOP异常捕获原理被拦截的方法需显式抛出异常,并不能经任何处理,这样AOP代理才能捕获到方法的异常,才能进行回滚,默认情况下AOP只捕获RunTimeException的异常。简而言之:就是我们用事务注解后,只能在当前@Transactional注...
方法一: 也是广为人知的一种: YourDataTable.Columns.Remove("列名"); 但是这种情况只适合于去掉很少列的情况。 如果有很多列我却只要一两列呢,那就得用方法二了。方法二: DataTable dat = YourDataTable.DefaultView.ToTable(false, new string[] { "
javascript 入门笔记2,学习了一些基本的弹窗等
前面两篇我们分别进行了在不用数据增强和用数据增强技术的条件下在一个小数据集上训练一个小的卷积神经网络。采用数据增强可以获得相当程度的改善,但是由于原始数据集毕竟太小,所以很难达到90%的预测准确度。本文我们将考虑如何在(已经在大数据集上训练过的)预训练模型的基础上,在小数据集上进一步训练得到最终模型的效果。
1. 使用appzapper卸载2. 终端执行以下命令(清楚navicat残留配置文件) sudo rm -Rf /Applications/Navicat\Premium.appsudo rm -Rf /private/var/db/BootCaches/CB6F12B3-2C14-461E-B5A7-A8621B7FF130/app.com.prect.Navi
近期使用IDEA创建了一个spring boot项目,结果运行时无法启动,情况如下图:后来通过搜索得知需要去掉pom.xml文件中的下图中的一句话 然后再启动就行了。如果没有这个依赖,也要加上&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;ar...
#include "stdio.h"#include "stdlib.h"void main(){//char 转 intchar c[] = "123";int i;/*atoiC语言库函数名: atoi功 能: 把字符串转换成整型数函数说明: atoi()会扫描参数nptr字符串,检测到第一个数字或正负符号时开始做类型转换,之后检测到非数字或结束
转自:https://blog.csdn.net/snowfoxmonitor/article/details/50086811点击打开链接SQL&gt;createtable t( xint, y char(50)); Table created. SQL&gt;SQL&gt;begin 2 for i in ..100000 3 loop ...
本文主要介绍了在linux下find命令的atime/ctime/mtime这三个参数的用法,主要是对于n的参数设置。结合网上的一些资料和自己的测试结果,进行了验证,希望能够帮助到大家
任务状态任务控制块任务控制块OS_TCB是一个数据结构保存该任务的相关参数,包括任务堆栈指针,状态,优先级,任务表位置,任务链表指针等。任一旦任务建立了,任务控制块OS_TCBs将被赋值任务建立的时候,OS_TCBs被初始化了当任务的CPU使用权被剥夺时,μC/0S-Il 用它来保存该任务的状态。当任务重新得到CPU使用权时,任务控制块能确保任务从当时被中断的那上点丝毫不差地继续...
电脑史话(1)――计算机始祖已历经了50多个春华秋实。英语里“Calculus”(计算)一词来源于拉丁语,既有“算法”的含义,也有肾脏或胆囊里的“结石”的意思。不知何时,许多国家的人都不约而同想到用“筹码”来改进工具,其中要数中国的算筹最有名气。商周时代问世的算筹,实际上是一种竹制、木制或骨制的小棍。古人在地面或盘子里反复摆弄这些小棍,通过移动来进行计算,从此出现了“运筹”这个词,运筹就是计...