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..
커버로스 인증을 하려면 kinit 명령을 사용할 수 있어야 한다. 만약, 설치되어있지 않다면 아래와 같이 명령어를 찾을수 없다는 메시지가 출력될것이다. 이때는 kerberos 관련 모듈을 설치해야한다. $ kinit bash: kinit: command not found 설치방법 kinit 명령어가 없다면 centos 에서는 아래와 같은 명령어로 설치하면 된다. sudo yum install krb5-workstation krb5-libs krb5-auth-dialog -y 추가내용 kinit 실행파일이 생겼더라도, 인증서버 관련 정보가 정의된 /etc/krb5.conf 설정도 되어있어야 하는데, 별도의 경로에 존재하는 krb5.conf 를 사용하려면 환경변수를 지정하여 인증하는것도 가능하다. 보통 암호..
keberos 인증 기반의 hive 에서 맵핑을 삽질을 워낙 많이 해서 정리하고자 한다. 우선 airflow 의 connection 정보에 다음과 같이 정보 Hive Metastore Thrift 정보가 아래와 같이 입력했다고 가정한다. (참고로 테스트한 airflow 는 2.5.3 기반이었고, python 3.x 버전을 사용했다) 사실 NamedHivePartitionSensor 를 사용하기 위한 용도였고, 이때 필요한 연결이 Hive Metastore Thrift 정보였다. 테스트 방법 dag 를 만들어서 테스트하는것은 연결이 안될때 삽질하기 매우 어렵다. 그래서 NamedHivePartitionSensor 에서 사용하는 코드를 다음과 같이 직접 선언해서 정보를 가져오면 된다. (물론 AIRFLOW_..
kerberos 인증을 위한 정보는 기본적으로는 /etc/krb5.conf 가 기본경로로 되어있다. 하지만, 경우에 따라서는 이 파일을 변경하지 않고 임의로 지정하여 실행해야 하는 경우가 생긴다. 이때 hadoop 명령어 실행시 관련 경로를 지키지 않았을경우 다음과 같은 오류가 발생된다. # ----------------------------------------------- # 커버로스 인증 (krb.conf 가 별도의 경로에 있음을 인지하자) # ----------------------------------------------- % export KEYTAB_PATH=/Users/myUser/hadoop3/keytab % export KRB5_CONFIG=/Users/myUser/hadoop3/key..
하둡클러스터에 kerberos 인증이 있다면, kinit 명령을 통해서 인증을 거친후 hadoop 명령어를 사용할 수 있다. 하지만, BashOperator 에서 매번 kinit 명령을 넣어서 DAG 를 구성하는건 꽤 번거로운일이다. 왜냐하면, 사용자가 암호를 생략하려면 keytab 파일을 사용해야 하는데 경로를 매번 기억해서 쓰는것도 번거롭다. 다행히 airflow 에서는 커버로스 인증을 주기적으로 하는 옵션이 존재한다. airflow kerberos 사용하기 우선 airflow.cfg 설정에 커버로스 관련 인증 설정이 필요하다. 당연히 인증을 위한 keytab 파일도 존재해야한다. [core] ... security = kerberos .... [kerberos] ccache = /tmp/airflo..