По умолчанию gcs-коннектор при работе в Google Compute Engine оптимизирован для использования встроенных механизмов учетной записи службы, поэтому, чтобы заставить его использовать поток oauth2, необходимо задать несколько дополнительных ключей конфигурации. ; вы можете заимствовать те же client_id и client_secret из gcloud auth следующим образом и добавить их в свой 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>
При желании вы также можете установить для fs.gs.auth.client.file
значение, отличное от значения по умолчанию ~/.credentials/storage.json
.
Если вы это сделаете, то при запуске hadoop fs -ls gs://mybucket
вы увидите новую подсказку, похожую на подсказку «gcloud auth login», где вы зайдете в браузер и снова введете проверочный код. К сожалению, коннектор не может напрямую использовать сгенерированные gcloud учетные данные, хотя он, возможно, может совместно использовать файл хранилища учетных данных, поскольку он явно запрашивает области GCS, которые ему нужны (вы заметите, что новый поток аутентификации будет запрашивать только для областей GCS, в отличие от большого списка сервисов, таких как "gcloud auth login").
Убедитесь, что вы также установили fs.gs.project.id
в свой core-site.xml:
<property>
<name>fs.gs.project.id</name>
<value>your-project-id</value>
</property>
поскольку коннектор GCS также не определяет автоматически проект по умолчанию из связанной аутентификации gcloud.
person
Dennis Huo
schedule
01.10.2014