[HADOOP] Hadoop을 Google Cloud Storage에 연결할 수 없습니다.
HADOOPHadoop을 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.기본적으로 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.두 가지 답변을 해주셔서 대단히 감사합니다. 귀하의 답변에 따라 50TB 데이터를 로컬 Hadoop 클러스터에서 Google Cloud Storage로 마이그레이션에서 설명한대로 구성이되었습니다.
두 가지 답변을 해주셔서 대단히 감사합니다. 귀하의 답변에 따라 50TB 데이터를 로컬 Hadoop 클러스터에서 Google Cloud Storage로 마이그레이션에서 설명한대로 구성이되었습니다.
새 서비스 계정을 생성 한 다음 서비스 계정 전자 메일 주소와 p12 키를 적용하여 fs.gs.auth.service.account.keyfile을 활용할 수있었습니다.
-
==============================
3.인스턴스 자체가 올바른 서비스 계정을 사용하도록 구성되어 있지 않은 것처럼 보입니다 (gsutil 명령 줄 유틸리티는 있습니다). Hadoop 파일 시스템 어댑터는 이러한 자격 증명을 가져 오지 않는 것처럼 보입니다.
인스턴스 자체가 올바른 서비스 계정을 사용하도록 구성되어 있지 않은 것처럼 보입니다 (gsutil 명령 줄 유틸리티는 있습니다). Hadoop 파일 시스템 어댑터는 이러한 자격 증명을 가져 오지 않는 것처럼 보입니다.
먼저 해당 인스턴스가 올바른 서비스 계정으로 구성되어 있는지 확인하십시오. 그렇지 않은 경우 설정할 수 있습니다.
희망이 도움이!
from https://stackoverflow.com/questions/26132011/hadoop-cannot-connect-to-google-cloud-storage by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Java Hadoop : 입력 파일로 가져와 각 파일의 줄 수를 출력하는 매퍼를 어떻게 만들 수 있습니까? (0) | 2019.07.27 |
---|---|
[HADOOP] Hadoop Map Reduce에서 PDF 파일 파싱 (0) | 2019.07.27 |
[HADOOP] Hadoop 프로그램에서 출력 키 / 값 클래스를 명시 적으로 설정해야하는 이유는 무엇입니까? (0) | 2019.07.27 |
[HADOOP] HBase 테이블에서 모든 열 이름을 가져올 수 있습니까? (0) | 2019.07.27 |
[HADOOP] Spark 클러스터 및 Cassandra 용 JanusGraph 설정 및 구성 (0) | 2019.07.27 |