Доступ к данным в S3 в EMR

У меня есть большой текстовый файл, хранящийся в S3, и я могу получить к нему доступ из EMR (скажем, PIG) напрямую, используя формат «s3:///folder/folder/file» в многоузловом кластере.

Мой вопрос касается эффективности передачи данных на узлы данных. Я считаю, что данные в S3 хранятся в блоках аналогично HDFS.

  1. При чтении файла, как он разделяется и отправляется на каждый из узлов данных?
  2. Контролируется ли распределение по узлам данных с помощью Master Node/Job Tracker?
  3. Является ли более эффективным копирование файла в HDFS, а затем доступ к нему?

person Peter    schedule 14.01.2014    source источник


Ответы (1)


  1. Как правило, нет никакой разницы между чтением из hdfs и s3 при разделении. Класс S3FileSystem (который является классом хранилища для ввода s3) будет использовать общее местоположение и смещение для получения блока файла s3 (используйте HTTP-запрос, включая местоположение, информацию о смещении в заголовке). Более подробную информацию вы можете проверить в выпуске Hadoop.

  2. Да, так же, как процедура HDFS.

  3. Это зависит от рабочего процесса. Если вы читаете один раз, запрашиваете много раз, вам может потребоваться скопировать файлы в HDFS, что выиграет от локального ввода-вывода. В противном случае вы можете просто использовать s3 в качестве хранилища. S3 более стабилен, имеет неограниченное хранилище, хотя, возможно, немного медленнее, чем HDFS. (Я знаю, что Netflix во многих случаях использует s3 в качестве хранилища emr, что, как они говорят, отлично работает)

PS: S3DistCp может помочь вам сделать быстрое копирование между HDFS и S3.

person elprup    schedule 27.01.2014