开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

大佬们知道 flink这个错误吗,是什么原因,搞半天了,kerberos 认证?

大佬们知道 flink这个错误吗,是什么原因,搞半天了,kerberos 认证?image.png

展开
收起
cuicuicuic 2023-06-11 22:17:56 93 0
4 条回答
写回答
取消 提交回答
  • 可以在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供应商/版本及其安全提供程序。

    ——参考链接

    2024-01-25 16:05:07
    赞同 1 展开评论 打赏
  • 某政企事业单位运维工程师,主要从事系统运维工作,同时兼顾教育行业、企业等src安全漏洞挖掘,曾获全国行业网络安全大赛二等奖。

    您的问题是关于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的服务都已经正确启用了安全模式,并且所有的节点之间都能够正常通信。

    2024-01-19 14:47:58
    赞同 展开评论 打赏
  • 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(即用户名)来进行后续的认证过程。有几个可能的原因会导致这个问题:

    1. 未安装 Kerberos 客户端软件包:确保已经安装了带有 Kerberos 支持的 Java SDK。另外,也需要确保 JRE 包含相关的加密库。

    2. 缺失的 Kerberos 组件:检查系统的 Kerberos 组件是否存在。特别是,kinitgssapi_krb5.dll 文件必须存在于 PATH 路径下。

    3. 无效的 Kerberos 设置:检查 /etc/krb5.conf 文件的内容及其完整性。确保其中包含了正确的服务器名称解析(SPN)和服务凭据(Principal)。

    4. 防火墙阻止了 Kerberos 请求:确保防火墙规则允许发起 Kerberos 请求所需的所有 TCP 端口通信(一般而言,TCP 端口范围在 7000 至 9000 之间)

    5. Kerberos 服务不在运行:检查 Kerberos 服务是否正在运行。如果服务停止,重新启动它。

    6. 密码输入错误:确保提供了正确的用户名和密码组合。有时,即使账户有效,也有可能出现认证失败的问题。

    7. Kerberos 服务出现问题:如果 Kerberos 服务本身存在问题,也可能导致认证失败。此时,可能需要联系 IT 团队协助诊断和解决问题。

    这是一个典型的 Kerberos 认证问题,涉及到许多组件之间的协调配合。建议先排除基本因素,然后逐步深入调查,直到发现问题的根本原因为止。

    2024-01-15 15:01:30
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    问题可能是由于Kerberos认证失败导致的。1. 请确保您的Hadoop集群已经配置好Kerberos认证,包括KDC、ADMIN_SERVER、TICKET_GRANT_SERVER等组件。

    1. 检查您的Flink集群是否配置了正确的Kerberos参数,例如kerberos.login.principal、kerberos.krb5.conf、kerberos.ccache.file等。
    2. 确保您的Flink任务中的Hadoop输入/输出格式正确配置,例如使用HadoopFileSystem作为输入/输出格式时,需要设置kerberos.keytab和kerberos.principal等参数。
    3. 如果您使用的是Flink SQL客户端,请确保在提交任务时使用了正确的YARN应用程序模式,例如:

    flink run -c /path/to/application.yaml
    CopyCopy

    其中是包含Flink任务的Java类,是包含该类的JAR文件路径,/path/to/application.yaml是YARN应用程序配置文件路径。

    1. 如果问题仍然存在,请检查您的Hadoop集群、Flink集群和Flink任务的配置文件,确保它们之间的Kerberos配置一致。
    2024-01-12 21:55:07
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载