从hadoop访问只读google存储桶

ct3nt3jp  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(327)

我正在尝试使用 bdutil 脚本。如果bucket访问是只读的,则会失败。
我在做什么:
使用部署群集

bdutil deploy -e datastore_env.sh

在主机上:

vgorelik@vgorelik-hadoop-m:~$ hadoop fs -ls gs://pgp-harvard-data-public 2>&1 | head -10
14/08/14 14:34:21 INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.2.8-hadoop1
14/08/14 14:34:25 WARN gcsio.GoogleCloudStorage: Repairing batch of 174 missing directories.
14/08/14 14:34:26 ERROR gcsio.GoogleCloudStorage: Failed to repair some missing directories.
java.io.IOException: Multiple IOExceptions.
java.io.IOException: Multiple IOExceptions.
    at com.google.cloud.hadoop.gcsio.GoogleCloudStorageExceptions.createCompositeException(GoogleCloudStorageExceptions.java:61)
    at com.google.cloud.hadoop.gcsio.GoogleCloudStorageImpl.createEmptyObjects(GoogleCloudStorageImpl.java:361)
    at com.google.cloud.hadoop.gcsio.GoogleCloudStorageImpl.createEmptyObjects(GoogleCloudStorageImpl.java:372)
    at com.google.cloud.hadoop.gcsio.GoogleCloudStorageImpl.listObjectInfo(GoogleCloudStorageImpl.java:914)
    at com.google.cloud.hadoop.gcsio.CacheSupplementedGoogleCloudStorage.listObjectInfo(CacheSupplementedGoogleCloudStorage.java:455)

看看gcs的java源代码,googlecloud storage connector for hadoop似乎需要空的“directory”对象,如果bucket是可写的,它可以自己创建;否则就失败了。设置 fs.gs.implicit.dir.repair.enable=false 导致“检索对象时出错”错误。
是否可以使用只读存储桶作为mr作业输入?
我用 gsutil 用于文件上载。是否可以强制在文件上载时创建这些空对象?

ndasle7k

ndasle7k1#

是的,您可以使用只读的google云存储桶作为hadoop作业的输入。
例如,我已多次运行此作业:

./hadoop-install/bin/hadoop \
  jar ./hadoop-install/contrib/streaming/hadoop-streaming-1.2.1.jar \
  -input gs://pgp-harvard-data-public/hu0*/*/*/*/ASM/master* \
  -mapper cgi-mapper.py -file cgi-mapper.py --numReduceTasks 0 \
  -output gs://big-data-roadshow/output

这将访问您在上面的示例中提到的同一个只读存储桶。
我们的例子之间的区别是我的结尾是一个glob( * ),googlecloud storage connector for hadoop无需使用任何“占位符”目录对象就可以扩展它。
我建议你用 gsutil 要浏览您感兴趣的只读bucket(因为它不需要“占位符”对象),并且一旦有了一个glob表达式返回要处理的对象列表,就可以在您的应用程序中使用该glob表达式 hadoop 命令。
你第二个问题的答案(“你能吗 gsutil “必须在文件上载时创建这些空对象”当前为“否”。

相关问题