최신 글
-
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가지 방법을 알아본다. 첫번째는 전통적인 하둡의 맵리듀스를 사용하는 방식과..
-
하둡 하둡 맵리듀스 접근법 맵리듀스는 일괄질의처리기이다. 합리적인 시간 내에 결과를 보여주는 능력을 가지고 있음. 질의를 실행한 이후 수초내에 결과를 받는 시스템과는 다름. 하둡은 기존 병렬프로그래밍과 다른 분산 프로그래밍 관점에서 바라봐야한다. MPI와 같은 병렬프로그래밍은 사용자로 하여금 직접적인 알고리즘을 짜도록 도와주지만 하둡은 최상위 수준에서만 동작한다. 개발자는 데이터의 흐름을 신경쓰지 않아도 되고 데이터 모델 관점에..
-
Kafka 카프카 토픽의 오프셋 최대 크기는 얼마일까? 카프카의 토픽에는 파티션이 있습니다. 프로듀서가 레코드를 파티션에 저장하면 각 레코드에는 오프셋이라고 불리는 고유한 번호가 붙게 되는데요. 오프셋 번호가 최대값에 도달하면 어떻게 처리해야하는지 의문을 가질 수 있습니다. 오프셋 번호의 최대값에 대해서 확인해 보았는데요. 오프셋은 int64로 지정되어 있었습니다. private static final Field.Int64 OFFSET = new Field.Int64("offset", "The offset found"); 자바..
-
AWS 퍼블릭에서 접속가능한 EC2 인스턴스 만들기(VPC, 서브넷, IGW, 라우트 테이블 설정) 퍼블릭에서 EC2에 접속하기 위해서는 VPC생성, 퍼블릭 서브넷이 필요합니다. 위 내용을 실습하는 내용을 진행해보겠습니다. 주의해야하는 부분은 강조체, 붉은글씨로 변환하였습니다. 1. VPC 생성 특정 CIDR 블록을 포함한 형태로 이름을 작성하고 VPC를 생성합니다. VPC생성이 완료되면 처음에는 DNS 호스트 이름이 비활성화됨 으로 설정되어 있습니다. 변경을 위해 작업>DNS호스트 이름 편집으로 이동합니다. DNS 호스트 이..
-
AWS VPC 엔드포인트란? AWS를 벗어나지 않고 EC2 인스턴스를 VPC 외부서비스와 프라이빗 하게 연결하기 위해서 사용됩니다. 이 경우 퍼블릭으로 해당 서비스를 노출하지 않더라도 연동할 수 있습니다. 즉, IGW, VPN, NAT, 프로시 등을 사용할 필요없이 연결할 수 있습니다. 여기서 외부 서비스란 AWS의 서비스를 뜻합니다. 예를 들어 VPC에 있는 EC2(프라이빗 서브넷)가 존재하고 S3가 존재한다면 EC2와 S3를 연동할때 퍼블릭으로 열지 않아도 됩니다...
인기글
-
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를 내부적으로 효율적으로 사용할 수 있도록..
-
AWS 소규모 스파크 사용을 위한 AWS EMR 클러스터 생성하기 AWS에는 EMR이라고 불리는 빅데이터 플랫폼이 있습니다. EMR을 통해 스파크, 하이프, HBASE, 플링크 등 다양한 오픈소스 도구 셋트를 생성할 수 있습니다. 온프로미스로 직접 구축하는 것에 비해 매우 빠른 속도로 구축할 수 있으며 AWS에 따르면 온프로미스에서 구축하는 비용에 50%로 사용할 수 있다고 합니다. 오늘은 S3에 저장된 데이터를 스파크로 처리하기 위해 소규모 스파크로만 구성된 EMR클러스터를 생성해보겠습니다...
-
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 connector distributed 모드로 fileSourceConnector 실행 저번 포스트에 이어 distributed로 동작하는 kafka connector를 실습해보겠습니다. https://blog.voidmainvoid.net/356 Kafka file source connector standalone 모드 실행 Kafka에는 커낵터가 있습니다. 다양한 커낵터 클래스를 사용하여 컨슈머나 프로듀서 작성 없이 source로 부터 데이터를 카프카로 보내거나 받을 수 있습니다. 오늘은 FileStreamSource를 사용해서 file을 blog.voidmainvoid.net 준비물 - 카프카 바이너리..
-
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가 없어서 그런것인데요. 아..
-
Kafka telegraf사용시 kafka로 데이터 json형태로 보내는 방법 telegraf는 metric수집에 최적화되어있습니다. 다만, 그대로 사용하게 되면 influxdb에서 사용하는 데이터형태(csv와 유사)로 데이터가 전송되는데요. kafka에서 데이터를 잘 활용하기 위해 json을 사용한다면 consumer에서도 스키마에 대한 걱정없이(?) 잘 사용할 수 있습니다. telegraf에서 data형태를 json형태로 바꾸는 예제를 아래에 설명드리도록 하겠습니다. telegraf에 대한 설명은 아래 링크를 확인해주세요. https://b..
-
빅데이터 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..
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..
-
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, "..
-
AWS 퍼블릭에서 접속가능한 EC2 인스턴스 만들기(VPC, 서브넷, IGW, 라우트 테이블 설정) 퍼블릭에서 EC2에 접속하기 위해서는 VPC생성, 퍼블릭 서브넷이 필요합니다. 위 내용을 실습하는 내용을 진행해보겠습니다. 주의해야하는 부분은 강조체, 붉은글씨로 변환하였습니다. 1. VPC 생성 특정 CIDR 블록을 포함한 형태로 이름을 작성하고 VPC를 생성합니다. VPC생성이 완료되면 처음에는 DNS 호스트 이름이 비활성화됨 으로 설정되어 있습니다. 변경을 위해 작업>DNS호스트 이름 편집으로 이동합니다. DNS 호스트 이..
-
Kafka 정말정말 간단한 스프링 카프카 컨슈머 애플리케이션 예제 스프링 카프카는 카프카를 스프링에서 쉽게 사용할 수 있도록 하는 라이브러리입니다. 스프링 카프카를 통해 컨슈머를 만드는 가장 간단한 코드를 공유합니다. 준비물 - 그래들 - 스프링부트 - 인텔리제이 디렉토리구조 ├── build.gradle ├── settings.gradle └── src └── main ├── java │ └── com │ └── test │ └── Main.java └── resources └── application.yaml build.gradle plugins..
-
Kafka Kafka ConsumerRecord의 timestamp는 0.10.0.0 이후부터 사용가능합니다. 카프카의 ConsumerRecord를 살펴보면 메시지 키와 메시지 값 이외에 추가로 timestamp가 있는 것을 확인할 수 있습니다. timestamp는 Kafka 프로듀서가 ProducerRecord를 생성하면서 timestamp 값을 Unix time으로 입력합니다. 만약 다른 timestamp를 넣고 싶다면 직접 설정하여 넣을수도 있습니다. 해당 건은 KAFKA-3025에서 논의했던 내용으로 자세한 내용은 해당 jira에서 확인할 수 있습니다. https://issues.apache.org/jir..
-
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 카프카 컨슈머 파티셔너 종류 및 정리(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 기본 설정되는 파티션 어..
728x90