2012-05-20 3 views
0

У меня есть все готовые варианты исполнения - у меня есть работающий кластер и клиентский писатель, который толкает данные о деятельности в HDFS. У меня вопрос о том, что будет дальше. Я понимаю, что мы запускаем задания против данных, которые были сброшены в HDFS, но мои вопросы:Операционная система Hadoop

1) Во-первых, я пишу в поток и периодически промываю - я пишу файлы через поток в HDFS java client, и я не вижу, чтобы файлы отображались в HDFS, пока я не убью свой сервер. Если я напишу достаточно данных для заполнения блока, это автоматически появится в файловой системе? Как мне добраться до того момента, когда у меня есть файлы, готовые для обработки заданиями M/R?

2) Когда мы запускаем задания M/R? Как я уже сказал, я пишу файлы через поток в java-клиенте HDFS, и этот поток имеет блокировку для файла для записи. В какой момент я должен отпустить этот файл? Как это взаимодействие работает? В какой момент «безопасно» запускать работу против этих данных и что происходит с данными в HDFS, когда это делается?

ответ

1

Я попытался бы избежать «жесткой» синхронизации между вводом данных в hadoop и результатами обработки. Я имею в виду, что во многих случаях наиболее практично иметь асинхронные процессы:
a) Один процесс, поместивший файлы в HDFS. Во многих случаях полезно создавать структуру каталогов по датам.
b) Запускать задания для всех, кроме самых последних данных.
Вы можете запускать работу по самым последним данным, но приложение не должно передавать результаты до минуты. В любом случае работа обычно занимает больше, чем несколько минут в любом случае

Еще один момент - добавление не 100% основной, а продвинутая вещь, построенная для HBase. Если вы создадите приложение без его использования, вы сможете работать с другими файлами DFS, такими как amazon s3, которые не поддерживают append. Мы собираем данные в локальной файловой системе, а затем копируем их в HDFS, когда файл достаточно большой.

1
  1. записать данные для заполнения блока, вы увидите файл в системе

  2. M/R представляется в планировщик, который заботится о запустив его с данными, нам не нужно беспокоиться abt

+0

поэтому задание m/r заботится о данных в файлах, которые уже записаны в блок, и мы можем продолжать писать один и тот же дескриптор из java-клиента hdfs? –

+0

Да, как только мы сконфигурировали, мы можем продолжать писать – Satya

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