Cloudera를 설치하고, 다른 역할은 다 실행은 됐는데 Oozie에서 Permission 에러가 났다.
다른 서비스는 권한문제가 발생하지 않는데 우지만 권한 문제가 생겨서 해결하는데 어려움을 느꼈다.
다행히 Hive로 생성한 테이블이 HDFS에 잘 저장되었는지 메타스토어에서 확인 해 보면서 문제를 해결하게 됐다.
하이브의 메타정보는 파일의 물리적인 위치와 데이터에 대한 논리적인 정보로 구분할 수 있습니다.
이 메타정보를 보관하고 사용자의 요청에 따라 관련 정보를 제공하는 곳이 하이브 메타스토어입니다.
빅데이터-하둡, 하이브로 시작하기, 5. 메타스토어
여기서 논리적인 정보에 각 유저와 역할이 포함된다.
내가 났던 에러는 Permission Denied : oozie_oozie_server_1 ...과 같은 에러였는데, 해당 유저는 권한이 없다는 내용의 로그였다.
필자는 클라우데라에서 기본으로 제공하는 Postgresql을 사용했고, 아래 쿼리도 해당 DB에 접속해서 날렸다.
select NAME,OWNER_NAME,OWNER_TYPE from DBS;
위 박스처럼 처럼 쿼리를 하면,
+--------------+-----------------+----------------+
| NAME | OWNER_NAME | OWNER_TYPE |
+--------------+-----------------+----------------+
| default | public | ROLE |
| employee | addy | USER |
| test | addy | USER |
다음처럼 역할과 소유자, 타입을 볼 수 있다.
이 때 소유자와 역할은 hdfs와 모두 동일했다.
다만 실제 메타스토에어서 NAME에 해당하는 셀에 oozie_oozie_server가 할당되어있었고
CDH상의 이름은 oozie_oozie_server_1로 설정되어 있었다.
클라우데라에서 우지 설정 - 유저 이름을 메타스토어상의 유저와 동일하게 변경 해 주고 나니 Oozie서버가 정상적으로 작동했었다.
보람찬 삽질이었다.
쿼리는 다음 링크를 참고했다.
https://stackoverflow.com/questions/38924710/how-do-i-find-what-user-owns-a-hive-database
또한, 하이브와 하둡에 대해 더 알고싶다면
빅데이터-하둡,하이브로 시작하기 https://wikidocs.net/28353
를 참고셨으면 좋겠습니다.