flink sql 에서 kafka connector type 을 지원하고, document 에도 예제는 잘 정리되어있다. 하지만, Kafka 에 SCRAM-SHA-512 인증이 있어서 properties 값을 적용해야하는 경우 어떻게 해야하는지 예시가 없는듯 하다. 이걸 해결하는 방법을 알려주고자 한다. 보통 kafka consumer 를 직접 만들때, 다음과 같은 형태의 연결정보에 이용한다는걸 가정하고 예제를 들어보겠다. # 연결정보 bootstrap.servers=kafka.myhome.com:9093 schema.registry.url=http://schema.myhome.com:8081 # 인증관련설정 sasl.mechanism=SCRAM-SHA-512 security.protocol=SASL_P..
참고로 이 문제는 Flink 1.14.x 버전대에서 JDK11 버전을 이용할때 아래와 같은 문제가 발생된다. 나같은 경우 hadoop 2.6.x 버전에 hive 2.3.6 을 사용하는데, JDK 호환성의 영향이 존재했었다. https://issues.apache.org/jira/browse/HIVE-22415 https://issues.apache.org/jira/browse/HADOOP-12760 $ java -version openjdk version "11.0.13" 2021-10-19 LTS OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mod..
내가 겪은 케이스는 A 클러스터환경에서, B 클러스터에 붙을수 있도록 nameservice 를 추가후, B클러스터에 붙을때 나타났던 현상이다. 베이스가 되는 hadoop config 은 커버로스 인증을 써야하는 형태로 세팅이 되어있다보니, 인증이 없는 클러스터를 접속하려고 할때, 다른 두 환경에서 세팅이 충돌난 문제이다. A 하둡 클러스터 (커버로스 인증필요) B 하둡 클러스터 (인증 없음) 예를 들면, 오류메시지는 아래와 같다. # ----------------------------- # A 클러스터 접근 (커버로스 인증 필요) # ----------------------------- $ kinit -kt /user1/airflow/airflow.keytab airflow@AHADOOP.MYHOME.C..
통합 테스트를 하려고 했는데, MYSQL 의존성이 있어서 세팅이 필요한 경우가 있다. 가장 가볍게 구성하려면, Docker 를 이용하는게 가장 손쉬운것 같다. docker 를 이용해서 mysql 8 버전을 띄우고, 외부접근 가능한 계정까지 만들어 보자. 1. docker 를 통해 mysql 기동하기 docker 가 설치되어있다면 아주 간단한 명령어로 기동이 가능하다. docker pull mysql:8.0.22 docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=암호 -d -p 3306:3306 mysql:8.0.22 만약, 프로세스가 종료되도 db의 데이터가 유지되어야 한다면 볼륨마운트를 해야한다. (안그러면 컨테이너 종료하면 사라짐) 실행할 때 -v ..
서버에 설치된 하둡버전이 hadoop-3.3.1 버전이었는데, hadoop-3.2.3 의 다른 버전을 사용했을때 나타났던 문제이다. protobuf 는 원격지에 데이터를 직렬화 하기위한 인터넷 프로토콜인데 의존된 버전간이 달라지면서 호환성에 문제가 있는게 문제가 아닌가 의심된다. 결국 서버에 있는 하둡버전과 동일하게 클라이언트 환경을 다시 세팅후 성공했다. 신기한건 hadoop fs 명령으로 hdfs 를 확인할때는 문제가 없었는데, yarn 명령을 이용하려고 할때 문제가 발생되었다. # 서버는 3.3.1 , 현재 서버의 하둡클라이언트 버전은 3.2.3 $ yarn application -list 2022-09-07 17:50:51,598 WARN util.NativeCodeLoader: Unable to..
하둡바이너리 파일과 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..
증상 다음과 같이 Flink 에서 하둡클러스터의 yarn 기반에서 application 잘 invoke 되는지 테스트를 하려고 했는데, 다음과 같은 오류가 나는 경우가 발생했다. 참고로 오류메시지는 다르지만 기존에 "com/sun/jersey/core/util/FeaturesAndProperties" 클래스를 찾을수 없다며 오류를 냈던 케이스와 동일하게 해결이 가능했다. 2022.03.18 - [데이터처리/Flink] - [Flink] yarn-session.sh 오류 : java.lang.NoClassDefFoundError $ ./bin/flink run-application -t yarn-application ./examples/streaming/TopSpeedWindowing.jar ...생략....
Flink 1.14 에서는 잘 동작하던 쿼리가 Flink 1.15 에서 오류가 발생되었다. 쿼리는 kafka 테이블을 mysql 혹은 hdfs 에 sink 하는 로직이었고, 1.15.2 버전이 나와서 그걸 써도 동일한 문제가 발생되었다. Flink SQL> > INSERT INTO MysqlSource > SELECT > DATE_FORMAT(window_start, 'yyyy-MM-dd') AS ymd, > DATE_FORMAT(window_start, 'HHmm') AS hh24, > keyword, > COUNT(*) as cnt > FROM TABLE( > TUMBLE( > DATA => TABLE KafkaSource, > TIMECOL => DESCRIPTOR(logTime), > SIZE =..