인증이 없는 하둡끼리의 distcp 처리를 할 때는 특별히 해줄일이 없다. 굳이 해줘야한다면 다른 nameservice 를 등록해서 처리하면 namenode 의 active/standby 문제를 해결할 수있다는 정도? 하지만, kerberos 인증이 있는 하둡과 인증이 없는 하둡, 혹은 다른 kerberos 인증서버를 사용하는 클러스터간 데이터 복제는 생각보다 해결방법이 잘 안나오는거 같다. 그래서 케이스별 distcp 사용 사례를 정리하고자 한다. 보통 회사에서 팀별로 하둡클러스터를 각자 운영할 때 이런일을 겪을것이다. 1. 인증없는 하둡간 복제 특별히 해줄게 없다. hadoop 명령에서 distcp 명령을 쓰고, src, target 경로만 적어주면 된다. hadoop distcp hdfs://mys..
내가 겪은 케이스는 A 클러스터환경에서, B 클러스터에 붙을수 있도록 nameservice 를 추가후, B클러스터에 붙을때 나타났던 현상이다. 베이스가 되는 hadoop config 은 커버로스 인증을 써야하는 형태로 세팅이 되어있다보니, 인증이 없는 클러스터를 접속하려고 할때, 다른 두 환경에서 세팅이 충돌난 문제이다. A 하둡 클러스터 (커버로스 인증필요) B 하둡 클러스터 (인증 없음) 예를 들면, 오류메시지는 아래와 같다. # ----------------------------- # A 클러스터 접근 (커버로스 인증 필요) # ----------------------------- $ kinit -kt /user1/airflow/airflow.keytab airflow@AHADOOP.MYHOME.C..
하둡바이너리 파일과 hdfs, yarn 관련 xml 을 모두 복사후 yarn application 을 확인하기위해 다음과 같이 실행했더니, 다음과 같은 오류가 발생했다. 참고로 커버로스 인증을 통해야 했고, 커버로스 인증은 kinit 으로 성공했다. 그리고 client 환경이 아니라 하둡이 설치된 서버에 직접 접속해서 테스트하면 이런 오류가 발생되지 않았고, 별도로 설치한 client 환경에서만 이런문제가 발생했다. $ kinit -k -t /user/gildong/gildong.keytab gildong@MYHOME.COM $ yarn application -list 2022-09-07 18:29:34,077 INFO impl.TimelineReaderClientImpl: Initialized Time..
커버로스 인증은 성공했는데, 하둡에서 명령을 실행했을때 다음과 같이 "javax.security.sasl.SaslException: GSS initiate failed" 오류가 날때가 있다. 이 문제를 해결하려면 $JAVA_HOME 하위의 security 파일에 krb5.conf 설정을 복사하면 해결된다. $ kinit product Password for product@MY-DOMAIN.BAR.COM: $ hadoop fs -ls / 2022-05-10 18:55:12,732 WARN security.UserGroupInformation: Not attempting to re-login since the last re-login was attempted less than 60 seconds before..
하둡에 인증을 넣어 관리할때 커버로스 인증을 사용해서 권한 관리를 할때는 hadoop 명령어를 이용해서 접근할 경우 다음과 같이 오류가 발생된다. 그래서 하둡명령을 날리기전에 kinit 명령을 실행해서 인증을 거친이후 하둡명령을 실행해야 사용이 가능하다. $ hadoop fs -ls ls: failure to login: using ticket cache file: FILE:/tmp/krb5cc_p13321 javax.security.auth.login.LoginException: java.lang.IllegalArgumentException: Illegal principal name foo@BAR.COM: org.apache.hadoop.security.authentication.util.Kerbero..
개요 hive 는 쿼리기반으로 데이터를 분석하기 위한 도구이다. 스키마는 메타스토어의 DBMS에 저장되지만 실제 데이터는 기본적으로는 HDFS 에 저장되어 있다. 그래서 hive 에서 논리적으로 테이블, 파티션, 버킷이라고 부르지만, 물리적으로 데이터가 어떻게 저장되어있냐? 하는 관점에서 생각하면 HDFS 의 폴더와 파일로 생각할 수 있다. 하둡 패키지에 따라 root 폴더는 다르겠지만 아래와 같은 폴더 구조로 저장된다는말이다. /apps/hive/warehouse/.db//=/ 예를 들면, 이런 폴더 구조를 생각하면 쉽다 (db폴더) /apps/hive/warehouse/temp.db (table 폴더) /apps/hive/warehouse/temp.db/t_foo (파티션 없는 temp.t_foo 테..
개요 하둡클러스터가 부서별로 여러대를 운영할 경우 rpc-address 를 기반으로 접근하는 경우가 많다. 하지만 HA구성이 되어있다면 리더를 담당하는 서버가 변경되서 동작이 안되는 경우가 존재한다. 이걸 해결하려면 rpc-address 가 아니라 nameservice 를 이용해 접근할 수 있어야 한다. 클러스터가 다른 하둡의 nameservice 를 등록하려면 어떻게 해야할까? 다음과 같은 형식으로 hdfs-site.xml 를 수정하면 여러대의 nameservice 를 사용할 수 있게 된다. NameService 설정 통합방법 보면 클러스터별 hdfs-site.xml 설정파일을 받아서, nameservice 관련된 설정을 묶어서 hdfs-site.xml 설정을 만들어 내면된다. 예를 들면 다음과 같다...