общая переменная в карте уменьшает - PullRequest
0 голосов
/ 10 августа 2011

Мне нужна переменная, которая разделяется между задачами сокращения, и каждая из задач сокращения может читать и писать в нее атомарно.Причина, по которой мне нужна такая переменная, заключается в присвоении уникального идентификатора каждому файлу, созданному с помощью задачи сокращения (количество файлов, созданных с помощью задачи сокращения, не является детерминированным).

Спасибо

Ответы [ 3 ]

1 голос
/ 10 августа 2011

В моем понимании ZooKeeper специально создан для обеспечения атомарного доступа к переменным всего кластера.

0 голосов
/ 11 августа 2011

Все выходные файлы, созданные редукторами, уже имеют уникальные имена part-r-00001 и подобные.Есть номер раздела, который вы можете прочитать, если вам нужен этот номер из вашего кода.

Централизованные счетчики, которые должны быть гарантированно уникальными, нарушают масштабируемость Hadoop.

Так что если вам нужночто-то другое, тогда я бы использовал что-то вроде Sha1 идентификатора задачи редуктора, чтобы получить нечто уникальное для нескольких заданий.

0 голосов
/ 10 августа 2011

Я бы рекомендовал использовать FileSystem.createNewFile().

Посмотрите здесь:

http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/fs/FileSystem.html#createNewFile%28org.apache.hadoop.fs.Path%29

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