Совместимость версий hadoop aws
Есть ли какая-либо ссылка на то, какие наборы версий совместимы между aws, java sdk, hadoop, hadoop-aws bundle, hive, spark?
Например, я знаю, что Spark не совместим с версиями кустов выше Hive 2.1.1
3 ответа
Вы не можете добавить более позднюю версию AWS SDK из того, с которой был создан hadoop-aws, и ожидать, что разъем s3a будет работать. Когда-либо. Это теперь довольно четко записано в документах по устранению неполадок S3A.
Какую бы проблему вы ни испытывали, изменение версии AWS SDK не изменит ситуацию, а только изменит следы стека, которые вы видите.
Это может показаться неприятным, учитывая скорость, с которой команда AWS выпускает новый SDK, но вы должны понимать, что (а) API часто изменяется несовместимо между версиями (как вы видели), и (б) каждый выпуск представляет / перемещает ошибки, которые в конечном итоге вызывают проблемы.
Вот график времени 3.x, который сломался при обновлениях AWS SDK.
- Перемещение 1.11.86 и некоторые тесты зависают под нагрузкой.
- Исправлено: переход к 1.11.134, ведущий к журналам, заполненным AWS, предупреждающим нас о намеренном вызове abort() при чтении.
- Исправлено: переход к 1.11.199, ведущий к журналам, полным следов стека.
- Исправлено: переход к 1.11.271 и затенение JAR в нетто без тени.
Каждое обновление JAR-файла AWS SDK где-то вызывает проблему. Иногда редактируют код и перекомпилируют, чаще всего: журналы, заполняющиеся сообщениями о ложных тревогах, проблемах с зависимостями, особенностях потоков и т. Д. Вещи, которые могут занять время, чтобы всплыть.
то, что вы видите, когда получаете релиз hadoop, это не просто JAR-файл aws-sdk, против которого он был скомпилирован, вы получаете JAR-файл hadoop-aws, который содержит обходные пути и исправления для любых проблем, которые были выпущены в этом выпуске и которые были определены в минимуме 4 недели испытаний перед выпуском Hadoop.
Вот почему нет, вам не следует менять JAR, если вы не планируете выполнить полное сквозное повторное тестирование клиентского кода s3a, включая нагрузочные тесты. Вам предлагается сделать это, проект hadoop всегда приветствует дополнительное тестирование нашего предварительного выпуска кода, с бинарными файлами Hadoop 3.1, готовыми для игры. Но пытаясь сделать это самостоятельно, меняя JAR-файлы? К сожалению, изолированное упражнение при боли.
Похоже, эта матрица доступна здесь:
https://hadoop.apache.org/docs/r3.3.6/hadoop-aws/dependent-anaанализ.html
Это зависимости, совместимые с Hadoop-aws. Как вы можете видеть в URL-адресе, есть «r.3.3.6», вы выбираете любую версию, которую хотите. Я думаю, вы также можете написать там «стабильный», и он выдаст вам последнюю версию.
https://hadoop.apache.org/docs/stable/hadoop-aws/dependent-anaанализ.html
В документации Hadoop указано, что при добавленииhadoop-aws
JAR для зависимостей сборки; он потянет совместимыйaws-sdk
БАНКА.
Итак, я создал фиктивный проект Maven с этими зависимостями для загрузки совместимых версий.
<properties>
<!-- Your exact Hadoop version here-->
<hadoop.version>3.3.1</hadoop.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-aws</artifactId>
<version>${hadoop.version}</version>
</dependency>
</dependencies>
Затем я проверил свои версии зависимостей, использовал их в своем проекте, и это сработало.