#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 работает должным образом.