Hadoop Rest API для загрузки/выгрузки

Я пытаюсь выполнить загрузку/выгрузку файла из кластера Hadoop с помощью приложения C#, но мне не удалось найти API-интерфейсы для загрузки и загрузки из документации.

Итак, не могли бы вы сообщить мне, как загружать и скачивать файлы из Hadoop с помощью RestAPI?

Спасибо


person Kalai    schedule 02.06.2014    source источник
comment
Загрузка — это открытие/чтение, а загрузка — создание/запись/добавление, используется терминология файловой системы.   -  person Christophe Roussy    schedule 24.02.2016


Ответы (1)


Вы можете использовать REST API WebHDFS, как описано здесь http://hadoop.apache.org/docs/r1.0.4/webhdfs.html

Изменить:

Создать и записать в файл

Шаг 1:

Отправьте запрос HTTP PUT без автоматического следования перенаправлениям и без отправки данных файла.

curl -i -X ​​PUT "http://:/webhdfs/v1/?op=CREATE [&overwrite=][&blocksize=][&replication=] [&permission=][&buffersize=]"

Запрос перенаправляется на узел данных, куда должны быть записаны данные файла: HTTP/1.1 307 TEMPORARY_REDIRECT Location: http://:/webhdfs/v1/?op=CREATE... Content-Length: 0

Шаг 2:

Отправьте еще один HTTP-запрос PUT, используя URL-адрес в заголовке Location с данными файла для записи.

curl -i -X ​​PUT -T "http://:/webhdfs/v1/?op=CREATE..."

Клиент получает ответ 201 Created с нулевой длиной содержимого и URI WebHDFS файла в заголовке Location: HTTP/1.1 201 Created Location: webhdfs://:/ Content-Length: 0

Обратите внимание, что причина двухэтапного создания/добавления заключается в том, что клиенты не могут отправлять данные до перенаправления. Эта проблема решается заголовком «Ожидать: 100-продолжить» в HTTP/1.1; см. RFC 2616, раздел 8.2.3. К сожалению, существуют ошибки библиотеки программного обеспечения (например, HTTP-сервер Jetty 6 и HTTP-клиент Java 6), которые неправильно реализуют «Ожидание: 100-продолжить». Двухэтапное создание/добавление является временным обходным путем для ошибок библиотеки программного обеспечения.

person Javier Abrego    schedule 02.06.2014
comment
Я ссылался на документацию, но не смог найти API для загрузки и скачивания файлов. - person Kalai; 03.06.2014
comment
Спасибо. Поэтому для загрузки мне нужно создать новый файл и записать в него содержимое загруженного файла. Верно? Так что насчет загрузки? Там в любом случае ? В настоящее время я использую команды оболочки в процессе «cmd» для загрузки файла. - person Kalai; 05.06.2014
comment
Да, вы можете использовать запрос на получение [curl -i -L http://‹HOST›:‹PORT›/webhdfs/v1/‹PATH›?op=OPEN] - person Javier Abrego; 05.06.2014