我已经在Google Compute Engine中部署了一个6节点Hadoop集群。
我使用的是Google文件系统(GFS)而不是Hadoop文件分发系统(HFS)。
.所以,我想像HDFS中的分布式缓存方法一样访问GFS中的文件
请告诉我一种以这种方式访问文件的方法。
当在Google Compute Engine上运行Hadoop并将Hadoop的Google Cloud Storage连接器作为"默认文件系统"时,GCS连接器能够以与HDFS完全相同的方式处理,包括在DistributedCache中使用。因此,要访问Google Cloud Storage中的文件,您将以与使用HDFS完全相同的方式使用它,而无需更改任何内容。例如,如果您在部署群集时将 GCS 连接器的CONFIGBUCKET
设置为 foo-bucket
,并且您有要放置在分布式缓存中的本地文件,则需要执行以下操作:
# 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
然后在爪哇中
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);