大佬们知道 flink这个错误吗,是什么原因,搞半天了,kerberos 认证?
可以在krb5.conf文件中配置libkrb5使用的加密类型(通常在/ etc中).例如(不一定是最安全的):
# default_tgs_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5
# default_tkt_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5
# permitted_enctypes = aes256-cts arcfour-hmac-md5 des3-hmac-sha1 des-cbc-crc des-cbc-md5
permitted_enctypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5
支持哪种加密类型取决于JRE供应商/版本及其安全提供程序。
——参考链接。
您的问题是关于Kerberos认证出错的信息显示在执行hdfs dfs -ls /命令时报错了。这是因为系统试图使用Kerberos身份验证机制访问HDFS服务端,但是出现了"Client cannot authenticate via [TOKEN, KERBEROS]"的错误信息。
要解决这类问题,您可以按照下面的步骤操作:
步骤一:更新Kerberos ticket cache
首先,我们需要刷新Kerberos票证缓存。可以在终端输入以下命令:
kinit 用户名@REALM_NAME
这里的用户名是指登录系统的用户名,而REALM_NAME则是KDC所在的域名。首次运行上述命令时,它将会提示您输入密码。成功完成初始化后,Kerberos票证会被保存在 /tmp/krb5cc_username 这个目录下。
步骤二:重启HDFS守护程序
接下来,我们可能需要重启HDFS守护程序,使其加载最新的 Kerberos 配置。对于不同的 Hadoop 版本和安装方式,具体的重启方法可能会有所不同。一般而言,在Linux环境下,可以采用如下的通用做法:
sudo service hadoop-hdfs-namenode restart # 对于NameNode实例
sudo service hadoop-hdfs-datanode restart # 对于DataNode实例
步骤三:再次测试Kerberos认证
最后,我们可以再试试之前那个命令,观察一下输出的结果:
hdfs dfs -ls /
如果还是出现问题,可能还需要进一步排查Kerberos的配置文件是否存在错误,或者是Kerberos服务本身的状态不正确。此外,还应确保所有涉及到Kerberos的服务都已经正确启用了安全模式,并且所有的节点之间都能够正常通信。
Flink 提供了一个名为 org.apache.flink.hadoop.io.HadoopFsStateBackend
的类用于与 Hadoop 存储系统交互。然而,你在终端输出中看到了一条警告信息:“Client cannot authenticate via [TOKEN_KERBEROS]”。这意味着客户端未能成功地验证其身份,可能是由于 Kerberos 认证失败或者缺少必要的权限。
Kerberos 是一种基于密钥分发协议的身份认证方法,它要求用户拥有有效的票券(Ticket Granting Ticket,TGT)才能连接到受保护的服务。在这种情况下,似乎 Flink 已经尝试加载 Kerberos 配置 (hdfs dfs -ls
) 并初始化 Krb5LoginModule,但最终仍不能获得 Principal(即用户名)来进行后续的认证过程。有几个可能的原因会导致这个问题:
未安装 Kerberos 客户端软件包:确保已经安装了带有 Kerberos 支持的 Java SDK。另外,也需要确保 JRE 包含相关的加密库。
缺失的 Kerberos 组件:检查系统的 Kerberos 组件是否存在。特别是,kinit
和 gssapi_krb5.dll
文件必须存在于 PATH 路径下。
无效的 Kerberos 设置:检查 /etc/krb5.conf 文件的内容及其完整性。确保其中包含了正确的服务器名称解析(SPN)和服务凭据(Principal)。
防火墙阻止了 Kerberos 请求:确保防火墙规则允许发起 Kerberos 请求所需的所有 TCP 端口通信(一般而言,TCP 端口范围在 7000 至 9000 之间)
Kerberos 服务不在运行:检查 Kerberos 服务是否正在运行。如果服务停止,重新启动它。
密码输入错误:确保提供了正确的用户名和密码组合。有时,即使账户有效,也有可能出现认证失败的问题。
Kerberos 服务出现问题:如果 Kerberos 服务本身存在问题,也可能导致认证失败。此时,可能需要联系 IT 团队协助诊断和解决问题。
这是一个典型的 Kerberos 认证问题,涉及到许多组件之间的协调配合。建议先排除基本因素,然后逐步深入调查,直到发现问题的根本原因为止。
问题可能是由于Kerberos认证失败导致的。1. 请确保您的Hadoop集群已经配置好Kerberos认证,包括KDC、ADMIN_SERVER、TICKET_GRANT_SERVER等组件。
flink run -c /path/to/application.yaml
CopyCopy
其中是包含Flink任务的Java类,是包含该类的JAR文件路径,/path/to/application.yaml是YARN应用程序配置文件路径。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。