묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
커넥트 스타트시 오류
안녕하세요! 선생님 강의 잘 듣고 있습니다.다름이 아니라커넥트 내부 토픽이해 - connect0offsets, connect-status, connect-config 강의 실습 중spool 커넥터를 띄워놓고 spooldir csv 메세지 보내는 과정에서커넥터가 정상 작동을 안하는 것 같아이부분을 반복했더니 커넥트 기동중 spool 커넥터에 에러가 잡히는데 혹시 해결방안 여쭤봐도 될까요 ? 커넥트 기동시 뜨는 에러 로그입니다. path annotation 이 비었다고 하는 것같은데 새로 지정을 어디서 해야 할까요?org.apache.kafka.connect.errors.ConnectException: Failed to start connector: csv_spooldir_source at org.apache.kafka.connect.runtime.distributed.DistributedHerder.lambda$startConnector$25(DistributedHerder.java:1461) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:334) at org.apache.kafka.connect.runtime.WorkerConnector.doRun(WorkerConnector.java:140) at org.apache.kafka.connect.runtime.WorkerConnector.run(WorkerConnector.java:117) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: org.apache.kafka.connect.errors.ConnectException: Failed to transition connector csv_spooldir_source to state STARTED ... 8 more Caused by: java.lang.IllegalStateException: Could not find any input file(s) to infer schema from. at com.google.common.base.Preconditions.checkState(Preconditions.java:510) at com.github.jcustenborder.kafka.connect.spooldir.AbstractSpoolDirSourceConnector.start(AbstractSpoolDirSourceConnector.java:63) at org.apache.kafka.connect.runtime.WorkerConnector.doStart(WorkerConnector.java:184) at org.apache.kafka.connect.runtime.WorkerConnector.start(WorkerConnector.java:209) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:348) at org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:331) ... 7 more 3월 08, 2023 1:54:32 오후 org.glassfish.jersey.internal.Errors logErrors 경고: The following warnings have been detected: WARNING: The (sub)resource method listLoggers in org.apache.kafka.connect.runtime.rest.resources.LoggingResource contains empty path annotation. WARNING: The (sub)resource method createConnector in org.apache.kafka.connect.runtime.rest.resources.ConnectorsResource contains empty path annotation. WARNING: The (sub)resource method listConnectors in org.apache.kafka.connect.runtime.rest.resources.ConnectorsResource contains empty path annotation. WARNING: The (sub)resource method listConnectorPlugins in org.apache.kafka.connect.runtime.rest.resources.ConnectorPluginsResource contains empty path annotation. WARNING: The (sub)resource method serverInfo in org.apache.kafka.connect.runtime.rest.resources.RootResource contains empty path annotation. [2023-03-08 13:54:32,670] INFO Started o.e.j.s.ServletContextHandler@1e253c9d{/,null,AVAILABLE} (org.eclipse.jetty.server.handler.ContextHandler:915) [2023-03-08 13:54:32,671] INFO REST resources initialized; server is started and ready to handle requests (org.apache.kafka.connect.runtime.rest.RestServer:303) [2023-03-08 13:54:32,671] INFO Kafka Connect started (org.apache.kafka.connect.runtime.Connect:57) min@min-VirtualBox:~$ curl -X GET http://localhost:8083/connectors/csv_spooldir_source/status | jq '.' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1375 100 1375 0 0 8647 0 --:--:-- --:--:-- --:--:-- 8647 { "name": "csv_spooldir_source", "connector": { "state": "FAILED", "worker_id": "127.0.1.1:8083", "trace": "java.lang.IllegalStateException: Could not find any input file(s) to infer schema from.\n\tat com.google.common.base.Preconditions.checkState(Preconditions.java:510)\n\tat com.github.jcustenborder.kafka.connect.spooldir.AbstractSpoolDirSourceConnector.start(AbstractSpoolDirSourceConnector.java:63)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doStart(WorkerConnector.java:184)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.start(WorkerConnector.java:209)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:348)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doTransitionTo(WorkerConnector.java:331)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.doRun(WorkerConnector.java:140)\n\tat org.apache.kafka.connect.runtime.WorkerConnector.run(WorkerConnector.java:117)\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat java.base/java.lang.Thread.run(Thread.java:829)\n" }, "tasks": [], "type": "source" }
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
'멀티스레드 컨슈머 애플리케이션' 편을 보고 질문드립니다~
안녕하세요 데브원영님. 수준높은 강의 항상 잘보고있습니다. 다름아니라, '멀티스레드 컨슈머 애플리케이션' 강의를 듣고 관련 내용을 찾아보던 와중에 '메세지 역전현상' 이라는 이슈를 찾았습니다.멀티 스레드 혹은 멀티 프로세스로 동작할경우, 파티션이 하나더라도 스레드의 작업종료 시간이 전부 다르기때문에 순서보장이 필요한 시스템에 치명적이라는 내용이였습니다. 이 문제를 해결하기 위해 메세지에 key와 partioner 인터페이스를 구현하더라도 파티션 수와 스레드 수가 1:1 매칭이 아닐 경우 순서가 틀어지거나, Key 설계를 잘못할 경우 특정파티션으로 데이터가 몰리게되어 scale-out을 한 의미가 퇴색 될 것 같아서요.'순서보장 + (다중 파티션 + 다중 컨슈머 설계로 성능확보)' 가 필요한 시스템에서 '메세지 역전현상' 문제를 해결 할수 있는 방법이 있을까요?.. 발행된 메세지가 DB에 적재되있을 경우, 최종 일관성(순서보장문제)을 DB에 조회하여 해결할 수 있을 것 같은데요!.. 저장소에 적재되지 않는 메세지일 경우 해당문제를 어떻게 풀어야될지 잘 모르겠네요 ... 관련하여 답변 부탁드리겠습니다!.. 확인 감사합니다.~
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Config Client의 설정정보 업데이트 원리
안녕하세요. 강의 잘 듣고 있습니다. 강의를 듣던 중 아래 몇 가지 이해가 부족한 부분과 조언이 필요한 부분이 있어 이렇게 질문 남깁니다. 제가 이해하기로, Spring Cloud Config는 애플리케이션의 환경정보(이하 env)를 외부로부터 받아오기 위한 의존성이며, Spring Actuator의 /refresh는 단지 env를 업데이트 하기 위해 사용하는것 뿐이다. 둘 사이의 종속적인 부분은 없어보인다. 식으로 이해를 했습니다. 제가 생각한 것이 맞는지 궁금합니다. 혹은 참고해서 공부할 수 있는 키워드가 있다면 참고하여 학습하도록 하겠습니다. @Component 어노테이션으로 Spring Bean이 등록이 될 때, @Value 어노테이션을 통해 환경정보를 주입받을 수 있는 것을 알고 있습니다. 직접 확인을 해보니 /refresh는 Environment의 값은 바꾸지만, @Value를 통해 주입된 필드값은 수정되지 않음을 볼 수 있었습니다.Spring Cloud Config를 도입한다고 하면 @Value를 통해 주입받던 모든 곳을 Environment를 통해 가져오는 것으로 수정을 해야하는지 혹은 다른 해결방안이 있는지 궁금합니다. 감사합니다.
-
미해결카프카 완벽 가이드 - 코어편
Active segment가 지워진다면
Active Segment도 정리 대상이 되어서 지워지고 난 후에는 새로 Active Segment를 자동으로 생성해주나요?뭔가 개발자가 알아야하는 문제점은 없을지 궁금합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
보상 트랜잭션의 대한 후속 강의 문의합니다.
강의를 다 들어가는데요~ msa에서 예외가 발생 시 보상 트랜잭션의 대한 후속 강의를 제작한다고 들었습니다!해당 후속 강의는 정말 중요한 강의라고 생각되는데.. 언제쯤 업데이트 하실 계획이실까요?
-
해결됨15일간의 빅데이터 파일럿 프로젝트
5 빅데이터 클러스터 구성2 -기본SW 설치 7분 23초 주키퍼 정
주키퍼 설정을 data node인 서버 02로 선택하는 건가요? 말이 끊겨서 안들리네요.그리고 이유를 알고 싶습니다.
-
미해결카프카 완벽 가이드 - 코어편
자바 클라이언트 메세지 전송 테스트 실패
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.카프카를 기동해 두고, simple-topic 을 만들었습니다.네트워크 설정도 강의와 같이 설정했습니다.그리고 자바 클라이언트에서 producer로 메세지 전송을 하면 실패하고 있습니다. 다음과 같은 에러 메세지를 받고있습니다.SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.윈도우 클라이언트에서 리눅스 가상 머신으로 핑은 잘 됩니다.리눅스 머신에서 프로듀서 콘슈머 잘 작동도 하구요.
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 배치 데이터 처리
- 카프카를 공부하시면서 생긴 질문들을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의 잘 듣고 있습니다! 좋은 강의 올려주셔서 감사합니다. 빅데이터 아키텍쳐의 종류와 카프카의 미래 강의 9:00 전후의 카프카가 배치 데이터를 처리하기 위해 제공하는 기능에 대해서 질문이 있습니다.슬라이드의 설명으로 이해하기에는 기존의 배치 데이터는 각 시점의 스냅샷 데이터이지만, 카프카는 변환 기록 로그를 남김으로써 기존의 배치 데이터 스냅샷을 매번 만들 필요 없이 로그로 특정 시점의 데이터를 만들 수 있다 라고 이해했습니다.강의 내용으로는 카프카에서 배치 데이터를 가져오기 위해 기존의 배치 데이터 컨셉인 배치 데이터 스냅샷과, 변환 기록 로그 이렇게 둘 다의 정보를 사용해서 배치 데이터를 표현한다 라고 이해 했습니다. 1, 2번중 어떤게 더 적절하게 이해했는지 궁금합니다.감사합니다!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
application.yml args에러발생이유
강의 잘 듣고있습니다~실습으로 따라하면서 하고있는데 application.yml에서 에러가 발생하는데 왜 그런것일까요??
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 ISR 개념 부분 질문
카프카 ISR 에서 leader partition 이 장애가 있어서 follow partition 이 승계를 받고 그 후 leader partition 이였던 브로커가 정상 작동 된다면 이 partition 은 follow partition 으로 역할을 하는건가요? 그리고 장애가 났을 때 복제되지 못 했던 데이터들은 어떤식으로 복구 할 수 있는지 알고싶습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
스프링 시큐리티 문의 (webSecurityConfigurerAdapter 취소선)
안녕하세요. 스프링시큐리티 로그인관련 진행하다가 extends webSecurityConfigurerAdapter 가 취소선이 나와서 확인해보니 현재는 사용하지않는다고 알게되었습니다. 나름 바꾸면서 진행중인데authenticationManager() 를 사용하려면 어떻게해야되는지 알 수 있을까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
catalog 테이블 자동 create-drop 가 안됩니다.
안녕하세요 application.yml 설정을하고 서버 시작 시 CREATE문자체가 동작을안하는것같습니다.application.yml 과 CatalogEntity.java 는 다음과같습니다. 문제가무엇일까요...
-
해결됨[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
카프카 커넥터를 두가지 사용하는 이유
안녕하세요 카프카 커넥터를 적용해보려고, 공부중인데, 많은 예시에서 JDBC Connector와 Kafka MySQL Conenctor 두가지를 사용하더라구요 JDBC Connector는 데이터를 관계형 DB와 잘 연동되게 가져오고 넣기위한 소스들을 제공하는 커넥터이고, Kafka MySQL Connector는 카프카와 MySQL DB를 연결하기위한 커넥터이다.라고 제가 이해하고 있는데, 맞는건가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
H2 최신 버전 사용 시 server mode 사용에 따른 application.yml 파일 설정(테이블은 생성됐는데 data.sql INSERT 안될 시 참고)
Spring Boot 3.XX 대 버전으로 최신 버전 사용 시 H2를 이전 버전으로 사용 불가합니다.따라서 H2를 따로 켜서 실행해준 후, catalog-service에서 Server mode로 연결하던지 따로 켜 둔 H2를 연결하던지 선택해야합니다. 이 때, Server Mode로 프로젝트와 H2를 연결시키면 강의 내용의 설정만으로는 data.sql의 INSERT 쿼리문이 동작하지 않습니다. 그렇기 때문에 관련 설정을 application.yml에 추가해주어야 하는데요. 아래와 같이 설정하면 됩니다. stackoverflow와 강사님의 2021년 답변을 참고하여 해결하였습니다. server: port: 0 spring: application: name: catalog-service h2: console: enabled: true settings: web-allow-others: true path: /h2-console datasource: driver-class-name: org.h2.Driver url: jdbc:h2:tcp://localhost/mem:testdb username: sa jpa: hibernate: ddl-auto: create-drop show-sql: true generate-ddl: true defer-datasource-initialization: true sql: init: mode: always eureka: instance: instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}} client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka logging: level: com.example.catalogservice: DEBUG 추가한 내용은 spring.jpa.defer-datasource-initialization과 spring.sql.init.mode 설정입니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Kafka Docker-compose기동시 connect는 어떻게 설정하나요?
안녕하세요!Kafka Docker-compose기동시 connect는 어떻게 설정하나요?강의내용에는 이 부분이 생략된 것 같아서 질문합니다!
-
미해결카프카 완벽 가이드 - 코어편
멀티브로커에서 consumer 사용하기
안녕하세요 강의에서 멀티브로커 상에서 producer로 데이터를 집어 넣는 것은 실습을 하는데요데이터를 읽을 때는 kafka-dump-log를 사용해서 읽습니다. 혹시 consumer를 사용해가지고는 멀티 브로커 상에서는 읽을 수 없나요? confluent kafka community 버전에서는 불가능한 건가요? 가능하다면 스크립트를 알려주시면 감사하겠습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
후속 강의 Webflux가 듣고 싶습니다.
강의를 듣다보니, Webflux 후속 강의를 준비하실 생각이 있다고 하셨는데, 계획이 있을까요?
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
브로커, 토픽, 파티션관계
안녕하세요!조금 애매한 부분이 있어서요!-브로커 3대토픽 2개파티션 - rf 설정 2- 로 만약에 설정을 한다면, 각 브로커에 토픽 2개씩 설정이 된거고, 파티션은 2개로 설정했기에 브로커 3개에서 라운드로빈으로 설정이 되는건가요?이게 .. 어렵네요. 브로커 3대. 딱설정하고.. 토픽이 2개라고한다면 각 브로커마다 토픽이 테이블처럼 있을거고..이제 파티션을 라운드로빈으로 돌려서 설정을 해야하는데.. 이게맞는거지 ㅠㅠㅠ
-
미해결[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
커넥트(소스), 커넥트(싱크)
안녕하세요!커넥트(소스), 커넥트(싱크)에 대한 이해가 부족합니다.DB 연결시, 커넥션풀과 같은 느낌이라고 생각하면 되는건가요? 아니면 그 풀안의 한개의 커넥션이라고 생각하면 되는걸까요? 아니면 전혀 다른 개념인지요. 감사힙낟!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Spring Boot 최신 3.XX 버전 Security 설정 공유드립니다.
최신 버전 진행하시는 분들을 위해 공유드립니다.Spring Security Configuration 설정 내용이 변경되었습니다. WebSecurityConfigurerAdapter 클래스가 deprecated되었는데요. 해당 클래스를 상속 받아 config 메소드를 구현하는 대신 SecurityFilterChain을 반환하고 직접 Bean으로 등록하도록 설정 방법이 바뀌었습니다. package com.example.userservice.security; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class WebSecurity { private static final String[] WHITE_LIST = { "/users/**", "/**" }; @Bean protected SecurityFilterChain config(HttpSecurity http) throws Exception { http.csrf().disable(); http.headers().frameOptions().disable(); http.authorizeHttpRequests(authorize -> authorize .requestMatchers(WHITE_LIST).permitAll()); return http.build(); } } 강의 내용을 진행하기 위해서 강의에 나온 설정을 위처럼 설정해보았는데요. 일단 이렇게 설정하면 강의를 진행하는데 문제 없을 것이니 참고 바랍니다~