Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
NDC18에서 발표하였습니다. 현재 보고 계신 슬라이드는 1부 입니다.(총 2부)
- 1부 링크: https://goo.gl/3v4DAa
- 2부 링크: https://goo.gl/wpoZpY
(SlideShare에 슬라이드 300장 제한으로 2부로 나누어 올렸습니다. 불편하시더라도 양해 부탁드립니다.)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
Apache Kafak의 빅데이터 아키텍처에서 역할이 점차 커지고, 중요한 비중을 차지하게 되면서, 성능에 대한 고민도 늘어나고 있다.
다양한 프로젝트를 진행하면서 Apache Kafka를 모니터링 하기 위해 필요한 Metrics들을 이해하고, 이를 최적화 하기 위한 Configruation 설정을 정리해 보았다.
[Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안]
Apache Kafka 성능 모니터링에 필요한 metrics에 대해 이해하고, 4가지 관점(처리량, 지연, Durability, 가용성)에서 성능을 최적화 하는 방안을 정리함. Kafka를 구성하는 3개 모듈(Producer, Broker, Consumer)별로 성능 최적화를 위한 …
[Apache Kafka 모니터링을 위한 Metrics 이해]
Apache Kafka의 상태를 모니터링 하기 위해서는 4개(System(OS), Producer, Broker, Consumer)에서 발생하는 metrics들을 살펴봐야 한다.
이번 글에서는 JVM에서 제공하는 JMX metrics를 중심으로 producer/broker/consumer의 지표를 정리하였다.
모든 지표를 정리하진 않았고, 내 관점에서 유의미한 지표들을 중심으로 이해한 내용임
[Apache Kafka 성능 Configuration 최적화]
성능목표를 4개로 구분(Throughtput, Latency, Durability, Avalibility)하고, 각 목표에 따라 어떤 Kafka configuration의 조정을 어떻게 해야하는지 정리하였다.
튜닝한 파라미터를 적용한 후, 성능테스트를 수행하면서 추출된 Metrics를 모니터링하여 현재 업무에 최적화 되도록 최적화를 수행하는 것이 필요하다.
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
NDC18에서 발표하였습니다. 현재 보고 계신 슬라이드는 1부 입니다.(총 2부)
- 1부 링크: https://goo.gl/3v4DAa
- 2부 링크: https://goo.gl/wpoZpY
(SlideShare에 슬라이드 300장 제한으로 2부로 나누어 올렸습니다. 불편하시더라도 양해 부탁드립니다.)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
황민호(robin.hwang) / kakao corp. DSP개발파트
---
최근 Spring Cloud와 Netflix OSS로 MSA를 구성하는 시스템 기반의 서비스들이 많아지는 추세입니다.
카카오에서도 작년에 오픈한 광고 플랫폼 모먼트에 Spring Cloud 기반의 MSA환경을 구성하여, API Gateway도 적용하였는데 1년 반 정도 운영한 경험을 공유할 예정입니다. 더불어 MSA 환경에서는 API Gateway를 통해 인증을 어떻게 처리하는지 알아보고 OAuth2 기반의 JWT Token을 이용한 인증에 대한 이야기도 함께 나눌 예정입니다.
고승범(peter.ko) / kakao corp.(인프라2팀)
---
카카오에서는 빅데이터 분석, 처리부터 모든 개발 플랫폼을 이어주는 솔루션으로 급부상한 카프카(kafka)를 전사 공용 서비스로 운영하고 있습니다. 전사 공용 카프카를 직접 운영하면서 경험한 트러블슈팅과 운영 노하우 등을 공유하고자 합니다. 특히 카프카를 처음 접하시는 분들이나 이미 사용 중이신 분들이 많이 궁금해하는 프로듀서와 컨슈머 사용 시의 주의점 등에 대해서도 설명합니다.
Little Big Data #1 다양한 사람들의 데이터 사이언스 이야기에서 발표한 자료입니다
궁금한 것은 언제나 문의주세요 :)
행사 후기는 https://zzsza.github.io/etc/2018/04/21/little-big-data/ 에 있습니다!
(2018.5 내용 추가) 현재 회사가 없으니, 제게 관심있으신 분들도 연락 환영합니다 :)
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019Amazon Web Services Korea
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용
김태현 솔루션즈 아키텍트, AWS
AWS에서는 Big Data 분석 및 처리를 위해 분석 목적에 맞는 다양한 Big Data Framework 서비스를 지원합니다. 이 세션에서는 시간이 지날수록 증가하는 데이터의 분석 및 처리를 위해 사용되는 AWS Glue와 Amazon EMR 같은 AWS Big Data Framework의 내부구조를 살펴보고 머신러닝을 포함한 다양한 분석 및 ETL을 위해 효율적으로 사용할 수 있는 방법들을 소개합니다.
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
Apache Iceberg - A Table Format for Hige Analytic DatasetsAlluxio, Inc.
Data Orchestration Summit
www.alluxio.io/data-orchestration-summit-2019
November 7, 2019
Apache Iceberg - A Table Format for Hige Analytic Datasets
Speaker:
Ryan Blue, Netflix
For more Alluxio events: https://www.alluxio.io/events/
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
황민호(robin.hwang) / kakao corp. DSP개발파트
---
최근 Spring Cloud와 Netflix OSS로 MSA를 구성하는 시스템 기반의 서비스들이 많아지는 추세입니다.
카카오에서도 작년에 오픈한 광고 플랫폼 모먼트에 Spring Cloud 기반의 MSA환경을 구성하여, API Gateway도 적용하였는데 1년 반 정도 운영한 경험을 공유할 예정입니다. 더불어 MSA 환경에서는 API Gateway를 통해 인증을 어떻게 처리하는지 알아보고 OAuth2 기반의 JWT Token을 이용한 인증에 대한 이야기도 함께 나눌 예정입니다.
고승범(peter.ko) / kakao corp.(인프라2팀)
---
카카오에서는 빅데이터 분석, 처리부터 모든 개발 플랫폼을 이어주는 솔루션으로 급부상한 카프카(kafka)를 전사 공용 서비스로 운영하고 있습니다. 전사 공용 카프카를 직접 운영하면서 경험한 트러블슈팅과 운영 노하우 등을 공유하고자 합니다. 특히 카프카를 처음 접하시는 분들이나 이미 사용 중이신 분들이 많이 궁금해하는 프로듀서와 컨슈머 사용 시의 주의점 등에 대해서도 설명합니다.
Little Big Data #1 다양한 사람들의 데이터 사이언스 이야기에서 발표한 자료입니다
궁금한 것은 언제나 문의주세요 :)
행사 후기는 https://zzsza.github.io/etc/2018/04/21/little-big-data/ 에 있습니다!
(2018.5 내용 추가) 현재 회사가 없으니, 제게 관심있으신 분들도 연락 환영합니다 :)
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019Amazon Web Services Korea
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용
김태현 솔루션즈 아키텍트, AWS
AWS에서는 Big Data 분석 및 처리를 위해 분석 목적에 맞는 다양한 Big Data Framework 서비스를 지원합니다. 이 세션에서는 시간이 지날수록 증가하는 데이터의 분석 및 처리를 위해 사용되는 AWS Glue와 Amazon EMR 같은 AWS Big Data Framework의 내부구조를 살펴보고 머신러닝을 포함한 다양한 분석 및 ETL을 위해 효율적으로 사용할 수 있는 방법들을 소개합니다.
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
Apache Iceberg - A Table Format for Hige Analytic DatasetsAlluxio, Inc.
Data Orchestration Summit
www.alluxio.io/data-orchestration-summit-2019
November 7, 2019
Apache Iceberg - A Table Format for Hige Analytic Datasets
Speaker:
Ryan Blue, Netflix
For more Alluxio events: https://www.alluxio.io/events/
‘CrushFTP’ 솔루션은 Unix, Linux, Windows, OSX 등 다양한 플랫폼에서 실행되는 매우 강력하고 사용하기 쉬운 파일 전송 및 공유를 위한 전문 SFTP 서버 솔루션입니다.
- SFTP, FTP, FTPS, HTTP, HTTPS 프로토콜 동시 지원
- 웹 브라우저를 통한 파일 전송, 목록 보기(트리, 썸네일) 등 제공
- 서버 현황 통합 대시보드 제공
- 로그 뷰어를 통한 실시간 서버 로그 내역 제공
- 서버 OS 계정과 관계없이 자체 사용자 계정 관리
- 패스워드 방식이 아닌 SSH Key 방식의 접속 지원
- 비정상 사용 패턴을 감지하여 자동 접속 차단 적용 지원
- 파일 업로드/다운로드 등의 이벤트에 따른 태스크 실행 지원
- PGP 키 생성 및 파일 업로드/전송 시 PGP 파일 암호화/복호화 지원
- 태스크 잡 구성을 통한 파일 전송 관련 액션 설정 지원
- 고가용성을 위한 HA 구성 지원
‘CrushFTP’ 솔루션은 Unix, Linux, Windows, OSX 등 다양한 플랫폼에서 실행되는 매우 강력하고 사용하기 쉬운 파일 전송 및 공유를 위한 전문 SFTP 서버 솔루션입니다.
- SFTP, FTP, FTPS, HTTP, HTTPS 프로토콜 동시 지원
- 웹 브라우저를 통한 파일 전송, 목록 보기(트리, 썸네일) 등 제공
- 서버 현황 통합 대시보드 제공
- 로그 뷰어를 통한 실시간 서버 로그 내역 제공
- 서버 OS 계정과 관계없이 자체 사용자 계정 관리
- 패스워드 방식이 아닌 SSH Key 방식의 접속 지원
- 비정상 사용 패턴을 감지하여 자동 접속 차단 적용 지원
- 파일 업로드/다운로드 등의 이벤트에 따른 태스크 실행 지원
- PGP 키 생성 및 파일 업로드/전송 시 PGP 파일 암호화/복호화 지원
- 태스크 잡 구성을 통한 파일 전송 관련 액션 설정 지원
- 고가용성을 위한 HA 구성 지원
파일 전송 SFTP 서버 솔루션 - CrushFTP (ftp, ftps, sftp, http, https 프로토콜 지원)옥시즌
‘CrushFTP’ 솔루션은 Unix, Linux, Windows, OSX 등 다양한 플랫폼에서 실행되는 매우 강력하고 사용하기 쉬운 파일 전송 및 공유를 위한 전문 SFTP 서버 솔루션입니다.
- SFTP, FTP, FTPS, HTTP, HTTPS 프로토콜 동시 지원
- 웹 브라우저를 통한 파일 전송, 목록 보기(트리, 썸네일) 등 제공
- 서버 현황 통합 대시보드 제공
- 로그 뷰어를 통한 실시간 서버 로그 내역 제공
- 서버 OS 계정과 관계없이 자체 사용자 계정 관리
- 패스워드 방식이 아닌 SSH Key 방식의 접속 지원
- 비정상 사용 패턴을 감지하여 자동 접속 차단 적용 지원
- 파일 업로드/다운로드 등의 이벤트에 따른 태스크 실행 지원
- PGP 키 생성 및 파일 업로드/전송 시 PGP 파일 암호화/복호화 지원
- 태스크 잡 구성을 통한 파일 전송 관련 액션 설정 지원
- 고가용성을 위한 HA 구성 지원
2. 저는요?
저는 Apache에 소속된 오픈 소스에요. 분산 환경에서 대량의 데이터를 수집,
처리하기 위해 만들어 졌죠. NSA(National Security Agency)에서 태어 났어요.
실시간 ETL 정도로 쉽게 생각하실 수 있지만, 저는 FBP(flow-based programming)라는 개념을
가지고 더 많은 일을 할 수 있어요.
3. 제가 잘하는 건요?
전 실시간 처리를 정말 잘해요. 예를들어 특정 디렉토리에 파일이 생성되면 바로
다른 DB에 저장할 수도, 다른 곳으로 FTP로 보낼 수도 있죠. 요즘 빅데이터 시대가
되면서 더 많은 일을 하게 되었죠.
장애가 나도 저는 복구 될때까지 데이터를 처리를 못할 수는 있지만, 잃어버리는
일은 없어요.
Zero Master 클러스터 환경을 제공하고, 확장도 쉽게되요.
그 밖에 HTTPS를 지원해 통신에 대한 보안도 잘 되어있고요. 웹 기반에 비교적
직관적인 인터페이스를 가지고 있어 사용하기도 쉬워요. 데이터의 이동 경로를
추적할 수 있어요. 마지막으로 클러스터간의 Site-to-Site라는 것을 이용해 데이터를
교환할 수 있어요.
4. 제가 못하는 것은?
배치 작업은 잘 못해요. 예를들어 하둡 환경에서 대용량 파일을 빠르게 전송해야
한다면 DistCP가 더 좋아요. 그리고 원본 소스의 있는 파일들이 목적지까지 다
전달되었는지도 알기 힘들어요.
스케줄러가 있다고 저를 (배치) 스케줄러라고 생각하시면 안 되요. Jenkins와 같이
현재 실행되는 내용을 확인할 수 없어요. 오직 실행이 끝나고 성공과 실패, 출력
결과를 알 수 있어요.
저는 간단한 데이터 조작만 가능하지, 복잡한 연산은 잘 못 해요. 하지만 Spark,
Storm 등과 연동해 할 수 있죠.
5. 저를 구성하는 요소
Processor Connection FlowFile
FlowFile는 제가 인식하는 데이터 단위에요. Processor는 FlowFile을 수집, 변형,
저장하는 기능을 해요. Connection은 Processor와 Processor를 연결해,
FlowFile을 전달하죠.
6. FlowFile
속성(Attribute)과 내용(Content)로 구성되어 있어요. 속성은 키/값 형태로
데이터의 이동 및 저장 시 필요한 정보들이 들어 있고요. Expression Language가
지원되서 값을 다양하게 제어할 수 있어요. Processor와 Processor를 이동할
때마다 복사본이 만들어져서 추적이 가능하죠. 근데 내용은 복사하지 않고, 어디에
있는지 포인트 정보만 복사해 크게 부담되지는 않아요.
7. 여기서 잠깐! 저장소(repository)
FlowFile 정보가 어디에 저장되고, 또 어떻게 이것을 추적 가능할 까요?
FlowFile은 생성되면 FlowFile Repository에 속성값과 내용이 어디에 있는지
저장되고, Content Repository에 내용이 저장되요. 그리고 Processor가 처리될
때마다 Provenance Repository에 FlowFile 이력(이벤트)이 남아요.
8. FlowFile 흐름
간단하게 FlowFile이 어떻게 저장소에 있는지 알아볼께요. 최대한 쉽게 설명할텐데 솔직히 이해하기 쉽지 않아요. 그냥
그렇구나 하고 받아드리셔도 되고, 꼭 아시고 싶으시면 공식 설명서인 Apache NiFi In Depth를 참고하세요.
9. Processor
150개가 넘는 Processor를 제공하고, 확장 가능해요. ExecuteScript
Processor까지 활용한다면 훨씬 더 많은 일들을 할 수 있어요.
근데, 자주 쓰는거는 몇개 안되요. HTTP, Kafka, DB, FTP 관련 Processor와 속성을
변경하는 UpdateAttribute, 데이터를 합치는 MergeContent, 데이터를 특정 개수로
분할하는 Split* 시리즈, 데이터 타입을 변경하는 Convert* 시리즈 등을 많이
사용한답니다.
10. Connection
FlowFile의 대기열(Queue)라고 생각하면 되요. 이 대기열은 FlowFile의 우선순위,
만료, 부하 조절 기능 제공해요. 우선순위는 어떤 순(Prioritization)으로 FlowFile을 다음
Processor에게 제공할 지, 만료는 얼마까지만 대기열에 머물지(expiration), 부하 조절
기능은 얼마 만큼 차면 FlowFile 생성을 더디게 만들지(Back Pressure)를 말해요.
11. 기타 구성 요소
Flow Controller는 제가 사용하는 스케줄러를 말해요. 특정 간격 또는 Cron 표현식으로 스케줄링을 할 수 있고요. 클러스터
환경에서 동시에 실행되는 것을 막기 위해 Primary Node에서만 실행할 수도 있죠.
Controller Service를 이용해 Processor간 자원을 공유할 수 있어요. 예를들어 DBCPConnectionPool을 이용해서 DB 연결
정보를 Processor간에 공유할 수 있어요.
Process Group을 통해 관련있는 Processor들을 묶어서 관리할 수 있어요. 계층적으로 사용할 수 있어 Processor들이 많을
때도 잘 관리할 수 있어요. Input Port와 Output Port를 이용해 Process Group간에 데이터를 주고 받을 수 있어요.
Remote Process Group을 이용해 또 다른 NiFi 시스템과 Site-to-site 프로토콜을 이용해 데이터를 주고 받을 수 있어요.
Remote Input Port와 Output Port를 이용해 데이터를 주고 받을 수 있어요.
Web Server가 내장되어 있어요. Jetty 서버를 사용하고, 스프링 기반의 웹 애플리케이션이죠. 모두 비동기 방식으로
처리해서 비교적 높은 성능을 내요(SEDA: An Architecture for Highly Concurrent Server Applications).