我正在尝试使用bdutil
脚本从部署在 Google Cloud 中的 Hadoop 集群访问 Google Storage 存储桶。如果存储桶访问是只读的,它将失败。
我在做什么:
部署一个集群
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 source code,似乎 Google Cloud Storage Connector for Hadoop 需要空的“目录”对象,如果存储桶可写,它可以自己创建;否则失败。设置fs.gs.implicit.dir.repair.enable=false
导致“检索对象错误”错误。
是否可以以某种方式使用只读存储桶作为 MR 作业输入?
我gsutil
用于文件上传。是否可以在文件上传时强制创建这些空对象?