2015-02-18 1 views
1

Я пытался понять, как выполняется работа по сокращению карты на HDFS vs S3. Может кто-то, пожалуйста, задайте мои вопросы:Как работает карта-сокращение на HDFS против S3?

Обычно кластеры HDFS не только ориентированы на хранение, но также содержат мощность для выполнения работ MR; и поэтому задания отображаются на нескольких узлах данных и сокращены на несколько. Точнее, отображение (фильтр и т. Д.) Выполняется на локальных данных, тогда как сокращение (агрегация) выполняется на общем узле.

Этот подход работает так же, как на S3? Насколько я понимаю, S3 - это просто хранилище данных. Имеет ли hasoop КОПИРОВАТЬ ВСЕХ данных из S3, а затем запускать Map (фильтр) и сокращать (агрегирование) локально? или он точно соответствует такому же подходу, что и HDFS. Если первый случай верен, выполнение заданий на S3 может быть медленнее, чем выполнение заданий на HDFS (из-за копирования служебных данных).

Пожалуйста, поделитесь своими мыслями.

ответ

1

Производительность S3 медленнее, чем HDFS, но она обеспечивает другие функции, такие как управление версиями и эластичностью ковша и другие схемы восстановления данных (Netflix использует кластер Hadoop с использованием S3).

Теоретически, перед расщепленным вычислением необходимо определить размеры входных файлов, поэтому сам hasoop имеет реализацию файловой системы поверх S3, что позволяет более высоким уровням быть агностиком источника данных. Map-Reduce вызывает общий API для перечисления файлов в каждом каталоге ввода, чтобы получить размер всех файлов в каталоге.

Amazons EMR имеет специальную версию файловой системы S3, которая может передавать данные непосредственно на S3 вместо буферизации в промежуточные локальные файлы, что может ускорить работу с EMR.

1

Если у вас есть кластер Hadoop в EC2, и вы запускаете задание MapReduce по данным S3, да данные будут переданы в кластер, чтобы запустить задание. Как вы говорите, S3 - это просто хранилище данных, поэтому вы не можете привести вычисления к данным. Эти нелокальные чтения могут вызвать узкое место при обработке больших заданий в зависимости от размера данных и размера кластера.