2016-04-27 7 views
0

У меня есть объект:Использование DistributedCached в режиме кластера

class Cache { 
    Map<K,V> map; 
} 

Я использовал DistributedCache, чтобы указать URI содержит этот объект, а затем в функции настройки() в каждой задаче карты, я загрузил этот объект кэша для обработки В частности, используется объект Cache для хранения некоторого значения в каждой задаче карты.

Вопрос в том, что содержимое карты в каждом datanode будет отличаться друг от друга при запуске hadoop в режиме кластера. Это правильно? Потому что, когда я развивался в локальном режиме, содержимое карты содержит результат для всего набора данных.

ответ

0

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

Теперь в распределенный кеш вы добавите файлы, используя DistributedCache API. И в методе установки вы проверите файл, который хотите обработать, из массива объекта Path.

+0

Спасибо за ваш ответ, но я имею в виду, что контент map'p будет другим или нет? Пример: узел 1 содержит A, B, C, узел 2 содержит D, E, F ... тогда файл кэша в узле 1 содержит (A, B, C) и файл кеша в узле 2 (D, E, F) ? – nd07

+0

Если вы пишете приложения «Уменьшить количество страниц», где вы хотите, чтобы некоторые файлы были доступны для всех узлов в Hadoop Cluster. Это может быть простой файл свойств или может быть исполняемым файлом jar. Проект Hadoop Map Reduce Project предоставляет нам этот объект с помощью так называемого DistributedCache. Этот распределенный кэш настроен с конфигурацией заданий, что он делает, он предоставляет данные только для чтения для всей машины в кластере. –

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