Вопрос об использовании C # для общения с Hadoop FileSystem - PullRequest
3 голосов
/ 10 января 2010

В настоящее время мое приложение использует C # с MONO в Linux для связи с локальными файловыми системами (например, ext2, ext3). Основные операции: открыть файл, записать / прочитать файл и закрыть / удалить файл. Для этого в настоящее время я использую собственные API-интерфейсы C # (например, File.Open) для работы с файлом.

Мой вопрос: если я установлю файловую систему Hadoop на моем компьютере с Linux. затем какие изменения мне нужно сделать с моими существующими функциями, чтобы они связывались с файловой системой hadoop для выполнения основных операций над файлом. Поскольку инфраструктура Hadoop основана на Java, приложение C # (с MONO на linux) будет выполнять основные операции с Hadoop. Работают ли базовые API в C # для работы с файлом (likr File.Open или File.Copy) и с файловыми системами Hadoop?

Я думал примерно так: поскольку Hadoop предоставляет C API для файловых операций. Поэтому напишите обертку C и сделайте из нее DLL. Затем используйте эту DLL в коде C # для связи с Hadoop FileSystems.

Это кажется правильным? или же Может кто-нибудь предложить какой-нибудь документ или шаги, чтобы мои программы на c # могли открывать / читать / записывать файлы из Hadoop FileSystems.

спасибо, Анил.

Ответы [ 2 ]

1 голос
/ 11 января 2010

Вы также можете использовать интерфейс Thrift для HDFS, чтобы получить клиент C #. См. http://wiki.apache.org/hadoop/HDFS-APIs для получения дополнительной информации.

Однако я бы порекомендовал маршрут FUSE, поскольку в настоящее время проводится значительная работа по улучшению этого интерфейса и разрешению использования HDFS с собственным клиентом.

Наконец, есть WebDAV-интерфейс , который мы использовали для доступа к файлам HDFS с компьютера с Windows. Вот внутренняя вики-страница:

Как настроить CDH2 + WebDav.

  1. Клонировать репозиторий HDFS через Webdav

     1. git clone git://github.com/huyphan/HDFS-over-Webdav.git
     2. Set HDFS_WEBDAV_SRC_DIR to the path you cloned it to
    
  2. Редактировать conf / hadoop-webdav.sh

    export HADOOP_WEBDAV_HOST = xxx.xxx.xxx.xx # Внешний доступный NN хост / IP export HADOOP_WEBDAV_PORT = 9001 # Выберите порт export HADOOP_WEBDAV_HDFS = hdfs: // localhost: 9000 / # fs.default.name export HADOOP_WEBDAV_CLASSPATH = $ HDFS_WEBDAV_SRC_DIR / lib # См. выше

  3. Build / установить

    export HADOOP_HOME = XXX CD HDFS через Webdav ant -Dhadoop.dir = $ HADOOP_HOME cp bin / * $ HADOOP_HOME / bin cp conf / * $ HADOOP_HOME / conf

  4. Запустить сервер WebDav

    cd $ HADOOP_HOME ./bin/start-webdav.sh # регистрируется в $ HADOOP_HOME / logs

  5. Доступ

     1. Can use user@ authority syntax below if you have HDFS permissions setup
     2. XP: Add network place http://$HADOOP_WEBDAV_HOST:$HADOOP_WEBDAV_PORT/ under "My Network Places"
     3. Vista/Win7: "Map Netowork Drive" using the above ID
     4. Linux CLI: cadaver $HADOOP_WEBDAV_HOST:$HADOOP_WEBDAV_PORT
     5. Linux Nautilus: Go -> Location, use above ID
    

С уважением,

Jeff

1 голос
/ 11 января 2010

Hadoop поддерживает монтирование HDFS с помощью предохранителя: http://wiki.apache.org/hadoop/MountableHDFS Это, вероятно, более простое решение, чем перенос собственных библиотек C, хотя этот подход также будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...