2013-05-30 7 views
2

У нас есть процесс загрузки файлов на S3. На самом деле это косвенно. Мы используем Amazon Elastic MapReduce (EMR), а Hadoop записывает файлы на S3 из разных узлов. Затем после успешного выполнения задания Hadoop другая часть процесса использует файл FileSystem.createNewFile() Hadoop для создания некоторых файлов с главного узла.Как S3 назначает отметку времени при загрузке?

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

Я считаю, что это иногда неверно, но почему?

Что назначает метку времени S3-файлу? Это клиент Amazon EMR Hadoop или какой-либо S3-машине?

Если у меня есть две машины, загружающие на S3, чьи локальные часы отличаются на 30 минут, отметки времени будут на 30 минут друг от друга?

ответ

1

Вы не можете самостоятельно установить значения Last-Modified. S3 решает их:

https://forums.aws.amazon.com/thread.jspa?messageID=209241

+0

Предположительно, это какой-то сервер S3, но может быть другим для каждого файла. – dfrankow

+0

Если я правильно понимаю ваш комментарий, то да. У вас нет контроля над тем, какой сервер вы попали или точное значение часов этого сервера. – sethwm

1

Единственная временная метка в S3, по-видимому, является метаданными «Last Modified». Я считаю, что последняя измененная дата/время обновляется самой системой S3 и отражает время, когда файл завершил загрузку полностью на S3 (S3 не будет показывать неполные передачи.)

Поэтому не имеет значения, какой узел вы загружаете файл, временная метка «последний измененный» на S3 должна быть одинаковой, когда вы перечислите ее на S3.

+0

Это то же самое, когда я перечисляю, но когда я загрузить два файла в порядке A, B, иногда временные метки показывают порядок B, A. Таким образом, поскольку Есть несколько машины, участвующие в S3, мне интересно, определяет ли клиент или сервер метку времени. – dfrankow

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