2015-12-08 2 views
1

Мой вопрос касается концепции распределенного кеша специально для Hadoop и следует ли его называть распределенным кешем. Обычным определением распределенного кэша является «Распределенный кеш охватывает несколько серверов, чтобы он мог расти в размере и в транзакционной емкости».Концепция распределенного кэша в Hadoop

Это неверно в hadoop, так как распределенный кеш распространяется на все узлы, выполняющие задачи, то есть тот же файл, указанный в коде драйвера.

Не следует ли это называть репликативным кешем . Пересечение кеша на всех узлах должно быть нулевым (или близким к нему), если мы будем придерживаться стандартного определения распределенного кэша. Но для hadoop результатом пересечения является тот же файл, который присутствует во всех узлах.

Насколько я понимаю, я что-то не хватает? Пожалуйста, направляйте.

Благодаря

ответ

1

Общее понимание и концепция любого Cache, чтобы сделать данные доступными в памяти и избежать удара диска для считывания данных. Поскольку чтение данных с диска является более дорогостоящей операцией, чем чтение из памяти.

Теперь давайте проведем ту же аналогию с экосистемой Hadoop. Здесь находится ваш HDFS, а memory - это локальная файловая система, в которой выполняются реальные задачи. В течение жизненного цикла приложения на одном узле может выполняться несколько задач. Поэтому, когда первая задача запускается в узле, она будет извлекать данные из HDFS и помещать их в локальную систему. Теперь последующие задачи на одном и том же узле не будут возвращать одни и те же данные снова. Таким образом, это позволит сэкономить затраты на получение данных от HDFS до получения их из локальной файловой системы. Концепция Distributed Cache в MapReduce рамки.

Размер данных обычно достаточно мал, чтобы его можно было загружать в память Mapper, обычно в несколько МБ.

1

Я тоже согласен, что это действительно не "Distributed cache". Но я убежден в комментариях YoungHobbit об эффективности не удалять диск для операций ввода-вывода.

Единственная заслуга, я видел в этом механизме согласно Apache документации:

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

Обратите внимание: DistributedCache устарел с версии 2.6.0. Вы должны использовать новые API в классе Job для достижения такой же функциональности.

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