최신 글
-
Kafka 카프카 스트림즈 suppress() 사용할 때 ClassCastException 문제 카프카 스트림즈에는 suppress()메서드가 있다. 이 메서드를 통해 일정 윈도우 간격 안에 데이터를 모아서 처리할 수 있는데, 이슈가 있다. 값을 모아서 state store(rocksDB)에 저장할 때 제대로 deserialize를 하지못하는것이다. java.lang.ClassCastException: org.apache.kafka.streams.kstream.Windowed cannot be cast to java.lang.String at org.apache.kafka.common.serialization.StringSerializer.serialize(StringSe..
-
Kafka Kafka streams 에러 : Size of data received by LongDeserializer is not 8 이 에러는 카프카 스트림즈 내부에서 null 메시지 값에 대한 처리를 제대로 못해서 나오는 이슈이다. 그러므로 KStream에서 filter로 null 메시지 값을 삭제하여 처리하면 된다. KTable , Long> KT01 = myStream .filter((k, v) -> v != null) // null value 제거 ...
-
Kafka 카프카 스트림즈 애플리케이션 초기화 명령 카프카 스트림즈 애플리케이션을 운영하다가 또는 테스트 중에 오프셋을 초기화 해야할 때가 있습니다. 이때는 아래와 같은 명령어를 사용하면 됩니다. $ ./kafka-streams-application-reset.sh --application-id join-application --input-topics streams-test Reset-offsets for input topics [A.s2olap-kakaotalk] Following input topics offsets will be reset to (for consumer group join-application) Topic: streams-te..
-
일상 오프라인 러닝 시대의 끝이 도래했다 2020년은 '교육'이 미래에 어떤 방향으로 바뀔지 방향을 알려주는 해였다고 생각됩니다. 코로나의 직접적인 감염으로 인해서 더 이상 오프라인으로 사람과 사람이 만날 수 없었고 학교와 기업에서 진행되어야 하는 교육이 온라인으로 대체 되었습니다. 온라인 교육은 어떻게 수행되어야하고 어떤 미래로 가야하는지 정리해보았습니다. '형식적인' 교육은 그만 기존의 많은 기업들은 교육을 진행할때 '형식'에 집중하였습니다...
-
개발이야기 애드테크(ad-tech)에서 사용하는 용어 정리 DSP(demand side platforms) 광고 구매 플랫폼. RTB(real time bidding) 실시간 경매 시스템 SSP(supply side platforms) 공급자측 플랫폼 광고주 광고를 지면에 노출시키고 싶은 사업자 또는 개인 매체(또는 인벤토리) 광고를 노출시킬 수 있는 지면을 가지고 있는 플랫폼 CPM(cost per mile impression) 광고 노출 1천회를 기준 요금 부과 방식 CTR(click through rate) 100명 광고 노출당 클릭 횟수 지표 CVR(conversion rate..
-
golang golang 동시성 예제 golang은 동시성 프로그램을 위해 태어난 언어라고 해도 과언이 아닙니다. 예제를 통해 golang이 동시성을 만족하는 코드를 작성하여 보여드리겠습니다. 동시성을 위해 goroutine과 channel 개념을 사용합니다. 각 개념은 아래 링크에서 확인할 수 있습니다. - goroutine : golang.site/go/article/21-Go-%EB%A3%A8%ED%8B%B4-goroutine Go루틴(goroutine)은 Go 런타임이 관리하는 Lightweight 논리적 (혹은 가상적) 쓰레드(주1)..
-
개발책 집필 개발 서적을 집필을 시작하는 방법 2가지 최근에 개발 서적을 집필하면서 많이 물어보시는 질문 중 한가지가 집필을 어떻게 시작하게 되었느냐입니다. 책을 쓴다는 행위를 통해 책이 출판된다는 것이 알지만 어떻게 시작하는지 모르는 경우가 많아서 시작 조차 못하는 경우가 많습니다. 이 포스팅에서는 개발 서적을 집필을 시작하는 방법 2가지를 제 경험에 비추어 설명드리겠습니다. 첫번째 방법 - 관련 컨텐츠 제작 후 집필 제안 받기 저는 지난 3년 동안 데브원영 유..
-
Kafka local kafka single broker 띄우기 with 도커 wurstmeister/kafka-docker는 사실상 표준(디팩토)으로 카프카 도커 이미지로 띄우는 용도로 사용하고 있습니다. 사용 방법은 아래와 같습니다. $ git clone https://github.com/wurstmeister/kafka-docker.git $ cd kafka-docker wurstmeister/kafka-docker에 있는 docker-compose-single-broker.yml 의 내부 설정 중 KAFKA_ADVERTISED_HOST_NAME을 변경합니다. $ vi docker-compose-single-broker.yml version: '2' services:..
-
Kafka 특정 시점(날짜+시간)의 레코드부터 가져오도록 설정하기. 카프카의 토픽에 저장된 레코드는 0.11.0.0 이후부터 timestamp가 저장됩니다. 그러므로 kafka-consumer-group.sh 스크립트로 오프셋을 직접 지정할 수 있는데 --to-datetime을 사용하면 특정 시점(시간) 데이터부터 가져가도록 설정할 수 있습니다. Example) 토픽의 레코드가 다음과 같이 있다고 가정합니다. ConsumerRecord(topic = test, partition = 0, leaderEpoch = 0, offset = 5, CreateTime = 1614748497034, serialize..
-
nosql kafka console consumer 여러 토픽 컨슘하기 kafka console consumer를 사용하다보면 --topic으로 토픽을 컨슈밍 하기도 하지만 여러 토픽 또는 정규식을 사용해서 확인해보고 싶을 때가 있다. 이 때 --whitelist를 사용하면 된다. Example) hello-topic과 hello.topic 토픽을 컨슈밍 하고 싶다면 $ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --whitelist 'hello-topic|hello.topic' Example2) 모든 토픽을 컨슈밍 하고 싶다면 $ ./kafka-console-con..
인기글
-
Kafka 스프링 카프카 메시지 리스너 2가지 구현 방법 스프링 카프카에서 메시지 리스너를 구현하는 2가지 방법이 있습니다. 첫번째는 @KafkaListener를 사용하는것이고 두번째는 listenerContainer를 Bean등록하는 것입니다. @KafkaListener로 구현 가장 간단한 방법입니다. @KafkaListener를 통해 선언할 경우 파라미터를 오버로딩해서 알맞는 listenerContainer를 자동으로 주입합니다. package com.example; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import or..
-
AWS AWS VPC지정을 위한 CIDR 형식 주소값 계산 방법 AWS에서 VPC지정을 위해 내부 사설 IP주소대역을 CIDR방식으로 지정합니다. CIDR방식을 이해하지 못하면 내부에 지정되는 사설 IP값이 어떻게 지정되는지 알지 못합니다. 이번 포스팅에서는 CIDR계산방법을 알아보겠습니다. CIDR 사이더(Classless Inter-Domain Routing, CIDR)는 클래스 없는 도메인 간 라우팅 기법으로 1993년 도입되기 시작한, 최신의 IP 주소 할당방법입니다. IPv4를 내부적으로 효율적으로 사용할 수 있도록..
-
빅데이터 mac에서 하둡 hdfs 설치 및 실행하기 1. homebrew를 통해 hadoop package 설치 $ brew install hadoop hadoop이 설치된 경로는 아래와 같이 명령하여 확인할 수 있다. $ brew info hadoop hadoop: stable 3.3.0 Framework for distributed processing of large data sets https://hadoop.apache.org/ Conflicts with: yarn (because both install `yarn` binaries) /usr/local/Cellar/hadoop/hdfs (366 files, 40.9MB) Built from source /usr/local/Cellar/hadoop/3..
-
AWS AWS EMR사용시 사용자 지정 파이썬 라이브러리 설치 및 pyspark 사용 AWS EMR은 하둡관련 패키지를 AWS를 통해 설치하고 프로비져닝하는 도구입니다. 이 도구를 활용하면 매우 빠르게 hadoop, spark 등의 빅데이터 클러스터를 구축할 수 있는데요. 오늘은 이렇게 만든 EMR 클러스터에서 3rd party python library사용을 위한 설치 스크립트를 적용해보겠습니다. 저같은 경우는 pyspark를 자주 사용하는데요. pyspark사용할 경우 추가 pip3라이브러리를 사용해야할 때가 있습니다. pip3 라이브러리를..
-
Java & Scala 인증서란? openJDK의 cacerts 설명 인증서(Certificate) 디지털 인증서라고도 부른다. 유저 -> 브라우저 또는 서버 -> 서버 간에 암호화된 연결을 수립하는데 사용된다. 인증되지 않는 사용자의 네트워크 데이터 탈취를 막기 위한 용도. SSL 인증서는 공개키 방식을 사용한다. 공개키 방식은 공개키와 비밀키 방식이 있다. 공개키 방식으로 암호화하고 비공개키로 복호화한다. 비공개키가 없으면 복호화할 수 없다. CA(Certificate authority) 인증서를 보장하는..
-
Kafka kafka connect 로그를 logstash로 수집하기 + grok 설정(multiline) 카프카 커넥트를 운영하다보면 로그를 파일로 쌓고 + 로그스태시를 통해 엘라스틱서치에 쌓고 싶을때가 있습니다. 이를 위해 아래와 같이 설정합니다. 1. connect-log4j.properties router.logs.dir=./connect-logs log4j.rootLogger=INFO, connectAppender log4j.logger.org.apache.zookeeper=ERROR log4j.logger.org.I0Itec.zkclient=ERROR log4j.logger.org.reflections=ERROR log4j.appender.connectAppender=org.apache.log..
-
Kafka 스프링 카프카 호환표 Kafka Client Compatibility Spring for Apache Kafka is based on the pure java kafka-clients jar. The following is the compatibility matrix: Spring for Apache Kafka Version Spring Integration for Apache Kafka Version kafka-clients Spring Boot 2.6.0 5.3.x or 5.4.0-SNAPSHOT (pre-release) 2.6.0 2.3.x or 2.4.0-SNAPSHOT (pre-release) 2.5.x 3.3.x 2.5.0 2.3.x 2.4.x 3.2.x 2.4.1 2.2.x 2.3.x 3.2.x 2.3.1 2..
-
Java & Scala JVM 기반 애플리케이션 운영시 스레드 덤프를 통한 이슈 해결 JVM기반 애플리케이션을 개발하다가 이슈가 생겼을때 다양한 방식으로 이슈를 확인하고 처리할 수 있습니다. 그중 한가지인 스레드 덤프를 사용하여 이슈를 해결한 사례를 공유하겠습니다. 제가 운영하고 있는 애플리케이션은 Scala로 이루어져 있고 JDK 1.8에서 돌아가는 Multithread application입니다. 카프카 컨슈머를 스레드로 작게는 10개 많게는 100개이상 띄워서 운영하고 있습니다. 이 애플리케이션은 안전하게 중지하..
-
Kafka 카프카 커넥트 JMX + 로그스태시로 모니터링 하기 카프카 커넥트(분산모드)는 기본 JMX포트를 통해 커넥트 애플리케이션의 상태를 모니터링 수집 애플리케이션에 데이터를 전송할 수 있습니다. 오늘은 카프카 커넥트의 JMX포트를 열고 로그스태시로 JMX로 지표를 수집하는 방법에 대해 알아보겠습니다. 1. 카프카 커넥트 JMX포트 열기 $ export JMX_PORT=10000 우선 JMX포트를 열기위해 환경변수로 선언합니다. 2. 카프카 커넥트 실행 및 JMX 포트 확인 $ bin/connect-distribute..
-
AWS EC2 에 있는 파일 로컬로 다운로드 받기 EC2에 있는 파일을 로컬에 다운받기 위해 아래와 같은 절차를 진행합니다. 준비물 - EC2 가상서버 - pem파일(접속 키) 1. 파일 확인 EC2에 접속해서 다운로드할 파일을 확인합니다. $ ll test.log $ pwd /tmp 2. 파일 권한 변경 권한을 변경하여 로컬에서 가져갈수있도록 합니다. $ chomod 777 /tmp/test.log 3. scp를 사용하여 다운로드 파일이 있는 경로를 지정하여 다운로드 진행 합니다. $ scp -i genesis-test.pem centos@1..
Hot posts
-
nosql kafka console consumer 여러 토픽 컨슘하기 kafka console consumer를 사용하다보면 --topic으로 토픽을 컨슈밍 하기도 하지만 여러 토픽 또는 정규식을 사용해서 확인해보고 싶을 때가 있다. 이 때 --whitelist를 사용하면 된다. Example) hello-topic과 hello.topic 토픽을 컨슈밍 하고 싶다면 $ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --whitelist 'hello-topic|hello.topic' Example2) 모든 토픽을 컨슈밍 하고 싶다면 $ ./kafka-console-con..
-
개발책 집필 개발 서적을 집필을 시작하는 방법 2가지 최근에 개발 서적을 집필하면서 많이 물어보시는 질문 중 한가지가 집필을 어떻게 시작하게 되었느냐입니다. 책을 쓴다는 행위를 통해 책이 출판된다는 것이 알지만 어떻게 시작하는지 모르는 경우가 많아서 시작 조차 못하는 경우가 많습니다. 이 포스팅에서는 개발 서적을 집필을 시작하는 방법 2가지를 제 경험에 비추어 설명드리겠습니다. 첫번째 방법 - 관련 컨텐츠 제작 후 집필 제안 받기 저는 지난 3년 동안 데브원영 유..
-
Java & Scala JVM 기반 애플리케이션 운영시 스레드 덤프를 통한 이슈 해결 JVM기반 애플리케이션을 개발하다가 이슈가 생겼을때 다양한 방식으로 이슈를 확인하고 처리할 수 있습니다. 그중 한가지인 스레드 덤프를 사용하여 이슈를 해결한 사례를 공유하겠습니다. 제가 운영하고 있는 애플리케이션은 Scala로 이루어져 있고 JDK 1.8에서 돌아가는 Multithread application입니다. 카프카 컨슈머를 스레드로 작게는 10개 많게는 100개이상 띄워서 운영하고 있습니다. 이 애플리케이션은 안전하게 중지하..
-
Kafka 스프링 카프카 호환표 Kafka Client Compatibility Spring for Apache Kafka is based on the pure java kafka-clients jar. The following is the compatibility matrix: Spring for Apache Kafka Version Spring Integration for Apache Kafka Version kafka-clients Spring Boot 2.6.0 5.3.x or 5.4.0-SNAPSHOT (pre-release) 2.6.0 2.3.x or 2.4.0-SNAPSHOT (pre-release) 2.5.x 3.3.x 2.5.0 2.3.x 2.4.x 3.2.x 2.4.1 2.2.x 2.3.x 3.2.x 2.3.1 2..
-
유용한 사이트 그래픽 레코딩 - 시각화와 회의의 조합 페이스북에서 재밌는 책에 대한 내용이 있어 공유합니다. at-living.press/culture/20115/ オンライン会議で議論を可視化&活性化!「グラフィックレコーディング(グラレコ)」の実 一部の人だけが話をしてほかの人がほとんど発言しなかったり、いつの間にか論点がズレてしまったり。対面に比べて話が宙に浮いてしまうことが多く、対話も生まれにくいオンライン会議 at-living.press 그래픽 레코딩 그래픽 레코딩은 문자, 그림,..
-
AWS EC2 에 있는 파일 로컬로 다운로드 받기 EC2에 있는 파일을 로컬에 다운받기 위해 아래와 같은 절차를 진행합니다. 준비물 - EC2 가상서버 - pem파일(접속 키) 1. 파일 확인 EC2에 접속해서 다운로드할 파일을 확인합니다. $ ll test.log $ pwd /tmp 2. 파일 권한 변경 권한을 변경하여 로컬에서 가져갈수있도록 합니다. $ chomod 777 /tmp/test.log 3. scp를 사용하여 다운로드 파일이 있는 경로를 지정하여 다운로드 진행 합니다. $ scp -i genesis-test.pem centos@1..
-
Kafka kafka connect 로그를 logstash로 수집하기 + grok 설정(multiline) 카프카 커넥트를 운영하다보면 로그를 파일로 쌓고 + 로그스태시를 통해 엘라스틱서치에 쌓고 싶을때가 있습니다. 이를 위해 아래와 같이 설정합니다. 1. connect-log4j.properties router.logs.dir=./connect-logs log4j.rootLogger=INFO, connectAppender log4j.logger.org.apache.zookeeper=ERROR log4j.logger.org.I0Itec.zkclient=ERROR log4j.logger.org.reflections=ERROR log4j.appender.connectAppender=org.apache.log..
-
Kafka 특정 시점(날짜+시간)의 레코드부터 가져오도록 설정하기. 카프카의 토픽에 저장된 레코드는 0.11.0.0 이후부터 timestamp가 저장됩니다. 그러므로 kafka-consumer-group.sh 스크립트로 오프셋을 직접 지정할 수 있는데 --to-datetime을 사용하면 특정 시점(시간) 데이터부터 가져가도록 설정할 수 있습니다. Example) 토픽의 레코드가 다음과 같이 있다고 가정합니다. ConsumerRecord(topic = test, partition = 0, leaderEpoch = 0, offset = 5, CreateTime = 1614748497034, serialize..
-
AWS 퍼블릭에서 접속가능한 EC2 인스턴스 만들기(VPC, 서브넷, IGW, 라우트 테이블 설정) 퍼블릭에서 EC2에 접속하기 위해서는 VPC생성, 퍼블릭 서브넷이 필요합니다. 위 내용을 실습하는 내용을 진행해보겠습니다. 주의해야하는 부분은 강조체, 붉은글씨로 변환하였습니다. 1. VPC 생성 특정 CIDR 블록을 포함한 형태로 이름을 작성하고 VPC를 생성합니다. VPC생성이 완료되면 처음에는 DNS 호스트 이름이 비활성화됨 으로 설정되어 있습니다. 변경을 위해 작업>DNS호스트 이름 편집으로 이동합니다. DNS 호스트 이..
-
빅데이터 mac에서 하둡 hdfs 설치 및 실행하기 1. homebrew를 통해 hadoop package 설치 $ brew install hadoop hadoop이 설치된 경로는 아래와 같이 명령하여 확인할 수 있다. $ brew info hadoop hadoop: stable 3.3.0 Framework for distributed processing of large data sets https://hadoop.apache.org/ Conflicts with: yarn (because both install `yarn` binaries) /usr/local/Cellar/hadoop/hdfs (366 files, 40.9MB) Built from source /usr/local/Cellar/hadoop/3..
728x90