복붙노트

[HADOOP] Hadoop을 Google Cloud Storage에 연결할 수 없습니다.

HADOOP

Hadoop을 Google Cloud Storage에 연결할 수 없습니다.

Google Cloud VM을 실행중인 Hadoop을 Google Cloud Storage에 연결하려고합니다. 나는 가지고있다:

gsutil -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

하둡이 Google 스토리지를 볼 수있게하기 위해 누락 된 단계가 무엇인지 궁금하십니까?

감사!

해결법

  1. ==============================

    1.기본적으로 Google Compute Engine에서 실행될 때 gcs 커넥터는 기본 제공 서비스 계정 메커니즘을 사용하도록 최적화되어 있으므로 강제로 oauth2 흐름을 사용하려면 설정해야 할 몇 가지 추가 구성 키가 있습니다 ; 다음과 같이 gcloud auth에서 동일한 "client_id"및 "client_secret"을 빌려서 core-site.xml에 추가하고 fs.gs.auth.service.account.enable도 비활성화 할 수 있습니다.

    기본적으로 Google Compute Engine에서 실행될 때 gcs 커넥터는 기본 제공 서비스 계정 메커니즘을 사용하도록 최적화되어 있으므로 강제로 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>
    

    선택적으로 fs.gs.auth.client.file을 기본값 인 ~ / .credentials / storage.json 이외의 값으로 설정할 수도 있습니다.

    이렇게하면 hadoop fs -ls gs : // mybucket을 실행하면 "gcloud auth login"프롬프트와 비슷한 새 프롬프트가 나타나고 여기서 브라우저를 방문하고 인증 코드를 다시 입력하게됩니다. 안타깝게도 커넥터는 필요한 gcs 범위를 명시 적으로 묻기 때문에 자격 증명 저장소 파일을 공유 할 수는 있지만 "gcloud"생성 된 자격 증명을 직접 사용할 수는 없습니다 (새 인증 흐름에서 "gcloud auth login"과 같은 대규모 서비스 목록과는 대조적으로 GCS 범위에만 해당).

    core-site.xml에 fs.gs.project.id도 설정했는지 확인하십시오.

    <property>
      <name>fs.gs.project.id</name>
      <value>your-project-id</value>
    </property>
    

    GCS 커넥터는 관련 gcloud 인증의 기본 프로젝트를 자동으로 유추하지 않기 때문입니다.

  2. ==============================

    2.두 가지 답변을 해주셔서 대단히 감사합니다. 귀하의 답변에 따라 50TB 데이터를 로컬 Hadoop 클러스터에서 Google Cloud Storage로 마이그레이션에서 설명한대로 구성이되었습니다.

    두 가지 답변을 해주셔서 대단히 감사합니다. 귀하의 답변에 따라 50TB 데이터를 로컬 Hadoop 클러스터에서 Google Cloud Storage로 마이그레이션에서 설명한대로 구성이되었습니다.

    새 서비스 계정을 생성 한 다음 서비스 계정 전자 메일 주소와 p12 키를 적용하여 fs.gs.auth.service.account.keyfile을 활용할 수있었습니다.

  3. ==============================

    3.인스턴스 자체가 올바른 서비스 계정을 사용하도록 구성되어 있지 않은 것처럼 보입니다 (gsutil 명령 줄 유틸리티는 있습니다). Hadoop 파일 시스템 어댑터는 이러한 자격 증명을 가져 오지 않는 것처럼 보입니다.

    인스턴스 자체가 올바른 서비스 계정을 사용하도록 구성되어 있지 않은 것처럼 보입니다 (gsutil 명령 줄 유틸리티는 있습니다). Hadoop 파일 시스템 어댑터는 이러한 자격 증명을 가져 오지 않는 것처럼 보입니다.

    먼저 해당 인스턴스가 올바른 서비스 계정으로 구성되어 있는지 확인하십시오. 그렇지 않은 경우 설정할 수 있습니다.

    희망이 도움이!

  4. from https://stackoverflow.com/questions/26132011/hadoop-cannot-connect-to-google-cloud-storage by cc-by-sa and MIT license