1. 程式人生 > >CLIENT_0004:Unable to find valid Kerberos ticket cache (kinit)

CLIENT_0004:Unable to find valid Kerberos ticket cache (kinit)

con failed .get pen find fin .com bre thread

背景

今天在使用JavaAPI來連接sqoop1.99.7的時候,遇到了個錯誤。
錯誤信息如下:

0    [main] WARN  org.apache.hadoop.util.NativeCodeLoader  - Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
Exception in thread "main" org.apache.sqoop.common.SqoopException: CLIENT_0004:Unable to find valid Kerberos ticket cache (kinit)
at org.apache.sqoop.client.request.ResourceRequest.doHttpRequest(ResourceRequest.java:159)
at org.apache.sqoop.client.request.ResourceRequest.doHttpRequest(ResourceRequest.java:69)
at org.apache.sqoop.client.request.ResourceRequest.get(ResourceRequest.java:179)
at org.apache.sqoop.client.request.JobResourceRequest.read(JobResourceRequest.java:65)
at org.apache.sqoop.client.request.SqoopResourceRequests.readJob(SqoopResourceRequests.java:146)
at org.apache.sqoop.client.SqoopClient.getJobs(SqoopClient.java:403)
at com.fz.hadoop.sqoop.SqoopTest.main(SqoopTest.java:18)
Caused by: org.apache.hadoop.security.authentication.client.AuthenticationException: Authentication failed, status: 404, message: Not Found
at org.apache.hadoop.security.authentication.client.AuthenticatedURL.extractToken(AuthenticatedURL.java:275)
at org.apache.hadoop.security.authentication.client.PseudoAuthenticator.authenticate(PseudoAuthenticator.java:77)
at org.apache.hadoop.security.token.delegation.web.DelegationTokenAuthenticator.authenticate(DelegationTokenAuthenticator.java:131)
at org.apache.hadoop.security.authentication.client.KerberosAuthenticator.authenticate(KerberosAuthenticator.java:214)
at org.apache.hadoop.security.token.delegation.web.DelegationTokenAuthenticator.authenticate(DelegationTokenAuthenticator.java:131)
at org.apache.hadoop.security.authentication.client.AuthenticatedURL.openConnection(AuthenticatedURL.java:215)
at org.apache.hadoop.security.token.delegation.web.DelegationTokenAuthenticatedURL.openConnection(DelegationTokenAuthenticatedURL.java:322)
at org.apache.hadoop.security.token.delegation.web.DelegationTokenAuthenticatedURL.openConnection(DelegationTokenAuthenticatedURL.java:245)
at org.apache.sqoop.client.request.ResourceRequest.doHttpRequest(ResourceRequest.java:79)
… 6 more

問題分析:
從報錯信息上看貌似是Authentication認證的一些錯誤

  1. 網上找了查了很多都沒發現解決方案。
  2. 從官網security Authentication章節也沒看到好的解決方案,想要配置Kerberos相關的Authentication,一看太麻煩感覺也不太靠譜
    http://sqoop.apache.org/docs/1.99.7/security/AuthenticationAndAuthorization.html

解決方案

無意中在http://blog.csdn.net/jiacai2050/article/details/59117645這篇文章中發現了希望
技術分享

所以,我試著在url後面加上/,果然好使了。

我的代碼如下:
沒加/之前
技術分享

url加上/後
技術分享

CLIENT_0004:Unable to find valid Kerberos ticket cache (kinit)