ошибка аутентификации при попытке доступа к WebHDFS - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь получить доступ к webhdfs в кластере hadoop, работающем под управлением Cloudera, с помощью следующей команды

!curl -i --negotiate -u : "http://namenode_address:50070/webhdfs/v1/user/?op=LISTSTATUS"

и получаю следующее сообщение об ошибке

<code>HTTP/1.1 401 Authentication required
Cache-Control: must-revalidate,no-cache,no-store
Date: Wed, 19 Jun 2019 20:17:31 GMT
Pragma: no-cache
Date: Wed, 19 Jun 2019 20:17:31 GMT
Pragma: no-cache
Content-Type: text/html; charset=iso-8859-1
X-FRAME-OPTIONS: SAMEORIGIN
WWW-Authenticate: Negotiate
Set-Cookie: hadoop.auth=; Path=/; HttpOnly
Content-Length: 1409

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 401 Authentication required</title>
</head>
<body><h2>HTTP ERROR 401</h2>
<p>Problem accessing /webhdfs/v1/user/. Reason:
<pre>    Authentication required
Работает на причале: //

Как я могу исправить эту проблему аутентификации?

Ответы [ 2 ]

0 голосов
/ 25 июня 2019
  1. Создать секретный ключ, используемый для подписи токенов аутентификации.Этот файл должен содержать случайные данные и размещаться на каждом хосте в кластере.Он также должен принадлежать пользователю hdfs и группе, принадлежащей группе hadoop.Разрешения должны быть установлены на 440. Например:

    dd if = / dev / urandom of = / etc / security / http_secret bs = 1024 count = 1
    chown hdfs: hadoop / etc /security / http_secret
    chmod 440 / etc / security / http_secret

  2. В Ambari Web выберите Службы> HDFS> Конфиги

  3. Добавьте или измените следующие свойства конфигурации для Advanced core-site:

    hadoop.http.authentication.simple.anonymous.allowed: false

    hadoop.http.authentication.signature.secret.file: / etc / security / http_secret

    hadoop.http.authentication.type kerberos

    hadoop.http.authentication.kerberos.keytab: / etc / security / keytabs / spnego.service.keytab

    hadoop.http.authentication.kerberos.principal: HTTP/_HOST@EXAMPLE.COM

    hadoop.http.filter.initializers: org.apache.hadoop.security.AuthenticationFilterInitializer

    hadoop.http.authentication.cookie.domain: hortonworks.local

Важное

Свойство hadoop.http.authentication.cookie.domain основано на полных доменных имен серверов в кластере.Например, если полное доменное имя вашего NameNode - host1.hortonworks.local, для hadoop.http.authentication.cookie.domain должно быть задано значение hortonworks.local.

Сохраните конфигурацию, затем перезапустите уязвимые службы.
0 голосов
/ 25 июня 2019

Попробуйте и это должно работать:

curl -i "http://namenode_address:50070/webhdfs/v1/user/root/output/?op=LISTSTATUS"

Плз, пожалуйста, обратитесь к этой ссылке для получения дополнительной информации

...