사실 Kafka 의 데이터를 활용할 때, KafkaStrems 를 사용해서 consumer 를 만들거나, ksql 을 쓰거나 혹은 spark 를 쓰는게 일반적이다. 하지만, 실시간성으로 데이터를 다루는게 아니라, 조금 지연되더라도 배치기반으로 처리하고, 그 결과를 아카이빙 할 수 있도록 유지보수하는 요구사항도 꽤 많은데 이럴때는 기냥 hive 에서 KafkaStorageHandler 를 사용하는게 훨씬 간편하다. 기본내용 hive 에서 KafkaStorageHandler 를 사용하는건 아래 문서를 참고하면 된다. https://github.com/apache/hive/blob/master/kafka-handler/README.md 보통 kafka 에 데이터를 적재할때, JSON 과 AVRO 포맷을 많이 ..
커버로스 인증을 하려면 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 를 사용하려면 환경변수를 지정하여 인증하는것도 가능하다. 보통 암호..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cKOixt/btsn7OaVQSh/20me9yAXQzPqESaPb59ny1/img.png)
keberos 인증 기반의 hive 에서 맵핑을 삽질을 워낙 많이 해서 정리하고자 한다. 우선 airflow 의 connection 정보에 다음과 같이 정보 Hive Metastore Thrift 정보가 아래와 같이 입력했다고 가정한다. (참고로 테스트한 airflow 는 2.5.3 기반이었고, python 3.x 버전을 사용했다) 사실 NamedHivePartitionSensor 를 사용하기 위한 용도였고, 이때 필요한 연결이 Hive Metastore Thrift 정보였다. 테스트 방법 dag 를 만들어서 테스트하는것은 연결이 안될때 삽질하기 매우 어렵다. 그래서 NamedHivePartitionSensor 에서 사용하는 코드를 다음과 같이 직접 선언해서 정보를 가져오면 된다. (물론 AIRFLOW_..
웹에서 cross domain 문제를 쉽게 해결하기위해서 사용하기도 하고, 망구성에 따라서 reverse proxy 를 구성하여 사용하면 더 편리하게 운용가능한 경우가 종종 존재한다. 혹은 보안을 위해 외부 연결이 가능한 서버를 최소화하고 해당 서버를 경유해서 내부서버에 붙게 한다거나 뭐 어쨋든 이런걸 해야할 경우를 위한 가장 심플한 방법을 정리하고자 한다. 설치 및 기동 설치는 yum 을 통해 대부분 설치가 가능하며, 사용할때 nginx:nginx 의 유저와 그룹이 존재해야 정상동작된다. 만약, 운영하는 환경이 유저와 그룹을 생성하지 못하게 막아두었다면 해당 문제도 해결을 해야한다. nginx 의 기본 환경설정은 기본 경로는 /etc/nginx/conf.d/defulat.conf 이며, 이 설정을 변경..
이번에 streamsets 를 통해 생성된 스트리밍 데이터를 마이그레이션 할 일 이 있어서 테스트해본 간단한 데이터이다. 참고로 avro 포맷에 스트림으로 처리되다보니 파일갯수는 많은 편이었다. 이때, json 텍스트가 많은 A 테이블과, 일반적인 필드값 수준의 B 테이블이 존재해서 몇가지 압축알고리즘별 실험을 해보았다. 참고로, hive 에서 지원하는 avro 압축알고리즘은 snappy, bzip2, deflate 등이 존재한다. (xz 압축은 테스트 실패함) https://github.com/apache/avro/blob/master/lang/java/avro/src/main/java/org/apache/avro/file/CodecFactory.java#L33-L36 AVRO 압축 하여 저장하는 방법..
HUE 에서는 hive 에 연결하기위해서 beeswax 를 사용하고, 해당 download_row_limit 설정값이 100000 으로 기본 세팅되어있기 때문이다. 해당 값을 늘려서 적용하면 10만건 이상 보는것이 가능하다. https://github.com/cloudera/hue/blob/master/desktop/conf.dist/hue.ini#L1404-L1406 [beeswax] # A limit to the number of rows that can be downloaded from a query before it is truncated. # A value of -1 means there will be no limit. download_row_limit=100000 해결방법 위 설정값을 크게 늘..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/W3APD/btsj02S7XbL/IuLVWiAiZKPYRs60fEub1k/img.png)
kafka 의 데이터를 다룰때 일반적으로 spark, flink, kafka-streams 등 다양한 도구를 사용하지만, 사실 배치기반으로 데이터를 가볍게 조회하고 배치를 돌려보기에는 hive 에서 kafka 를 직접 붙여보는게 가장 손쉽다. 어떻게 사용할까? 사실 이 내용은 readme 문서에도 잘 정리되어있다. https://github.com/apache/hive/blob/master/kafka-handler/README.md 만약, kafka 에 들어있는 파일포맷이 아래와 같은 json 포맷이라면, key 값을 테이블의 필드로 나열하면 된다. 예를 들어, sample_topic 에 아래와 같은 형태의 json 값이 존재한다면 {"name": "gildong", "age": 12, "address"..
python 에서 pip 로 빌드할때 필요한 모듈이 꽤 존재한다. 그래서 아예 자주 쓰는 케이스의 모듈은 아래와 같이 미리 설치하고 생각하면 좀더 편하다 -_- sudo yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel python-devel python3-devel gcc-c++ cyrus-sasl-devel -y 그러면 아래와 같은 오류들은 한방에 피할수 있다. 2023.06.05 - [개발/python] - [PIP] fatal error: Python.h: No such file or director 오류 해결 방법 (centos) 2023.06.06 - [개발/python] - [PIP] gcc: error trying to e..