Программное обеспечение Cygnus: файл существует в HDFS, но не удалось записать данные

#hadoop #hdfs #fiware #fiware-cygnus

#hadoop #hdfs #программное обеспечение #программное обеспечение-cygnus

Вопрос:

Я использую 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. Было бы интересно узнать, как вы подписываетесь и какие данные отправляете в Orion, потому что в вашем вопросе говорится о: нет разрешений для /user/hdfs/openioLamp/Lamp_001_Lamp.txt и файл /user/hdfs/openiot/Lamp_001_Lamp/Lamp_001_Lamp.txt которые, очевидно, не совпадают.

2. @jicarretero Я развернул программу настройки HDFS, и проблема была решена. Из-за нехватки ресурсов я попытался заставить его работать с одним узлом HDFS, но, похоже, это не очень хорошо. Факт, на который вы указываете, может быть ошибкой копирования / вставки. Я уже удалил эту тестовую среду. Извините, я не могу это проверить.

Ответ №1:

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

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

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