我正在使用Spark框架使用m4.x16large实例处理数据。我必须从S3中下载许多TB数据,这些数据分布在许多大小为128MB的文件中。根据EC2实例的规格,我应该有高达20Gbps的带宽吞吐量,这将转化为大约2GB / s。但是,当处理来自S3的数据时,我平均只能实现~650MB / s的吞吐量。
实例和S3存储桶都在同一个区域,并且机器的CPU负载没有达到100%所以我假设瓶颈不是处理速度。我正在对数据进行轻量级聚合并将其存储在磁盘中,但我不知道这会如何限制网络吞吐量。
我做错了吗?从S3下载数据时是否可以获得更好的性能?如何才能更好地达到网络带宽的20Gbps理论极限?
编辑:我正在使用最低限度来运行此实例。我创建了一个带有子网的公共VPC,该子网具有到S3的服务端点。
从VPC创建向导中我有:
公有子网实例使用弹性IP或公共IP来访问Internet。