Den*_*Lee 5 google-app-engine hadoop google-cloud-storage google-hadoop
我正在尝试将在Google Cloud VM上运行的Hadoop连接到Google云端存储.我有:
我可以运行gsutil -ls gs:// mybucket /但没有任何问题,但是当我执行时
hadoop fs -ls gs:// mybucket /
我得到输出:
14/09/30 23:29:31 INFO gcs.GoogleHadoopFileSystemBase: GHFS version: 1.2.9-hadoop2
ls: Error getting access token from metadata server at: http://metadata/computeMetadata/v1/instance/service-accounts/default/token
Run Code Online (Sandbox Code Playgroud)
想知道我缺少哪些步骤让Hadoop能够看到Google存储?
谢谢!
默认情况下,在Google Compute Engine上运行时,gcs-connector针对使用内置服务帐户机制进行了优化,因此为了强制它使用oauth2流,需要设置一些额外的配置键; 您可以从gcloud auth借用相同的"client_id"和"client_secret",如下所示,并将它们添加到您的core-site.xml,同时禁用fs.gs.auth.service.account.enable:
<property>
<name>fs.gs.auth.service.account.enable</name>
<value>false</value>
</property>
<property>
<name>fs.gs.auth.client.id</name>
<value>32555940559.apps.googleusercontent.com</value>
</property>
<property>
<name>fs.gs.auth.client.secret</name>
<value>ZmssLNjJy2998hD4CTg2ejr2</value>
</property>
Run Code Online (Sandbox Code Playgroud)
您也可以选择设置fs.gs.auth.client.file默认值以外的其他值~/.credentials/storage.json.
如果你这样做,那么当你运行时,hadoop fs -ls gs://mybucket你会看到一个新的提示,类似于"gcloud auth login"提示,你将访问浏览器并再次输入验证码.不幸的是,连接器不能直接使用"gcloud"生成的凭证,即使它可能共享凭证存储文件,因为它明确要求它需要的GCS范围(您会注意到新的auth流程会询问仅适用于GCS范围,而不是像"gcloud auth login"这样的大型服务列表.
确保您还在fs.gs.project.idcore-site.xml中设置:
<property>
<name>fs.gs.project.id</name>
<value>your-project-id</value>
</property>
Run Code Online (Sandbox Code Playgroud)
因为GCS连接器同样不会从相关的gcloud auth自动推断默认项目.
| 归档时间: |
|
| 查看次数: |
2522 次 |
| 最近记录: |