GCS Connector Hadoop3 hadoop3-2.2.8 - 缓慢的读取、存在、重命名和创建操作

Sel*_*wwa 6 java hadoop hdfs google-cloud-storage google-cloud-dataproc

在我的 Java 应用程序中,我有一个文件系统层的实现,其中我的文件类是 Hadoop 文件系统方法的包装器。我正在从hadoop3-1.9.17升级到hadoop3-2.2.8,并且我正在使用新版本的阴影 jar 。

我的 File 类具有写入、读取等方法

class File {
    private String path;
    private FileSystem fs;

}
Run Code Online (Sandbox Code Playgroud)

这是我的 write 方法的实现方式

@Override
public OutputStream write(boolean overwriteIfExists) throws IOException {
    return fs.create(path, overwriteIfExists);
}
Run Code Online (Sandbox Code Playgroud)

还有我的阅读方法:

 @Override
 public InputStream read() throws IOException {
     return fs.open(path);
 }
Run Code Online (Sandbox Code Playgroud)

我有一个性能测试用例,我在上面的文件系统实现上运行,它使用org.apache.hadoop.fs.FileSystem测试运行创建许多线程,每个线程创建一个具有特定路径(即 gs://some-bucket/objectX)的 File 类实例,并且每个线程运行相同的操作,读取、重命名、检查存在等。

我在两个版本的 Hadoop 连接器上运行了多次相同的测试,新的 [2.2.8] 显示整体执行时间较慢(几乎是旧连接器时间的 2 倍)。

以下是使用每个连接器版本时每个操作的平均执行时间的比较:

operation, hadoop3-1.9.17, hadoop3-2.2.8
READ       4542.71,        10171.26, (X2 old)
RENAME     1347.75,        4483.27,  (X4 old)
EXISTS     47.23,          1538.74,  (X50 old)
CREATE     570.1,          1539.81,  (X3 old)
Run Code Online (Sandbox Code Playgroud)

我已经检查了这个github 问题并尝试按照建议使用配置/参数微调性能,但未能找到任何改进。

是否有任何参数配置指南可以改善上述操作时间?

或者这个性能问题可能是由于我的类路径 jar 中的某些不兼容造成的?即使我使用的是阴影罐子,其他罐子会干扰吗?

这是我的类路径中的 jar 列表:

  • gcs-connector-hadoop3-2.2.8-shaded.jar
  • 谷歌扩展-0.7.1.jar
  • 谷歌-api-client-1.32.2.jar
  • 谷歌-http-client-apache-v2-1.40.1.jar
  • 原型-google-common-protos-2.7.3.jar
  • 谷歌-http-client-1.41.8.jar
  • 谷歌-oauth-client-1.33.3.jar
  • 谷歌-http-client-jackson2-1.40.1.jar
  • grpc-google-cloud-storage-v2-2.2.2-alpha.jar
  • 谷歌-http-client-gson-1.41.8.jar
  • 谷歌云监控-1.82.0.jar
  • 谷歌云核心-http-2.5.4.jar
  • 原型-google-cloud-storage-v2-2.2.2-alpha.jar
  • google-api-client-jackson2-1.32.2.jar
  • google-api-services-iamcredentials-v1-rev20210326-1.32.1.jar
  • 谷歌-oauth-client-java6-1.27.0.jar
  • 谷歌云核心-grpc-2.5.4.jar
  • google-http-client-appengine-1.34.2.jar
  • 谷歌云核心-2.5.4.jar
  • 谷歌-auth-library-credentials-1.7.0.jar
  • 谷歌云存储-1.106.0.jar
  • 原型-google-iam-v1-1.2.3.jar
  • google-api-services-storage-v1-rev20211018-1.32.1.jar
  • 谷歌-auth-library-oauth2-http-1.7.0.jar
  • proto-google-cloud-monitoring-v3-1.64.0.jar
  • grpc-services-1.43.2.jar
  • grpc-netty-shaded-1.43.2.jar
  • grpc-alts-1.43.2.jar
  • grpc-stub-1.43.2.jar
  • grpc-census-1.43.2.jar
  • grpc-protobuf-1.43.2.jar
  • grpc-api-1.43.2.jar
  • grpc-xds-1.43.2.jar
  • grpc-core-1.43.2.jar
  • grpc-protobuf-lite-1.43.2.jar
  • grpc-context-1.43.2.jar
  • opencensus-contrib-grpc-metrics-0.31.0.jar
  • grpc-auth-1.43.2.jar
  • gax-grpc-2.7.1.jar
  • grpc-grpclb-1.43.2.jar
  • api-common-2.1.4.jar
  • gax-2.7.1.jar
  • gax-httpjson-0.73.0.jar
  • util-2.2.8.jar
  • util-hadoop-hadoop3-2.2.8.jar
  • 自动值注释-1.9.jar