일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Lambda architecture
- MapReduce
- java
- HIVE
- airflow
- Windows
- HDFS
- Example DAG
- yarn
- 빅데이터
- Scala
- 람다 아키텍처
- execution_date
- Kafka
- 정규표현식
- hadoop
- slack
- HDP
- LDAP
- python
- ambari
- NoSQL
- re
- Service
- docker
- jupyter
- HBase
- Namenode
- slack app
- SlackWebhookOperator
- Today
- Total
목록BigData/Kafka (8)
IT 삽질기
이번 글에서는 kafka에서 멱등성을 적용한 producer를 사용하기 위해서 어떻게 해야 하는지 알아보도록 하자. 멱등성이란? 멱등성이란 여러 번 연산을 수행하더라도 동일한 결과를 나타내는 것 https://ko.wikipedia.org/wiki/%EB%A9%B1%EB%93%B1%EB%B2%95%EC%B9%99 멱등성 producer 멱등성 producer는 동일한 데이터를 여러번 전송해도 단 한 번만 저장되는 것을 의미한다. 이렇게 멱등성 producer를 적용하게 되면 동일한 데이터를 중복 처리하는 것을 방지할 수 있는데 그 방식에 대해서 알아보도록 하자. 멱등성 적용하기 멱등성 producer를 사용하기 위해서는 enable.idempotence의 옵션 값을 true로 설정하면 되는데, 해당 옵션..
이번 글에서는 Kafka consumer에서 record를 가지고 갈 때 어떤 일이 일어나는지, 처리한 record와 처리할 record를 어떻게 구분하는지에 대해 알아보도록 하자. 아래의 본문에서 이야기하는 내용은 Java를 이용한 consumer application을 개발하는 환경을 가정한 것이다. Kafka consumer offset Kafka에서는 record를 어디까지 처리했는지 구분하기 위해 comsumer offset를 이용한다. consumer offset은 kafka의 내부 topic인 __consumer_offsets를 통해 관리하며, consumer에서 commit이 일어나면 변경된다. consumer는 offset 값을 이용하여 다음에 처리할 record를 consume 하여 사..
Kafka Acks Kafka acks 옵션은 프로듀서가 kafka에 데이터를 전달하고 데이터를 잘 받았는지 확인하는 옵션이라고 생각하면 되는데, 옵션에 따라 확인하는 방법이 달라진다. Kafka에서 제공하는 Acks 옵션은 3가지로 다음과 같다. - 0 - 1 - all(-1) 하나씩 살펴보도록 하자. acks 0 ack 0옵션은 프로듀서가 데이터를 전달한 후 확인하지 않는 것이다. 리더 파티션은 데이터가 저장된 이후 몇번째 오프셋에 저장되는지 리턴하게 되는데, 0으로 설정하면 이를 받지 않고 전달만 하게 된다. 이렇게 지정하는 경우 retries 옵션도 무의미하게 되며 데이터 유실이 발생하는 경우가 발생할 수 있지만 속도는 훨씬 빨라진다. 데이터보다 속도에 중점을 두는 경우 사용할 수 있는 옵션이다...
Kafka Scale out 지난 글에서 Kafka Scale out 작업을 진행했다. 2021.06.01 - [BigData/Kafka] - Kafka scale out 마지막 부분에 언급한 것처럼 scale out을 진행했다고 해서 기존에 사용하고 있던 partition들의 데이터가 새로운 broker로 전달되지 않고, 새로운 topic의 데이터들만 전달되기 때문에 기존 topic의 데이터를 옮기기 위해서는 Patition reassign작업이 필요하다. Partition reassign을 하는 방법은 broker에서 제공하는 명령어를 이용하는 방식과 kafka-manager을 이용하는 방식이 있는데 여기서는 kafka-manager을 이용한 방법을 먼저 설명한다. Partition reassign ..
kafka scale out Kafka scale out을 진행해보자. 공식 문서에 나와있는 cluster 확장에 대한 부분이다. http://kafka.apache.org/documentation/#basic_ops_cluster_expansion 서버를 추가하는 방법은 매우 간단하다. server.properties에서 설정을 변경하면 되는데 다른 설정 값은 기존 kafka 설정과 동일하게 진행하고 일반적으로 변경이 필요한 부분은 아래 2가지 설정이다. - broker.id - listeners broker.id는 kafka 클러스터 내부에서 유일한 값을 가져야 하기 때문에 기존에 사용하던 broker.id와 다른 값을 지정하고, listeners는 kafka broker가 토오신을 위해 열어둘 인터..
ISR(In-Sync-Replicas)이란? ISR은 kafka 리더 파티션과 팔로워 파티션이 모두 싱크가 된 상태를 말하는데, 리더 파티션과 팔로워 파티션에 대해 간단하게 알아보도록 하자. 리더 파티션과 팔로워 파티션 Kafka에서는 복제 계수라는 것이 존재하는데, 이는 Hadoop에서 사용하는 복제 계수와 비슷한 개념으로 데이터의 유실을 방지 하기 위해 사용되는 개념이다. 복제 계수가 2인 kafka topic은 리더 파티션 1개와 팔로워 파티션이 1개 생성이 되며, 데이터를 전달받았을 때 각각 아래의 역할을 수행한다. 리더 파티션 리더 파티션은 producer로부터 데이터를 전달받아 저장하는 작업을 진행 팔로워 파티션 복제 계수를 맞추기 위해 리더 파티션으로부터 데이터를 전달받아 동기화 그림을 통해..
Kafka 보관 주기 설정 오늘은 Kafka 보관 주기를 설정하는 방법에 대해서 알아보자. Kafka에서 데이터를 삭제하지 않으면, 지난 데이터를 다시 가지고 올 수 있지만 그에 따라 디스크 사용량과 카프카 운영 비용 역시 증가하기 때문에 적절하게 설정해주는 것이 좋다. Kafka 보관 주기를 설정하기 위해서는 kafka/config/server.properties에서 설정 내용을 변경하면 된다. 먼저 기본 설정값을 파일과 공식 문서에서 확인해보도록 하자. 설정 파일에 지정되어 있는 값은 위와 같으며, 공식문서를 통해 하나씩 살펴보도록 하자. log.retention.hours 로그 파일을 삭제하기 전 보관하는 보관 주기를 설정하는 옵션으로 기본값으로 168(7일)로 지정되어 있다. hours 단위로 지..
Kafka 시작하기 Docker을 이용해 Kafka를 시작해보자 docker hub에 있는 이미지를 사용했으며 사용한 이미지는 아래의 링크를 참고하기 바란다 hub.docker.com/r/wurstmeister/kafka github.com/wurstmeister/kafka-docker docker-compose를 사용하기 위해 github에서 다운받는다 git clone https://github.com/wurstmeister/kafka-docker.git 다운받은 후 compose 파일을 수정한다. broker을 하나만 올려서 테스트할 것이기 때문에 docker-compose-single-broker.yml 파일을 수정했으며, 수정한 내용은 아래와 같다 ip에는 사용하고 있는 pc의 ip를 넣어주면 ..