0

我在Google Compute Engine中部署了一个 6 节点的Hadoop 集群

我使用的是Google 文件系统(GFS) 而不是Hadoop 文件分发系统(HFS)。
. 因此,我想以与 HDFS 中的分布式缓存方法相同的方式访问GFS中的文件

请告诉我一种以这种方式访问​​文件的方法。

4

1 回答 1

1

当在 Google Compute Engine 上运行 Hadoop 并将 Hadoop 的 Google Cloud Storage 连接器作为“默认文件系统”时,GCS 连接器的处理方式与处理 HDFS 的方式完全相同,包括在 DistributedCache 中的使用。因此,要访问 Google Cloud Storage 中的文件,您可以像使用 HDFS 一样使用它,无需进行任何更改。例如,如果您在 GCS 连接器CONFIGBUCKET设置为的情况下部署了集群foo-bucket,并且您有想要放置在 DistributedCache 中的本地文件,您可以这样做:

# Copies mylib.jar into gs://foo-bucket/myapp/mylib.jar
$ bin/hadoop fs -copyFromLocal mylib.jar /myapp/mylib.jar

在您的 Hadoop 工作中:

JobConf job = new JobConf();

// Retrieves gs://foo-bucket/myapp/mylib.jar as a cached file.
DistributedCache.addFileToClassPath(new Path("/myapp/mylib.jar"), job);

如果您想访问与您不同的存储桶中的文件CONFIGBUCKET,您只需要指定一个完整路径,使用gs://而不是hdfs://

# Copies mylib.jar into gs://other-bucket/myapp/mylib.jar
$ bin/hadoop fs -copyFromLocal mylib.jar gs://other-bucket/myapp/mylib.jar

然后在Java中

JobConf job = new JobConf();

// Retrieves gs://other-bucket/myapp/mylib.jar as a cached file.
DistributedCache.addFileToClassPath(new Path("gs://other-bucket/myapp/mylib.jar"), job);
于 2014-11-26T22:03:56.077 回答