Подтвердить что ты не робот

Технически какая разница между s3n, s3a и s3?

Я знаю о существовании https://wiki.apache.org/hadoop/AmazonS3 и следующих слов:

S3 Native FileSystem (схема URI: s3n) Собственная файловая система для чтения и записи обычных файлов на S3. Преимущество этой файловой системы состоит в том, что вы можете получить доступ к файлам на S3, которые были написаны с помощью других инструментов. И наоборот, другие инструменты могут обращаться к файлам, написанным с использованием Hadoop. Недостатком является ограничение 5 ГБ на размер файла, налагаемый S3.

S3A (схема URI: s3a). Преемник S3 Native, s3n fs, система S3a: использует библиотеки Amazon для взаимодействия с S3. Это позволяет S3a поддерживать более крупные файлы (не более 5 ГБ), более высокую производительность и многое другое. Файловая система предназначена для замены/преемника S3 Native: все объекты, доступные из URL-адресов s3n://, также должны быть доступны из s3a, просто заменив схему URL.

S3 Block FileSystem (схема URI: s3) Файловая система на основе блоков, поддерживаемая S3. Файлы хранятся в виде блоков, как и в HDFS. Это позволяет эффективно выполнять переименование. Эта файловая система требует, чтобы вы выделили ведро для файловой системы - вы не должны использовать существующее ведро, содержащее файлы, или записывать другие файлы в одно и то же ведро. Файлы, хранящиеся в этой файловой системе, могут быть больше 5 ГБ, но они не совместимы с другими инструментами S3.

Почему изменение письма в URI может иметь такое значение? Например

val data = sc.textFile("s3n://bucket-name/key")

to

val data = sc.textFile("s3a://bucket-name/key")

Какова техническая разница, лежащая в основе этого изменения? Есть ли хорошие статьи, которые я могу прочитать по этому поводу?

4b9b3361

Ответ 1

Изменение буквы в схеме URI имеет большое значение, потому что оно вызывает использование другого программного обеспечения для взаимодействия с S3. Что-то вроде разницы между http и https - это изменение всего на одну букву, но оно вызывает большую разницу в поведении.

Разница между s3 и s3n/s3a заключается в том, что s3 является оверлеем на основе блоков поверх Amazon S3, а s3n/s3a - нет (они основаны на объектах).

Разница между s3n и s3a заключается в том, что s3n поддерживает объекты размером до 5 ГБ, в то время как s3a поддерживает объекты до 5 ТБ и имеет более высокую производительность (оба из-за того, что он использует загрузку из нескольких частей). s3a является преемником s3n.

Если вы здесь, потому что хотите понять, какую файловую систему S3 вам следует использовать с Amazon EMR, прочитайте эту статью от Amazon (доступно только на промежуточной машине). Сеть: use s3://, потому что s3://и s3n://функционально взаимозаменяемы в контексте EMR, а s3a://не совместима с EMR.

Дополнительные советы см. в разделе Работа с системами хранения и файловыми системами.

Ответ 2

в Apache Hadoop "s3://" относится к исходному клиенту S3, который использовал нестандартную структуру для масштабируемости. Эта библиотека устарела и скоро будет удалена,

s3n является его преемником, который использовал прямые пути к объектам, так что вы можете читать и записывать данные с другими приложениями. Как и s3://, он использует jets3t.jar для общения с S3.

В сервисе Amazon EMR s3://относится к собственному клиенту Amazon S3, который отличается. Путь в s3://в EMR ссылается непосредственно на объект в хранилище объектов.

В Apache Hadoop S3N и S3A являются коннекторами для S3, а S3A - преемник, созданный с использованием Amazon AWS SDK. Почему новое имя? так что мы могли бы отправить его рядом с тем, который был стабильным. S3A - это то место, где идет вся текущая работа по масштабируемости, производительности, безопасности и т.д. S3N остался один, поэтому мы его не сломим. S3A поставлялся в Hadoop 2.6, но до 2.7 все еще стабилизировался, в основном с небольшими проблемами масштаба.

Если вы используете Hadoop 2.7 или более позднюю версию, используйте s3a. Если вы используете Hadoop 2.5 или более раннюю версию. s3n, если вы используете Hadoop 2.6, это более сложный выбор. -I попробуем s3a и переключимся обратно на s3n, если были problems-

Подробнее об истории см. http://hortonworks.com/blog/history-apache-hadoops-support-amazon-s3/

2017-03-14 Обновление на самом деле, разделение на S3a в Hadoop 2.6 нарушено, так как размер блока, возвращаемого при вызове listFiles(), равен 0: такие как Spark & Pig разделить работу на одну задачу/байт. Вы не можете использовать S3a для аналитической работы в Hadoop 2.6, даже если основные операции с файловой системой & генерация данных счастлива. Hadoop 2.7 исправляет это.

2018-01-10 Обновление Hadoop 3.0 сократил свои реализации s3: и s3n: s3a - это все, что вы получите. Теперь он значительно лучше своего предшественника и работает так же хорошо, как и реализация Amazon. Amazon "s3:" по-прежнему предлагается компанией EMR, которая является их клиентом с закрытым исходным кодом. Обратитесь к документам EMR для получения дополнительной информации.