Удаленное подключение к fiware-cosmos возвращает ошибку аутентификации

У нас есть учетная запись COSMOS на cosmos.lab.fi-ware.org, и мы можем загружать файлы локально в кластер.

Однако у нас возникли проблемы с удаленной загрузкой инструкций, которым мы следовали на сайт гида показывает следующее:

Однако использование WebHDFS/HttpFS RESTful API позволит вам загружать файлы, существующие за пределами глобального экземпляра Cosmos в FI-LAB. В следующем примере вместо WebHDFS используется HttpFS (используется порт TCP/14000 вместо TCP/50070), а curl используется в качестве HTTP-клиента (но ваши приложения должны реализовать собственный HTTP-клиент):

[remote-vm]$ curl -i -X PUT "http://cosmos.lab.fi-ware.org:14000/webhdfs/v1/user/$COSMOS_USER/input_data?op=MKDIRS&user.name=$COSMOS_USER"
[remote-vm]$ curl -i -X PUT ..etc
[remote-vm]$ curl -i -X PUT -T etc..

Как видите, загрузка данных — это двухэтапная операция, как указано в спецификации WebHDFS: первый вызов API взаимодействует напрямую с головным узлом, указывая создание нового файла и его имя; затем головной узел отправляет временный ответ о перенаправлении, указывая узел данных среди всех существующих в кластере, где должны храниться данные, что является конечной точкой второго шага. Тем не менее, шлюз HttpFS реализует тот же API, но его внутреннее поведение меняется, и перенаправление указывает на сам головной узел.

Однако, когда мы запускаем эти команды, мы получаем ошибки сервера, например:

~ kari$ -bash: user.name=kdempsey: command not found
HTTP/1.1 100 Continue

HTTP/1.1 401 Unauthorized
Server: Apache-Coyote/1.1
Set-Cookie: hadoop.auth=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
Content-Type: text/html;charset=utf-8
Content-Length: 1275
Date: Fri, 05 Jun 2015 12:58:20 GMT

Apache Tomcat/6.0.32 - Error report<!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}-->

HTTP Status 401 - org.apache.hadoop.security.authentication.client.AuthenticationException: Anonymous requests are disallowed

type Status report

message org.apache.hadoop.security.authentication.client.AuthenticationException: Anonymous requests are disallowed

description This request requires HTTP authentication (org.apache.hadoop.security.authentication.client.AuthenticationException: Anonymous requests are disallowed).

Apache Tomcat/6.0.32

Еще была ошибка сервера 500. Не могли бы вы предоставить команды для удаленной загрузки файла в общий ресурс COSMOS.

В конечном итоге мы хотим взять данные из нашей InfluxDB и загрузить в COSMOS, мы хотели бы сделать это через вызов REST, если это возможно (иначе python).

Большое спасибо, Кари


person karijd    schedule 09.06.2015    source источник
comment
Пожалуйста, можете ли вы отредактировать вопрос и указать полную команду, которую вы используете? Я вижу только ~ kari$ -bash: user.name=kdempsey: command not found, в котором, с одной стороны, отсутствует большая часть URL-адреса, а с другой стороны, мне кажется, что у вас был возврат каретки после первой части URL-адреса.   -  person frb    schedule 09.06.2015
comment
[remote-vm]$ curl -i -X ​​PUT cosmos.lab.fi-ware.org:14000/webhdfs/v1/user/$COSMOS_USER/ [remote-vm]$ curl -i -X PUT -T unstructured_data.txt --header content-type: application/octet-stream cosmos.lab.fi-ware.org:14000/webhdfs/v1/user/$COSMOS_USER/ --- - больше 2-х ссылок не давал, спасибо за внимание   -  person karijd    schedule 10.06.2015
comment
Я, очевидно, отредактировал $COSMOS_USER, чтобы он был моим пользователем.   -  person karijd    schedule 10.06.2015


Ответы (1)


Как пользователь roor, я проверил вашу учетную запись, и она отлично работает:

$ curl -i -X PUT "http://cosmos.lab.fi-ware.org:14000/webhdfs/v1/user/kdempsey/frbtest_deleteme?op=MKDIRS&user.name=kdempsey"
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: hadoop.auth="u=kdempsey&p=kdempsey&t=simple&e=1434045807412&s=iFdK86PWTbJykXymYLS9qZcIE2g="; Version=1; Path=/
Content-Type: application/json
Transfer-Encoding: chunked
Date: Thu, 11 Jun 2015 08:03:27 GMT

{"boolean":true}
$ curl -i -X GET "http://cosmos.lab.fi-ware.org:14000/webhdfs/v1/user/kdempsey/?op=LISTSTATUS&user.name=kdempsey"
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: hadoop.auth="u=kdempsey&p=kdempsey&t=simple&e=1434045881826&s=GkLYQ/BqnBNPFBNL3ZPwkxcwbx8="; Version=1; Path=/
Content-Type: application/json
Transfer-Encoding: chunked
Date: Thu, 11 Jun 2015 08:04:41 GMT

{"FileStatuses":{"FileStatus":[{"pathSuffix":"frbtest_deleteme","type":"DIRECTORY","length":0,"owner":"kdempsey","group":"kdempsey","permission":"755","accessTime":0,"modificationTime":1434009807428,"blockSize":0,"replication":0},{"pathSuffix":"input","type":"DIRECTORY","length":0,"owner":"kdempsey","group":"kdempsey","permission":"755","accessTime":0,"modificationTime":1433508554303,"blockSize":0,"replication":0},{"pathSuffix":"input_data","type":"DIRECTORY","length":0,"owner":"kdempsey","group":"kdempsey","permission":"755","accessTime":0,"modificationTime":1433508958231,"blockSize":0,"replication":0}]}}

Как видите, я создал папку frbtest_deleteme, а затем перечислил ваше пользовательское пространство HDFS (/user/kdempsey), чтобы получить список подкаталогов; среди них вы найдете frbtest_deleteme.

person frb    schedule 11.06.2015
comment
Спасибо, frb, какая команда для загрузки одного файла, пожалуйста? Кроме того, есть ли способ сделать это более безопасным? На данный момент кажется, что любой может вызвать команду, которую вы разместили, это правильно? если нет, пожалуйста, что такое команда входа в систему - возможно, это было неправильно. - person karijd; 16.06.2015
comment
Привет, frb, это работает, если я не использую команду, которая дает перенаправление, но при использовании перенаправления это не так, например. СОЗДАТЬ команду. Кажется, он не возвращает другое местоположение для узла данных, не могли бы вы посоветовать команду, чтобы заставить работать загрузку файла, пожалуйста? спасибо, - person karijd; 22.06.2015
comment
Для других, пытавшихся это сделать, это сработало, чтобы избежать перенаправления: curl -X PUT -L -b test.txt cosmos.lab.fi-ware.org:14000/webhdfs/v1/user/kdempsey/ --header Content-Type:application/octet-stream --header Transfer-Encoding:chunked -T test.txt - person karijd; 23.06.2015
comment
Что касается перенаправления, мы развернули сервер HttpFS, прослушивающий порт 14000, вместо службы HDFS по умолчанию, прослушивающей порт 50070. Такой сервер HttpFS работает как шлюз, что позволяет нам иметь один IP-адрес вместо одного IP-адреса на узел (который это затратно). Вот почему вы всегда видите один и тот же узел в перенаправлениях. - person frb; 23.06.2015