HDFS에 넣으려고하는 거대한 양의 S3files 버킷이 있습니다. 관련된 파일의 양을 감안할 때 필자가 선호하는 솔루션은 '분산 복사본'을 사용하는 것입니다. 그러나 어떤 이유로 든 hadoop distcp로 나의 Amazon S3 자격증을 가질 수 없습니다. 내가 사용하는 명령은 다음과 같습니다.Hadoop distcp 제공되는 AWS 인증 정보 없음
hadoop distcp -update s3a://[bucket]/[folder]/[filename] hdfs:///some/path/ -D fs.s3a.awsAccessKeyId=[keyid] -D fs.s3a.awsSecretAccessKey=[secretkey] -D fs.s3a.fast.upload=true
그러나 '-D'인수가없는 것처럼 작동합니다.
ERROR tools.DistCp: Exception encountered
java.io.InterruptedIOException: doesBucketExist on [bucket]: com.amazonaws.AmazonClientException: No AWS Credentials provided by BasicAWSCredentialsProvider EnvironmentVariableCredentialsProvider SharedInstanceProfileCredentialsProvider : com.amazonaws.SdkClientException: Unable to load credentials from service endpoint
내가 hadoop distcp 문서를 살펴 봤지만 왜 이것이 작동하지 않는지에 대한 해결책을 찾을 수 없습니다. 나는 -Dfs.s3n.awsAccessKeyId를 작동하지 않는 플래그로 시도했다. 나는 명시 적으로 자격 증명을 전달하는 것이 좋은 습관이 아니라는 것을 읽었습니다. 어쩌면 이것이 다른 방법으로 할 수있는 좋은 제안 일 수 있습니까?
distcp와 함께 S3 자격 증명을 전달하는 방법은 무엇입니까? 누구?
'-D' 다음에 공백을 사용하지 말아야하지만 명령 줄을 통해 공백을 전달해서는 안됩니다. core-site.xml에있는 것이거나 환경 변수로 정의 된 이유는 무엇입니까? –