Удаленное подключение к fiware-cosmos, возвращающее ошибку аутентификации
У нас есть аккаунт COSMOS на cosmos.lab.fi-ware.org
и может загружать файлы локально на кластер.
Однако у нас возникают проблемы с удаленной загрузкой, инструкции, которые мы следовали на сайте руководства, показывают следующее:
Однако использование API RESTful WebHDFS / HttpFS позволит вам загружать файлы, существующие вне глобального экземпляра Cosmos в FI-LAB. В следующем примере используется HttpFS вместо WebHDFS (используется порт 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).
Большое спасибо, Кари
1 ответ
Как пользователь root, я протестировал ваш аккаунт, и он отлично работает:
$ 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
,