【问题标题】:Kerberos HBase Zookeeper failsKerberos HBase Zookeeper 失败
【发布时间】:2019-08-05 17:22:36
【问题描述】:

我正在尝试对我的 HBase 集群进行 kerberise,但我遇到了 Zookeeper 的一些问题。当我启动 Hbase 时,我在主日志中收到此错误:

ERROR [main-SendThread(X.X.X.X:2181)] client.ZooKeeperSaslClient: An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) - LOOKING_UP_SERVER)]) occurred when evaluating Zookeeper Quorum Member's  received SASL token. Zookeeper Client will go to AUTH_FAILED state.

ERROR [main-SendThread(X.X.X.X:2181)] zookeeper.ClientCnxn: SASL authentication with Zookeeper Quorum member failed: javax.security.sasl.SaslException: An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) - LOOKING_UP_SERVER)]) occurred when evaluating Zookeeper Quorum Member's  received SASL token. Zookeeper Client will go to AUTH_FAILED state.

DEBUG [main-EventThread] zookeeper.ZKWatcher: master:16000-0x16c236187be0000, quorum=Y.Y.Y.Y:2181,X.X.X.X:2181, baseZNode=/hbase Received ZooKeeper Event, type=None, state=AuthFailed, path=null
DEBUG [main] zookeeper.ZooKeeper: Close called on already closed client

在 Zookeeper 日志中,我得到:

WARN  [QuorumPeer[myid=0]/0:0:0:0:0:0:0:0:2181] quorum.Learner: Unexpected exception, tries=0, connecting to /X.X.X.X:2888
java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at org.apache.zookeeper.server.quorum.Learner.connectToLeader(Learner.java:229)
        at org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:71)
        at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:937)

我已验证我的防火墙,端口已打开

对于配置,我遵循 HBase 参考指南:

http://hbase.apache.org/book.html#zk.sasl.auth

起初我认为这是我的 keytab 的问题,但 Hadoop 可以正常工作。

我运行 HBase 2.0.5,Hadoop 3.1.2,Zookeeper 是 HBase 提供的。

【问题讨论】:

  • 引用 “Hadoop 和 Kerberos,超越大门的疯狂” steveloughran.gitbooks.io/kerberos_and_hadoop/content/sections/… Server not found in Kerberos Database 可能意味着“DNS 一团糟”。检查您的 ZK 主机名的 DNS 查找和反向查找。也适用于您的 HBase 主机名。此外,请确保您的 krb5.conf 具有将网络域(和/或特定名称或主机名)映射到 Kerberos 领域的规则。并确保 ZK 客户端库支持 IP V6,因为您似乎正在使用它......
  • @SamsonScharfrichter 这有点奇怪,我实际上没有使用任何域。我只在 /etc/hosts 中设置了我的主机名,所以它可能来自这里?没有kerberos它工作得很好,所以我很困惑。另外,我不知道为什么它显示 IPV6 地址,我的配置是用 v4 地址设置的。

标签: hadoop hbase apache-zookeeper kerberos


【解决方案1】:

根据@SamsonScharfrichter 的评论,我尝试了一些方法:

  • 我已在 /etc/hosts 中创建并指定了我的服务器的 FQDN,并修改了我的配置以反映此更改。

  • 为 FQDN 更改了我的服务器的主机名

  • 试图 nslookup 我的主机名,因为它们在 /etc/hosts 中指定,所以没有用

它什么也没做,我仍然收到错误消息。我的猜测是 Kerberos 试图在我的公共 NIC 上搜索 DNS,而不是在我的私有 NIC 上。我不知道为什么很难找到我的服务器,因为 hadoop 完全没有问题。

编辑 - 我在我的网络上设置了一个私有 DNS。 DNS 运行良好,但仍然出现错误。我要放弃了

编辑 2 - 我在出现错误的节点上安装了 tshark。显然我得到一个带有消息的框架: 错误:KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN 这很奇怪,我验证了我的密钥表和 kadmin 中列出的主体。也许有我不使用的默认主体?

【讨论】:

    猜你喜欢
    • 2016-03-08
    • 2016-04-08
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2011-07-12
    相关资源
    最近更新 更多