2015-02-22 5 views
0

Мой вопрос: Как использовать ZooKeeper с Hadoop, чтобы все редукторы могли getData()/setData() в один общий znode?Как использовать ZooKeeper с Hadoop для обмена переменной чтения/записи среди редукторов

Мой вариант использования заключается в том, что мне нужно поделиться глобальной переменной чтения/записи среди редукторов в моей задаче MapReduce. Я пытаюсь использовать ZooKeeper для этой цели. Я создал объект ZooKeeper, который создает znode и дает ему начальное значение. Следующим шагом является то, что мне нужны все редукторы, чтобы иметь возможность getData()/setData() для этого znode. Для этого требуется передать объект ZooKeeper всем редукторам, которые я не знаю, как это сделать. Я попытался сериализовать объект ZooKeeper и передать его редукторам (через свойства конфигурации или через распределенный кеш), но класс ZooKeeper не является сериализуемым.

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

+0

Это не ответ, но может быть полезной ссылкой http://zookeeper.apache.org/doc/r3.1.2/zookeeperTutorial.html#sc_producerConsumerQueues –

+1

Большое спасибо Аруну за вашу помощь, я уже наткнулся на это пример раньше. Ответ гарпуна исправил недоразумение, которое у меня было, и решила мою проблему. –

ответ

1

Вы не можете передать объект ZooKeeper сам по себе в карты/редукторы. Просто укажите конфигурацию, необходимую для создания экземпляра объекта ZooKeeper в карте/редукторе (например, connectionString) и передать его через Configuration.

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

+0

Спасибо большое за арпун. У меня было несколько недоразумений, поскольку я новичок в ZooKeeper. Ваш ответ очистил все до меня и решил мою проблему. –

+0

Добро пожаловать! :) Кстати. помните, чтобы поддержать любой ответ, который вы нашли полезным для SO. Благодаря! – harpun