kinit 을 통해서 커버로스 인증을 했고, hadoop 의 ls 명령으로 hdfs 파일 목록도 조회가 가능했는데...특이하게 kubernetes pod 안에서 beeline 을 통해 호출하면 다음과 같은 오류가 발생했다. 동일한 방법으로 물리서버에서 테스트하면 잘 되는데, kubernetes 환경에서 뜬 pod 안에서만 문제가 되는 상황이었다.$ beeline -u "jdbc:hive2://my-hadoop-002.com:10000/default;principal=hive/_HOST@MYHOME.COM" -e 'show databases'...24/04/30 10:52:52 [main]: ERROR transport.TSaslTransport: SASL negotiation failurejavax.se..
커버로스 기반으로 하둡 클러스터를 관리하고 유저권한을 keytab 으로 관리하다보면, 별도의 유저별로 바꿔서 실행해야 하는 경우가 종종 있다. 그런데 이상하게 아래와 같은 오류가 발생할 때가 있는데, 원인은 HADOOP_PROXY_USER 를 사용하지 않는 상황인데, 해당 값이 지정된 경우 발생된다. % hadoop fs -ls ls: User: flink@MY.HOME.SERVER.COM is not allowed to impersonate sample 해결방법 권한관리를 하다보면, 여러케이스의 유저권한이 존재할 수 있는데, 유저 여러개의 권한을 하나에 부여하고, HADOOP_PROXY_USER 를 지정해서 유저를 지정해서 해당 권한으로 사용하는게 가능하다. 일종의 슈퍼키(?) 처럼 큰 권한을 받은 녀..
kerberos 인증을 위한 정보는 기본적으로는 /etc/krb5.conf 가 기본경로로 되어있다. 하지만, 경우에 따라서는 이 파일을 변경하지 않고 임의로 지정하여 실행해야 하는 경우가 생긴다. 이때 hadoop 명령어 실행시 관련 경로를 지키지 않았을경우 다음과 같은 오류가 발생된다. # ----------------------------------------------- # 커버로스 인증 (krb.conf 가 별도의 경로에 있음을 인지하자) # ----------------------------------------------- % export KEYTAB_PATH=/Users/myUser/hadoop3/keytab % export KRB5_CONFIG=/Users/myUser/hadoop3/key..
하둡클러스터에 접근해서 파일을 확인하고 복사할때 하둡 클라이언트 바이너리를 설치해야한다. 보통 메이저버전만 맞추면 일반적으로 돌아가는 편인데 다음 경로에서 다운로드를 받아 압축을 푼다. https://hadoop.apache.org/releases.html 압축풀기화 설정복사 위 경로에서 다운로드를 받았다면, 다음과 같이 압축해제된 경로를 HADOOP_HOME 으로 경로를 잡아주고, core-site.xml, hdfs-site.xml 설정파일을 복사하면된다. (ambari에서 client 설정을 다운로드 받아서 복사하거나 하둡클러스터 서버에서 해당 설정을 가져와도 된다.) # 하둡 2.10.2 버전 다운로드 및 해제 (/home1/user/ 에서 다운받았다고 가정) $ wget https://dlcdn...
하둡클러스터에 kerberos 인증이 있다면, kinit 명령을 통해서 인증을 거친후 hadoop 명령어를 사용할 수 있다. 하지만, BashOperator 에서 매번 kinit 명령을 넣어서 DAG 를 구성하는건 꽤 번거로운일이다. 왜냐하면, 사용자가 암호를 생략하려면 keytab 파일을 사용해야 하는데 경로를 매번 기억해서 쓰는것도 번거롭다. 다행히 airflow 에서는 커버로스 인증을 주기적으로 하는 옵션이 존재한다. airflow kerberos 사용하기 우선 airflow.cfg 설정에 커버로스 관련 인증 설정이 필요하다. 당연히 인증을 위한 keytab 파일도 존재해야한다. [core] ... security = kerberos .... [kerberos] ccache = /tmp/airflo..
개요 하둡클러스터가 부서별로 여러대를 운영할 경우 rpc-address 를 기반으로 접근하는 경우가 많다. 하지만 HA구성이 되어있다면 리더를 담당하는 서버가 변경되서 동작이 안되는 경우가 존재한다. 이걸 해결하려면 rpc-address 가 아니라 nameservice 를 이용해 접근할 수 있어야 한다. 클러스터가 다른 하둡의 nameservice 를 등록하려면 어떻게 해야할까? 다음과 같은 형식으로 hdfs-site.xml 를 수정하면 여러대의 nameservice 를 사용할 수 있게 된다. NameService 설정 통합방법 보면 클러스터별 hdfs-site.xml 설정파일을 받아서, nameservice 관련된 설정을 묶어서 hdfs-site.xml 설정을 만들어 내면된다. 예를 들면 다음과 같다...
하둡을 사용하다보면 디스크 사용량이 70%를 넘어서기 시작하면 장애가 생기는 경우가 은근히 많다. 그리고, 클러스터의 모니터링 알람같은걸 해두면 알람도 많이 오기 때문에 물리적인 디스크 공간을 확보해야 할 필요가 있다. 이때 가장 먼저 삭제시도할 폴더는 HDFS 의 휴지통 공간이다. 휴지통 용량 확인 & 비우기 다음과 같이 hdfs 의 .Trash 를 확인해보면 그 용량이 꽤 무시못한다. 참고로, "hadoop fs -rm -f " 형태로 지우면, 바로 삭제되는게 아니라 .Trash 폴더로 옮겨지고 특정 기간이 지나면 삭제되는 구조다. 그래서 보통 데이터 마이그레이션과 같이 파일을 많이 복사하고 삭제하는게 반복되면 생각보다 여기에 쌓이는 공간이 꽤 크다. 그래서 hdfs 공간이 부족하면 일단 응급처치(?..