是否有任何关于 aws java sdk、hadoop、hadoop-aws bundle、hive、spark 之间兼容的版本集的引用?
比如我知道Spark不兼容Hive 2.1.1以上的hive版本
最佳答案
您不能从 which hadoop-aws 构建的更高版本的 AWS SDK 中删除并期望 s3a 连接器工作。曾经。现在在 S3A troubleshooting docs 中写得很清楚了。
无论您遇到什么问题,更改 AWS SDK 版本都不会解决问题,只会更改您看到的堆栈跟踪。
考虑到 AWS 团队推出新 SDK 的速度,这似乎令人沮丧,但您必须了解 (a) API 经常在版本之间发生不兼容的变化(如您所见),以及 (b) 每个发布引入/移动了最终导致问题的错误。
这是 AWS SDK 更新时出现问题的 3.x 时间线。
- 移动 1.11.86 和 some tests hang under load .
- 修复:移动到 1.11.134 导致 logs are full of AWS telling us off for deliberatly calling abort() on a read .
- 修复:移动到 1.11.199 导致 logs full of stack traces .
- 修复:移动到 1.11.271 和 shaded JAR pulls in netty unshaded .
AWS 开发工具包 JAR 的每次升级都会在某处导致问题。有时对代码进行编辑并重新编译,最常见的是:日志中充满误报消息、依赖性问题、线程怪癖等。这些事情可能需要一些时间才能浮出水面。
当你获得一个 hadoop 版本时,你看到的不仅仅是一个 aws-sdk JAR,它是根据它编译的,你会得到一个 hadoop-aws JAR,其中包含解决方法和修复该版本引入的和已识别的任何问题在 hadoop 发布发布之前至少进行 4 周的测试。
这就是为什么不应该更改 JAR,除非您计划对 s3a 客户端代码进行完整的端到端重新测试,包括负载测试。我们鼓励您这样做,hadoop 项目始终欢迎对我们的预发布代码进行更多测试,并准备好使用 Hadoop 3.1 二进制文件。但是尝试通过更改 JAR 自己来做?可悲的是,这是一种孤立的痛苦练习。
关于apache-spark - hadoop aws 版本兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49500842/