최신 글
-
Kafka 로그:소프트웨어 엔지니어가 알아야하는 추상화된 실시간 데이터 원문 : engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying 제이 크랩스(Jay Kraps)는 2007년 링크드인에 입사했습니다. 그는 2007년부터 13년까지 모놀리틱 아키텍처와 중앙화된 데이터베이스를 특별한 분산 시스템으로 변경하는 작업을 했습니다. 이런 작업을 진행하는 동안 제이 크랩스의 마음속에 남은 단 한가지 이름은 바로 로그(Log)였습니다...
-
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 아파치 카프카를 데이터 레이크로 사용할 수 있을까? 데이터 레이크란? 데이터 레이크의 기본 개념은 기업단위의 서비스 데이터들을 한곳의 저장공간에 모아 두는 것입니다. 이렇게 저장된 데이터로부터 BI(Business Intelligence) App으로 조회하거나 시각화, 머신러닝을 수행하였습니다. 데이터 웨어하우스와 다르게 '일단 저장'하고 나서 이후에 스키마를 적용하는 'Schema-on-Read'에 초점을 잡고 있습니다. 데이터 레이크라는 단어가 나온 이래로 지속 발전을 거듭했고 데이터..
-
AWS AWS CDK 명령어 사용시 auto approve 사용하기 AWS CDK를 로컬에서 테스트를 하다보면 deploy시 change에 대한 y/n 선택이 나오게 된다. ....│ └───┴─────────────────────────────────────────┴─────┴────────────┴─────────────────┘ (NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299) Do you wish to deploy these..
-
AWS AWS IAM 정리 - 사용자, 역할, 그룹, 자격 증명 공급자, 고객 관리형 정책 참고영상 : IAM 정책을 잘 알아야 AWS 보안도 쉬워진다. 이것은 꼭 알고 가자! - 신은수 솔루션즈 아키텍트(AWS) IAM이란? AWS 서비스 및 리소스에 대한 액세스를 안전하게 관리하기 위한 수단. 서비스와 리소스란 S3에 대한 접근, ECR의 이미지에 대한 접근과 같은 AWS내 서비스를 사용할 수 있는 권한을 뜻한다. IAM Policy 종류와 사용 목적 - AWS SCP(Service Control Policies) : 어카운트 내의 특정 Princip..
-
Java & Scala 자바와 스칼라 차이점 자바와 스칼라 둘다 JVM위에서 돌아간다는 공통점이 있다. 그러나 객체지향적 언어와 함수형 언어라는 점이 매우 다르다. 어떤 다른점이 있는지 개략적으로 살펴보자. TRAIT 스칼라의 trait는 자바의 인터페이스와 유사한 역할을 한다. 스칼라에서는 interface가 없다. trait는 변수를 선언하고 메서드를 구현할 수 있다는 점이 인터페이스와 차이점이다. 물론 자바 8부터는 인터페이스에서 default 메서드형태로 구현할 수 있는..
-
nosql 4.0 미만 mongoDB에서 db 복제하기 db.copyDatabase("test","testCopy","127.0.0.1:27017") 4.0미만 버전의 mongoDB에서 자기자신의 db를 복제하기 위해 위 명령어를 사용할 수 있다.
-
Kafka macOS에서 카프카 버로우 빌드 및 실행하기. 1. golang 설치 $ brew install go 2. burrow clone from github $ git clone https://github.com/linkedin/Burrow.git 3. go build, install $ cd to the source directory. $ go mod tidy $ go install 3. run $ $GOPATH/bin/Burrow --config-dir=/path/containing/config 버로우를 실행할 때 주의할점은 --config-dir은 말그대로 디렉토리를 설정해야한다. 파일을 설정하면 안된다. burrow.toml이 포함된 디렉토리를 설정한다..
-
유용한 사이트 그래픽 레코딩 - 시각화와 회의의 조합 페이스북에서 재밌는 책에 대한 내용이 있어 공유합니다. at-living.press/culture/20115/ オンライン会議で議論を可視化&活性化!「グラフィックレコーディング(グラレコ)」の実 一部の人だけが話をしてほかの人がほとんど発言しなかったり、いつの間にか論点がズレてしまったり。対面に比べて話が宙に浮いてしまうことが多く、対話も生まれにくいオンライン会議 at-living.press 그래픽 레코딩 그래픽 레코딩은 문자, 그림,..
-
하둡 하둡 맵리듀스 동작방법 하둡의 맵리듀스에 대한 설명은 다음링크를 참조한다. voidmainvoid.tistory.com/399 하둡 맵리듀스 접근법 맵리듀스는 일괄질의처리기이다. 합리적인 시간 내에 결과를 보여주는 능력을 가지고 있음. 질의를 실행한 이후 수초내에 결과를 받는 시스템과는 다름. 하둡은 기존 병렬프로그래밍과 다른 분 blog.voidmainvoid.net 맵리듀스를 운영하는 2가지 방법을 알아본다. 첫번째는 전통적인 하둡의 맵리듀스를 사용하는 방식과..
인기글
-
Kafka kafka exactly-once delivery를 지원하기 위한 transaction 파이프라인에서 exactly-once처리는 매우 중요합니다. 데이터 파이프라인, 마이크로서비스 파이프라인 구분할것 없이 모든 부분에서 필요한데, 카프카는 0.11.0.0 이후 버젼에 대해서 exactly-once transaction 처리를 지원합니다. 기존에는 적어도 한번 이상 처리할 수 있는 at-least-once를 지원했었는 것에 반해 엄청난 발전이라고 볼 수 있습니다. 카프카 트랜잭션을 사용하기 위한 조건은 브로커가 0.11.0.0 이후 버젼이여..
-
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를 내부적으로 효율적으로 사용할 수 있도록..
-
Kafka kafka connector distributed 모드로 fileSourceConnector 실행 저번 포스트에 이어 distributed로 동작하는 kafka connector를 실습해보겠습니다. https://blog.voidmainvoid.net/356 Kafka file source connector standalone 모드 실행 Kafka에는 커낵터가 있습니다. 다양한 커낵터 클래스를 사용하여 컨슈머나 프로듀서 작성 없이 source로 부터 데이터를 카프카로 보내거나 받을 수 있습니다. 오늘은 FileStreamSource를 사용해서 file을 blog.voidmainvoid.net 준비물 - 카프카 바이너리..
-
Kafka 카프카 컨슈머 파티셔너 종류 및 정리(2.5.0 기준) 카프카 컨슈머는 토픽의 파티션과 매칭하여 레코드를 가져옵니다. 파티션을 매칭하는 기준은 컨슈머 파티션 어사이너의 기준을 따릅니다. 컨슈머 파티션어사이너 인터페이스는 아래 링크에서 확인할 수 있습니다. https://kafka.apache.org/25/javadoc/org/apache/kafka/clients/consumer/ConsumerPartitionAssignor.html ConsumerPartitionAssignor (kafka 2.5.0 API) kafka.apache.org RangeAssignor 기본 설정되는 파티션 어..
-
Kafka Kafka file source connector standalone 모드 실행 Kafka에는 커낵터가 있습니다. 다양한 커낵터 클래스를 사용하여 컨슈머나 프로듀서 작성 없이 source로 부터 데이터를 카프카로 보내거나 받을 수 있습니다. 오늘은 FileStreamSource를 사용해서 file을 카프카로 보내보겠습니다. 준비물 - 카프카 바이너리파일 - 카프카 클러스터 Standalone 모드 준비 Standalone모드란 1개의 프로세스로 동작하는 애플리케이션을 뜻합니다. 커낵터는 distribute모드와 standalone모드를 지원..
-
Kafka Kafka-client 사용시 Failed to load class "org.slf4j.impl.StaticLoggerBinder" 에러 해결 방법 kafka-client를 java application에 추가하여 실행하면 아래와 같은 오류와 함께 log가 정상적으로 찍히지 않습니다. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 위 에러는 slf4j의 디펜던시 이슈로 StaticLoggerBinder가 없어서 그런것인데요. 아..
-
빅데이터 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 라이브러리를..
-
Kafka 카프카 프로듀서 파티셔너 종류 및 정리(2.5.0 기준) 카프카 프로듀서는 레코드를 전송하기 위해 파티셔너를 제공합니다. 파티셔너 종류와 각 파티셔너에 대한 설명을 정리해보았습니다. 카프카 버젼이 올라감에 따라 파티셔너의 종류도 달라졌는데 여기서는 2.5.0 버젼의 파티셔너를 정리해보겠습니다. 프로듀서 파티셔너 인터페이스에 대한 설명은 아래 링크에서 확인할 수 있습니다. https://kafka.apache.org/25/javadoc/?org/apache/kafka/clients/producer/Partitioner.html k..
Hot posts
-
Kafka kafka exactly-once delivery를 지원하기 위한 transaction 파이프라인에서 exactly-once처리는 매우 중요합니다. 데이터 파이프라인, 마이크로서비스 파이프라인 구분할것 없이 모든 부분에서 필요한데, 카프카는 0.11.0.0 이후 버젼에 대해서 exactly-once transaction 처리를 지원합니다. 기존에는 적어도 한번 이상 처리할 수 있는 at-least-once를 지원했었는 것에 반해 엄청난 발전이라고 볼 수 있습니다. 카프카 트랜잭션을 사용하기 위한 조건은 브로커가 0.11.0.0 이후 버젼이여..
-
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..
-
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..
-
AWS 가용영역별 지원 EC2인스턴스 확인하는 방법 Your requested instance type is not supported in your requested Availability Zone 에러는 해당 가용영역에 ec2인스턴스를 지원하지 않기 때문입니다. 이 경우에는 ec2인스턴스가 가용영역에서 지원하는지 확인해야하는데 아래 단계를 거치면 됩니다. t2.micro는 4개 가용영역에서 지원하지 않는 것을 알 수 있습니다. t3.nano, t3.micro를 비롯한 여러 인스턴스가 4개 가용영역 모두에서지원하는 것을 확인할 수 있습니..
-
Kafka 토픽의 메시지 값을 직렬화/역직렬화가 정상적으로 이루어지지 않는 경우 테스트 토픽의 메시지 값 또는 메시지 키는 직렬화하여 저장되어 있다. 만약 직렬화와 역직렬화 포맷이 다르면 어떻게 될까? - test 토픽 - 직렬화 : StringStringSerializer - 역직렬화 : UUIDDeserializer 의도적으로 직렬화 포맷과 역직렬화 포맷을 다르게 하여 테스트를 진행합니다. 1. 프로듀서 public class SimpleProducer { private static String TOPIC_NAME = "test"; private static String BOOTSTRAP_SERVERS = "localhost:..
-
카테고리 없음 파편화된 데이터 파이프라인의 문제 첫번째는 데이터 적재의 병목현상이다. 서비스의 사용자가 많아지고 애플리케이션의 복잡도가 증가하면 생성 되는 데이터 양도 기하급수적으로 늘어난다. 데이터를 데이터 레이크로 즉시 보내려고 하지만 데이터 레이크로 바로 적재하는 것은 병목현상이 발생할 수 밖에 없다. 또한 엔드 투 엔드방식의 적재로 인해 데이터 레이크로 사용하는 저장소에 장애가 발생할 경우 서비스에 영향도가 전파되어 서비스가 중단되거나 장애..
-
유용한 사이트 그래픽 레코딩 - 시각화와 회의의 조합 페이스북에서 재밌는 책에 대한 내용이 있어 공유합니다. at-living.press/culture/20115/ オンライン会議で議論を可視化&活性化!「グラフィックレコーディング(グラレコ)」の実 一部の人だけが話をしてほかの人がほとんど発言しなかったり、いつの間にか論点がズレてしまったり。対面に比べて話が宙に浮いてしまうことが多く、対話も生まれにくいオンライン会議 at-living.press 그래픽 레코딩 그래픽 레코딩은 문자, 그림,..
-
Kafka failed authentication due to: Authentication failed during authentication due to invalid credentials with SASL mechanism SCRAM-SHA-256 failed authentication due to: Authentication failed during authentication due to invalid credentials with SASL mechanism SCRAM-SHA-256 보안이 설정된 카프카와 통신을 할 때 위와 같은에러가 발생한다면 id와 pw를 잘못넣은게 아닌지 의심해야한다....
-
Elasticsearch 엘라스틱서치에 중복 id로 값을 보내면? 엘라스틱서치에 중복id로 값을 보내면 버젼이 올라간다. $ curl --location --request PUT 'localhost:9200/books/book/2d12dd2' \ --header 'Content-Type: application/json' \ --data-raw '{ "_id":"1", "tile": "Nesoy Elastic Guide", "author": "Nesoy", "date": "2019-01-15", "pages": 250 }' { "_index": "books", "_type": "book", "_id": "2d12dd2", "_version": 2, "result": "updated", "_shards": { "total": 2, "..
728x90