최신 글
-
Kafka 카프카4.0 부터는 eager rebalancing protocol이 삭제됩니다. https://issues.apache.org/jira/browse/KAFKA-18839 [KAFKA-18839] Drop support for eager rebalancing in Streams - ASF JIRAIn 3.1 we deprecated the EAGER protocol in Kafka Streams (see KAFKA-13439). This ticket covers actually dropping this protocol in 4.0. Note that KAFKA-8575 covers the actual task cleanup we can do once we no longer have to support eager rebalancing, whichissues.apache.org 이 이슈(..
-
Kafka [local macOS 환경] apache kafka(3.5.0기준) + redpanda/console 로 편하게 테스트 하기 로컬 환경에서 개발을 하다보면 항상 shell script로 사용하지만 좀 불편할때가 많습니다. redpanda에서는 console을 통해 apache kafka와 연동하는 웹 콘솔을 오픈소스로 제공하고 있습니다. https://github.com/redpanda-data/console GitHub - redpanda-data/console: Redpanda Console is a developer-friendly UI for managing your Kafka/Redpanda workloads. ConsoleRedpanda Console is a developer-friendly UI for managing your Kafka/Redpanda workloads. Console gives you a s..
-
Kafka 카프카에서 데이터 삭제는 어떻게 이루어 지는가> 카프카의 데이터의 삭제는 로그 세그먼트 단위로 삭제가 이루어진다. 노드(구 브로커)의 로그매니저는 시간(time) 또는 용량(size)에 따라 삭제여부를 결정한다. 시간 기반 정책에서는 레코드의 timestamp에 따라 달라진다. 해당 세그먼트 파일에 존재하는 가장 큰 timestamp 값(레코드 순서와는 무관)을 토대로 찾아낸다. 용량 기반 정책은 기본적으로 설정되지 않는다. 만약 설정된다면, 로그매니저는 가장 오래된 세그먼트 파일을 용량이 다 찼을때 부터 차례 대로 삭제하게 된다. 만약, 시간과 용량 두개의 설정이 동시에 설정된다면 먼저 도달하는 정책의 기준에 따라 삭제가 이루어진다. 언제든지 삭제가 될 수 있도록 copy-on-wirte 방식으로 세그먼트 목록을 사용한다. 이를 통해 삭제가 되는 동..
-
Kafka kafka 4.0부터는 스칼라 2.12가 더 이상 사용되지 않습니다. https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=181308218 KIP-751: Drop support for Scala 2.12 in Kafka 4.0 (deprecate in 3.0) - Apache Kafka - Apache Software FoundationStatus Current state: Adopted Discussion thread: link Vote thread: link JIRA: KAFKA-12930 - 이슈 세부사항 가져오는 중... 상태 (3.0) KAFKA-12895 - 이슈 세부사항 가져오는 중... 상태 (4.0) Please keep the discussion on the macwiki.apache..
-
Kafka standalone 카프카(kraft모드 in local) 실행 스크립트(1줄) standalone 카프카(kraft모드 in local) 실행을 위한 준비와 실행$ bin/kafka-storage.sh random-uuidcKUMbEGERui8cHUhwdc6XA$ bin/kafka-storage.sh format -t cKUMbEGERui8cHUhwdc6XA -c config/kraft/server.propertiesFormatting /tmp/kraft-combined-logs with metadata.version 3.6-IV2.$ bin/kafka-server-start.sh config/kraft/servblog.voidmainvoid.net지난 포스팅에서 kraft모드를 로컬에서 실행할 때 차례대로 실행해야 하는 코드를 올린적이 있었는데, 불편해서 한줄로 요약한 버전을 올..
-
Kafka KIP-932: Queues for Kafka 조사 https://cwiki.apache.org/confluence/display/KAFKA/KIP-932%3A+Queues+for+Kafka KIP-932: Queues for Kafka - Apache Kafka - Apache Software FoundationStatus Current state: Accepted Discussion thread: https://lists.apache.org/thread/9wdxthfsbm5xf01y4xvq6qtlg0gq96lq JIRA: https://issues.apache.org/jira/browse/KAFKA-16092 Please keep the discussion on the mailing list rather than commenting on the wik..
-
빅데이터 trino에서 java.sql.SQLException: Unrecognized connection property 'url' 에러가 나는 이유와 해결 방법 spark jdbc를 통해 trino를 접근하기 위해 아래와 같은 코드를 짤 수 있다.import org.apache.spark.sql.{DataFrame, SparkSession}import java.util.Properties// Spark 세션 생성val spark = SparkSession.builder() .appName("Spark Trino JDBC Example") .getOrCreate()// JDBC URL 설정val jdbcUrl = "jdbc:trino://://"// Trino JDBC 속성 설정val connectionProperties = new Properties()connectionProperties.setProperty("user", "")connectionProper..
-
하둡 Spark 개발시, main/resources 패키지에 hdfs-site.xml, core-site.xml 등을 넣는 이유 main/resources 디렉터리는 Apache Maven이나 SBT와 같은 빌드 도구를 사용하는 프로젝트에서 애플리케이션의 리소스 파일을 저장하는 표준 위치이다. 이 디렉터리에 배치된 파일들은 컴파일된 클래스와 함께 JAR 파일에 포함되며, 런타임에 애플리케이션에서 사용될 수 있다. HDFS 설정 파일 (hdfs-site.xml)hdfs-site.xml 파일은 Hadoop 분산 파일 시스템(HDFS)의 설정을 정의한다. 이 파일에는 HDFS 클러스터의 동작을 제어하는 다양한 구성 옵션이 포함되어 있다. 예를 들어, 네임노드의 주소, 데이터 디렉터리, 복제 수 등의 정보가 포함될 수 있다.main/resources 디렉터리에 배치하는 이유main/resources는 애플리케이션의 모든 리소스 파일(예:..
-
Kafka standalone 카프카(kraft모드 in local) 실행을 위한 준비와 실행 $ bin/kafka-storage.sh random-uuidcKUMbEGERui8cHUhwdc6XA$ bin/kafka-storage.sh format -t cKUMbEGERui8cHUhwdc6XA -c config/kraft/server.propertiesFormatting /tmp/kraft-combined-logs with metadata.version 3.6-IV2.$ bin/kafka-server-start.sh config/kraft/server.properties$ bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092 --version3.6.2 카프카 바이너리 다운로드 링크 : https://kafka.apache.org/d..
-
Java & Scala scala에러 Unable to make private java.nio.DirectByteBuffer 해결 방법 Unable to make private java.nio.DirectByteBuffer(long,int) accessible: module java.base does not "opens java.nio" 와 같은 코드가 떠서 놀랬다. intellij에서 sbt로 빌드한 스칼라코드가 실행되지 않을 때가 있는데, 이 오류는 jvm컴파일 버전 때문에 생기는 이슈이다. https://stackoverflow.com/questions/70153343/unable-to-make-private-java-nio-directbytebufferlong-int-accessible Unable to make private java.nio.DirectByteBuffer(long,int) accessibleI'm using P..
인기글
-
Kafka 아파치 카프카 Exactly-once 처리의 진실과 거짓 아파치 카프카와 같은 분산 이벤트 스트리밍 플랫폼을 사용하거나 메시지 브로커를 활용하다 보면 항상 마주치는 문제는 마로 메시지 전달 시멘틱(message delivery semantic)입니다. 메시지 전달 시멘틱은 A지점에서 B지점으로 데이터를 전송할 때 어느 만큼의 신뢰도로 데이터를 전송하는지에 대한 정의입니다. 즉, 특정한 장애 상황(또는 임계치를 벗어난 상황)에서도 보증하는 데이터 전달 신뢰도라고 볼 수 있습니다. 메시지 전달 시멘틱은 크게 세가지로 나뉩니다. 적어도 한번(at least once), 많아도 한번(at most once), 정확히 한번(exactly once). '적어도 한번'은 데이터가 전달될 때 유실이 발생하지는 않지만 중복이 발생할 가능성이 있음을 뜻합니다. 아파치 카프카는 ..
-
개발이야기 python에서 json data다룰때 key가 존재하는지 확인하는 가장 간단한 방법 python에서는 json타입을 다룰 때가 많습니다. json의 key가 존재하는지도 확인할 때가 많은데요 이를 확인하기 위해 아래와 같은 function을 활용하면 아주 쉽게 처리할 수 있습니다. def is_json_key_present(json, key): try: buf = json[key] except KeyError: return False return True 원문 - stackoverflow.com/a/59288397/9634545
-
Kafka 카프카 auto.offset.reset 종류 및 사용방법 카프카에서 consumer를 새로 생성하여 topic에서부터 데이터를 가져오기 위해서는 여러 옵션이 필요한데 그 중 하나는 auto.offset.reset입니다다. 이 auto.offset.reset의 역할에 대해 알아보겠습니다. 아래 글은 Kafka-client, Kafka broker 2.4 기준으로 작성하였습니다. auto.offset.reset auto.offset.reset에서 offset은 consumer offset입니다. 만약 이번에 topic에 붙은 consumer의 offset정보가 존재하지 않는다면 auto.offset.reset의 default값(latest)이나 또는 설정한 값을 따라가게 됩니다. auto.offset.reset - latest : 가장 마지막 offset부터 - ..
-
일상 자전거를 구입하지 않고 카카오T바이크를 타는 5가지 이유 19년 3월 9일 카카오T바이크(이하 카카오바이크)를 처음 탄 이후 20번이 넘게 자전거를 이용했고 더 이상 나의 생활과 카카오바이크는 땔수없는 필수적인 요소로 자리잡았다. 올해 초 저렇게 허접한 노랑 검정색의 자전거를 누가 탈까 생각 했던 나였지만, 이제 카카오바이크에 누구보다 빠르게 달려가서 QR코드를 찍고 탑승하는 나의 모습을 보면 사람이 이렇게 바뀔 수 있구나 생각도 든다. 판교, 분당 근처가 주 생활권인 나에게로서는 버스나 택시보다 더 나은선택으로 다가올것이라고는 최초탑승 전에는 알지 못했다. 탑승 횟수가 1번, 10번, 20번이 넘어가면서 왜 카카오모빌리티가 막대한 resource(자전거 유지보수, 구입비용, 서비스 비용 등)를 들여 이 서비스를 했는지 알것만도 같았다. 카카오모빌리티는 이 서..
-
개발이야기 결혼식 청첩장 Github blog로 세련되게 만들기. 후기! 2019년 5월 18일. 이날은 여자친구와 4년 그리고 1일 되는날, 그리고 결혼식이 열렸던 날이다. 결혼식을 준비하면서 만든 github.io blog기반 모바일 청첩장을 만들게 된 이유와 만들기까지의 과정에 대해 이야기 하고자 한다. 결혼식을 위해 뼈발자(뼈속까지 개발자)인 나는 어떻게 결혼식을 준비하는데 있어 실력을 발휘할까 고민하던 도중 모바일 청첩장을 직접! 만들어보면 어떨까 아이디어를 생각하였다. 모바일 청첩장을 직접 만들고자 한 이유는 아래와 같았다. 첫째. 바른x, 더카x 등 종이 청첩장을 만들어주는 사이트의 디자인이 마음에 안든다. 둘째. 무료로 청첩장을 만들어 주는 사이트는 시간이 지나면 만료되어 더이상 조회가 불가능하다. 셋째. 선물 예약 기능. 친구들에게 필요한 선물을 알려주고 예약..
-
하둡 Hdfs dfs 명령어 정리 및 설명(ls, cat, du, count, copyFromLocal 등) Hadoop을 적절히 사용하기 위해서는 hdfs 명령어를 알아야 한다. 아래에 정리를 해 보았다. ※ 2.6.0 version을 기준으로 정리함 Hadoop 명령어 Hadoop filesystem command를 사용하기 위함. Usage : hdfs dfs [GENERIC_OPTIONS] [COMMAND_OPTIONS] HDFS 명령어 File System(FS) shell은 Hadoop Distributed File System(HDFS)를 여타 파일시스템처럼 관리하기 위한 목적으로 command를 사용할 수 있다. Hadoop-2.6.0에서는 총 33개의 HDFS 명령어를 지원한다. 1) appendToFile Local 파일들을 hdfs에 append 저장하기 위한 목적 Usage: hdfs df..
-
Kafka 카프카 컨슈머의 auto.offset.reset 옵션을 반드시 earliest로 변경해야 하는 이유 auto.offset.reset는 카프카 컨슈머를 다루는데 있어 아주 중요한 부분입니다. 해당 옵션이 가질 수 있는 값은 다음과 같습니다. earliest : 마지막 커밋 기록이 없을 경우, 가장 예전(낮은 번호 오프셋) 레코드부터 처리 latest : 마지막 커밋 기록이 없을 경우, 가장 최근(높은 번호 오프셋) 레코드부터 처리 none : 커밋 기록이 없을 경우 throws Exception 해당 옵션은 필수 옵션이 아닌 선택 옵션으로서 입력을 하지 않으면 자동으로 latest로 설정됩니다. 일반적으로 컨슈머를 운영할 때 이 옵션을 건드리는 경우는 거의 드문데요. 그러다보니 기본값인 latest로 설정할 경우 우리도 모르게 운영 중 데이터의 유실이 발생할 수 있다는 사실을 놓치기도 합니다. 그러다보..
-
Kafka kafka consumer와 seekToBeginning를 활용하여 offset reset하기 카프카 컨슈머 클라이언트는 seekToBeginning 함수가 있습니다. 이 함수를 사용하면 특정 파티션의 오프셋을 최소 레코드로 지정할 수 있습니다. /** * Seek to the first offset for each of the given partitions. This function evaluates lazily, seeking to the * first offset in all partitions only when {@link #poll(Duration)} or {@link #position(TopicPartition)} are called. * If no partitions are provided, seek to the first offset for all of the currently as..
-
빅데이터 프로메테우스 지표 rate와 increase의 차이점 프로메테우스로 다음과 같은 지표들을 쌓을 때가 있습니다. http_request_count_total{method="POST",router="/"} 10 http_request_count_total{method="POST",router="/"} 15 http_request_count_total{method="POST",router="/"} 20 http_request_count_total{method="POST",router="/"} 40 http_request_count_total{method="POST",router="/"} 45 http_request_count_total{method="POST",router="/"} 60 상기와 같은 지표는 http request때 마다 counter를 1씩 in..
-
Kafka 카프카의 토픽 데이터를 REST api로 주고받자 - Kafka rest proxy 사용 confluent에서는 rest proxy라고 불리는 카프카 클러스터를 위한 RESTful interface application을 오픈소스로 제공하고 있습니다. 기존에 Kafka connect, Kafka client로 데이터를 전달하는 것과는 사뭇 다르게 REST api를 사용한다는점이 독특한데요. 직접 코드를 짜지 않고 범용적으로 사용되는 http을 사용해서 데이터를 넣고 뺄 수 있다는 점이 독특합니다. 오늘은 rest proxy를 local에 설치하고 실행해보겠습니다. 준비물 - local kafka cluster - git - terminal - postman 다운로드 및 실행 rest proxy를 사용하기 위해서는 rest proxy가 포함된 confluent의 community package..
728x90