我在 Google Compute Engine 中部署了一个6节点 Hadoop群集。
我使用的是 Google文件系统(GFS),而不是 Hadoop文件分发系统(HFS)。
。
所以,我想以与HDFS中分布式缓存方法相同的方式访问 GFS 中的文件
请告诉我一种以这种方式访问文件的方法。
答案 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);