与Google文件系统中Hadoop分布式文件系统的分布式缓存有类似的功能

时间:2014-11-25 21:03:48

标签: hadoop hdfs google-compute-engine distributed-cache gfs

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

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

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

1 个答案:

答案 0 :(得分:1)

在Google Compute Engine上运行Hadoop并将Hadoop的Google云端存储连接器作为“默认文件系统”时,GCS连接器的处理方式与处理HDFS的方式完全相同,包括在DistributedCache中使用。因此,要访问Google云端存储中的文件,您的使用方式与使用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);