ПРОГРАММА Cygnus: Файл существует в HDFS, но не может записать данные - PullRequest
1 голос
/ 07 марта 2019

Я использую NGSIHDFSSink для сохранения на HDFS через Cygnus.При получении первого уведомления от Orion создается каталог и правильный файл с данными:

/user/hdfs/openiot/Lamp_001_Lamp/Lamp_001_Lamp.txt

Однако для следующих полученных уведомлений отображается следующая ошибка:

Возникла проблема с текущей конечной точкой, попробуйте другую.Подробности: CygnusPersistenceError.Файл /user/hdfs/openioLamp/Lamp_001_Lamp.txt существует в HDFS, но не может записать данные.Ответ сервера: 403 Запрещено.

Это моя конфигурация Мойки:

cygnus-ngsi.sinks.hdfs-sink.type = com.telefonica.iot.cygnus.sinks.NGSIHDFSSink
cygnus-ngsi.sinks.hdfs-sink.channel = hdfs-channel
cygnus-ngsi.sinks.hdfs-sink.enable_encoding = false
cygnus-ngsi.sinks.hdfs-sink.enable_grouping = false
cygnus-ngsi.sinks.hdfs-sink.enable_lowercase = false
cygnus-ngsi.sinks.hdfs-sink.enable_name_mappings = false
cygnus-ngsi.sinks.hdfs-sink.data_model = dm-by-entity
cygnus-ngsi.sinks.hdfs-sink.file_format = json-column
cygnus-ngsi.sinks.hdfs-sink.backend.impl = rest
cygnus-ngsi.sinks.hdfs-sink.backend.max_conns = 500
cygnus-ngsi.sinks.hdfs-sink.backend.max_conns_per_route = 100
cygnus-ngsi.sinks.hdfs-sink.hdfs_host = my_hdfs_ip
cygnus-ngsi.sinks.hdfs-sink.hdfs_port = 50070
cygnus-ngsi.sinks.hdfs-sink.hdfs_username = hdfs
cygnus-ngsi.sinks.hdfs-sink.hdfs_password =
cygnus-ngsi.sinks.hdfs-sink.oauth2_token =
cygnus-ngsi.sinks.hdfs-sink.service_as_namespace = false
cygnus-ngsi.sinks.hdfs-sink.batch_size = 100
cygnus-ngsi.sinks.hdfs-sink.batch_timeout = 30
cygnus-ngsi.sinks.hdfs-sink.batch_ttl = 10
cygnus-ngsi.sinks.hdfs-sink.batch_retry_intervals = 5000
cygnus-ngsi.sinks.hdfs-sink.hive = false
cygnus-ngsi.sinks.hdfs-sink.krb5_auth = false

Есть идеи?

Большое спасибо

1 Ответ

0 голосов
/ 07 марта 2019

Согласно документации приемника HDFS , Cygnus использует WebHDFS для записи в HDFS.

Я не уверен, но, возможно, WebHDFS рассматривает «создание» и «запись» как разные разрешения, поэтому ваш экземпляр WebHDFS настроен для разрешения только первого, но не последнего. В этом случае может возникнуть проблема с разрешениями на сервере WebHDFS.

Я бы предложил попробовать сам WebHDFS без Cygnus (то есть с использованием Postman или curl), чтобы убедиться, что WebHDFS работает должным образом.

...