Dan*_*nny 7 hadoop hdfs apache-spark pyspark
我在运行PySpark应用程序:
我正在一个非常大的集群上运行.应用程序从s3读取一些输入文件.其中一个被加载到内存中并广播到所有节点.另一个使用SparkFiles功能分发到集群中每个节点的磁盘.该应用程序可以正常工作但性能比较大的作业要慢.查看日志文件,我看到几乎不断重复的以下警告:
WARN S3AbortableInputStream: Not all bytes were read from the S3ObjectInputStream, aborting HTTP connection. This is likely an error and may result in sub-optimal behavior. Request only the bytes you need via a ranged GET or drain the input stream after use.
Run Code Online (Sandbox Code Playgroud)
它往往发生在有关访问加载到内存和广播的文件的消息之后.这个警告是警告的吗?怎么避免呢?
谷歌搜索带来了几个人在本机Hadoop应用程序中处理此警告,但我在Spark或PySpark中没有发现任何相关信息,也无法弄清楚这些解决方案将如何适用于我.
谢谢!
Ste*_*ran 11
忽略它.最新版本的AWS SDK会在您调用abort()输入流时始终告诉您,即使在移动多GB文件时您需要执行此操作.对于小文件,是的,阅读EOF是正确的做法,但对于大文件,没有.
请参阅:SDK反复抱怨"并非所有字节都是从S3ObjectInputStream中读取的
如果你看到这个有很多,而你与列数据格式,如ORC和实木复合地板的工作,切换输入通过设置属性在连续流过随机IO fs.s3a.experimental.fadvise来random.这使它无法尝试读取整个文件,而只是读取小块.对于完整文件读取(包括.gz文件)非常糟糕,但转换列IO.
请注意,在最终关闭HADOOP-14596的 S3A for Hadoop 3.x中有一个小修复.EMR团队是否要向后移动.
+我将在S3A故障排除文档中添加一些文本.ASF从未发布带有此问题的hadoop版本,但如果人们正在与AWS SDK混合搭配(非常脆弱),那么这可能会浮出水面
| 归档时间: |
|
| 查看次数: |
5584 次 |
| 最近记录: |