2017-01-24 2 views
1

В настоящее время у меня есть уровень понимания новичком экосистемы Hadoop и архитектуры HDFS.Плагины Hadoop NameNode и DataNode

Я хотел, однако, чтобы понять некоторые из следующих более глубоких аспектов о HDFS:

  • Есть ли способ, что я могу вклиниться в исполнение NameNode для идентификации файлов добавляются/модифицированную/удален из HDFS - Что-то похожее на События файловой системы в Windows?
  • Могу ли я писать плагины, которые могут расширить функциональность, выполнив специальную обработку, присутствующую в NameNode и DataNode.
  • Узлы данных обычно отправляют отчет блока для всех блоков, которые были реплицированы по ним. Есть ли способ расширить этот отчет блока данных, чтобы добавить пользовательские поля или атрибуты?

Любые указатели на указанные выше вопросы были бы замечательными.

Заранее спасибо за помощь

ответ

1

Есть ли способ, что я могу вклиниться в исполнение NameNode для идентификации файлов добавляются/модифицирована/удалена из HDFS - Что-то похожее на событий файловой системы в Windows?

Да! Последние версии HDFS включают функцию, похожую на Linux inotify, которая позволяет клиенту HDFS прослушивать различные события файловой системы, опубликованные NameNode. К сожалению, у нас нет четкой документации для этой функции на сайте Apache Hadoop прямо сейчас. Если вам нужна дополнительная информация об этой функции, я рекомендую рассмотреть Apache JIRA HDFS-6634, что является основной проблемой, отслеживающей разработку этой функции. Прилагаемые к нему проектные документы и патчи предоставят вам представление о том, как это работает. Кроме того, если вы выполните поиск в Интернете для «HDFS inotify», я ожидаю, что вы найдете несколько полезных презентаций и примеров.

В качестве альтернативы, если вам просто нужна запись обо всех действиях, выполненных клиентами против HDFS, возможно, достаточно проанализировать журнал аудита HDFS. Это файл, хранящийся в том же каталоге, что и общие журналы HDFS, которые записывают строку для большинства действий, выполняемых с NameNode. log4j.properties sample из кодовой базы Hadoop показывает, как включить это. Типичные коммерческие дистрибутивы включены по умолчанию.

Могу ли я писать плагины, которые могут расширить функциональность, выполнив специальную обработку, присутствующую в NameNode и DataNode.

Нет, нет механизма плагина общего назначения. Это преднамеренный выбор дизайна, чтобы избежать риска инъекции потенциально медленного пользовательского кода в критические демоны HDFS, которые, как ожидается, будут хорошо масштабироваться. Есть несколько конкретных точек, которые настраиваются путем реализации определенного класса Java, например проверки разрешений, но он не предназначен как механизм плагина общего назначения для подключения к любому возможному событию.

Функция inotify, упомянутая выше, включает клиента, подключающегося к NameNode и принимающим событиям, и клиент может затем реагировать на эти события, но он считает нужным. Однако это не связано с выполнением пользовательского кода клиента в процессе NameNode.

Узлы данных обычно отправляют отчет блока для всех блоков, которые были реплицированы через них.Есть ли способ расширить этот отчет блока данных, чтобы добавить пользовательские поля или атрибуты?

Единственный способ добиться этого - изменить код HDFS и построить его и развернуть его самостоятельно, по существу создавая собственную вилку. Это может привести к созданию несовместимой версии, которая не будет работать с другими приложениями в экосистеме Hadoop. Hadoop RPC использует Protobuf для определения формата обмена сообщениями, и если он используется правильно, он может обеспечить передовую и обратную совместимость, но ваши изменения, скорее всего, расходятся с развитием, происходящим вверх по течению в Apache.

Если вы считаете, что у вас есть функция для блочных отчетов, которые были бы в целом полезны для всех пользователей HDFS, вы могли бы рассмотреть возможность подачи Apache JIRA, чтобы предложить ее как функцию и получить ее в кодовой базе Apache Hadoop.

+0

Отличные ссылки - спасибо, что упомянул их :). Это действительно помогает направить мой мыслительный процесс, имея в виду доступные функции и текущие ограничения в HDFS –

Смежные вопросы