hive 에서 s3 를 연결할 때 core-site.xml 파일에 s3 설정 값을 정상적으로 입력하고, hadoop으로 데이터 조회를 확인하고, hive를 이용하여 테이블 생성까지 되는데, tez 나 mr을 이용한 작업을 돌릴 때 다음과 같은 오류가 발생하였습니다.
Caused by: com.amazonaws.AmazonClientException: No AWS Credentials provided by SimpleAWSCredentialsProvider : org.apache.hadoop.fs.s3a.CredentialInitializationException: Access key, secret key or session token is unset
at org.apache.hadoop.fs.s3a.AWSCredentialProviderList.getCredentials(AWSCredentialProviderList.java:151)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.getCredentialsFromContext(AmazonHttpClient.java:1164)
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.runBeforeRequestHandlers(AmazonHttpClient.java:762)
원인
오류 원인은 신규로 추가된 hive.conf.hidden.list 값이었습니다. 이 부분에 s3 접근을 위한 fs.s3a.secret.key, fs.s3a.access.key 값이 있고, 여기 설정에 들어가 있으면 tez, mr에서 이 값을 읽어 오지 못해서 오류가 발생하였습니다.
https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties
해결 방법
이 문제를 해결하기 위해서는 hive-site.xml에서 해당 값을 제외하여 주면 됩니다.
<configuration>
<property>
<name>hive.conf.hidden.list</name>
<value>javax.jdo.option.ConnectionPassword,hive.server2.keystore.password,fs.s3a.proxy.password,dfs.adls.oauth</value>
</property>
</configuration>
반응형