안녕하세요. 먼저 좋은 수업을 강의 해주셔서 감사합니다! 다름이 아니라 제가 해당 수업 진행 중 오류가 있어서 문의드립니다! mysql 콘솔에서는 오류가 발생 하지 않았으나, H2 Console 에서 테이블을 조회시 SELECT * FROM ORDERS; (conn=42) Table 'mydb.ORDERS' doesn't exist 42S02/1146 이러한 에러가 발생하는데 원인이 무엇일까요?? order-service 에서 조회시에는 문제가 없습니다..
마이크로 서비스 사용간 (RestTemplate 혹은 Feign) 에서 Eureka 의 서비스 명으로 USER-SERVICE 같은 마이크로 서비스명을 통하여 직접 호출하면 결론적으로는 GATEWAY-SERVICE 를 통하여 사용했을때의 장점을 잃어버리는 것 같은데, 섹션 10 에서는 게이트웨이를 통하지 않고 직접 서비스를 호출하는 이유가 있을까요?
안녕하세요 지금까지 강의 잘 따라오고 있었는데요 spark ssh 접속하여 shell 실행 후 smartcar_master_df 생성까지 잘 되었는데 smartcar_master_df 조회를 하면 아래와 같은 오류가 발생합니다. 구글링해서 찾아봐도 해결이 안되는데 도움 부탁드립니다. >> 오류메세지 >> WARN cluster.YarnScheduler: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
안녕하세요. 선생님 강의를 듣고 kafka connect 매커니즘에 대해 상세하게 알게 됐습니다. 다만, 실무에 적용을 하는 도중 문제에 봉착해 도움을 구하고자 문의드립니다. 현재 debezium mysql connector를 사용하여 source 데이터는 topic으로 저장하는데 성공하였지만, 해당 데이터를 mongodb 에 저장하는데 저장/업데이트는 정상적으로 되지만 delete 시 반영이 안되는 문제가 있습니다. RDB와는 다르게 mongodb sink connector는 insert.mode는 지원하지 않고 write model Strategy 를 활용하는 걸로 보이는데, 아래와 같이 sink connector를 설정할 경우 account_id 를 key 로 해서 업데이트는 가능한데, 삭제는 안되네요? "connector.class": "com.mongodb.kafka.connect.MongoSinkConnector", "document.id.strategy":"com.mongodb.kafka.connect.sink.processor.id.strategy.PartialValueStrategy", "document.id.strategy.partial.value.projection.list":"account_id", "document.id.strategy.partial.value.projection.type":"AllowList", "writemodel.strategy":"com.mongodb.kafka.connect.sink.writemodel.strategy.ReplaceOneBusinessKeyStrategy", 혹시 Source 에서 입력, 업데이트, 삭제를 mongodb에 반영하려면 어떻게 해야 되는지 알 수 있을까요? 감사합니다.
MSA에서 다른 어플리케이션의 데이터를 가져오는 방법으로 RestTemplate, FeignClient를 사용하는 방법을 알려주셨는데요. 데이터를 가져오는 것은 보통 rest 통신을 사용하여 가져오나요? 실무에서 카프카나 다른 라이브러리를 사용해서 가져오는지, 아니면 설명해주신 것 처럼 rest 통신을 통해 가져오는지 궁금합니다~
미러메이커2를 사용할 때 각 카프카의 버전이 달라도 사용이 가능한가요? 예를 들어서 하나의 클러스터는 2.2버전이고 하나의 클러스터는 3.1 버전이라고 했을 때 2.2버전은 미러메이커2를 지원하지 않는데 3.1 버전의 클러스터에서 미러메이커2를 실행하면 2.2버전에서 3.1버전으로 데이터가 가져와지나요...?
안녕하세요 강사님 좋은 강의 감사합니다. 파티션 할당 전략 중 CooperativesStickyAssignor 전략 실습중에 에러가 발생하였습니다 에러 내용은 두번째 컨슈머를 기동하면서 첫번째 컨슈머 콘솔에서 "Request joining group due to: group is already rebalancing" 라는 에러가 발생하면서 리밸런싱이 완료되지 않아 어느 컨슈머에도 파티션이 할당되지 않는 문제가 발생합니다. 해당 에러는 타임아웃이 나기전까지 반복해서 발생하며 이후에는 두 컨슈머 모두 종료됩니다 해결방법좀 부탁드립니다ㅠ.ㅠ
안녕하세요. 선생님 수업을 잘 듣고 있습니다. 일단 선생님이 알려주신 부분하고 다르게 하고 있는게 있어서 환경 부터 어떻게 했는지 말씀 드릴게요. 일단 kafka는 Confluent kafka 가 아닌 apache kafka 로 설치 했습니다. EC2 에서 총 8개의 인스턴스를 구축 했으며 Apache Zookeeper 3.8.1 3개 Apache Kafka 2.13-3.3.2 3개 => Source connect : Debezium mysql connect 2.1.2 => Sink connect : Confluent JDBC Connector 10.6.3 Confluent Schema registry 7.3.0 1개 mysql DB 1 개 (Source 와 Sink 는 user 로 분리해서 데이터 넣는 방식으로 테스트 중입니다) 위와 같이 구성을 해서 구축을 했습니다. 테스트는 json 방식으로 Source 와 sink 쪽에 각각 connect 정보 등록 해서 데이터 전달 되는것까지 통과 했습니다. Confluent Schema registry 는 설치 하고 카프카서버에서 스키마 서버 8081포트 가 뜨는것도 확인 했습니다. Json 방식으로 Schema registry 로 데이터 전달 되는것도 문제 없었습니다. 문제점. 수업에 있는 Avro 로 connect 등록 할려고 하니 바로 에러가 납니다. {"error_code":500,"message":"Error trying to forward REST request: Connector configuration is invalid and contains the following 2 error(s):\nInvalid value io.apicurio.registry.utils.converter.AvroConverter for configuration key.converter: Class io.apicurio.registry.utils.converter.AvroConverter could not be found.\nInvalid value io.apicurio.registry.utils.converter.AvroConverter for configuration value.converter: Class io.apicurio.registry.utils.converter.AvroConverter could not be found.\nYou can also find the above list of errors at the endpoint /connector-plugins/{connectorType}/config/validate "} 위와 같은 에러에 대해 일단 조치한 점은 kafka 의 connect-distributed.properties 에서 설정한 "plugin.path" 에 Kafka Connect Avro Converter( https://www.confluent.io/hub/confluentinc/kafka-connect-avro-converter)를 압축 풀어서 두었습니다. connect 서버 재 가동 후, 아래 명령어로 Plugin 확인 하였는데 mysql connect 나 jdbc Source connect , jdbc sink connect 는 뜨는데 "avro" 관련된 plugin 이 보이지 않았습니다. "curl --location --request GET ' localhost:8083/connector-plugins ' | jq '.'" 그래서 위 에러가 Avro 를 못찾는다는 이유가, kafka에 avro 를 설정을 못한건지? Confluent Schema registry 에 avro 문제 인건지? 아니면 제가 Confluent kafka 가 아닌 apache kafka 로 설치 해서 인지 알수가 있을까요?
안녕하세요 선생님 양질의 강의 너무 감사하게 잘듣고 있습니다. 다름이아니라 강의를 듣던 중 궁금한 부분이 있어서 글을 남기게 되었습니다. Broker로 부터 통신을 한 후에 pendingCompletion(ConcurrentLinkedQueue) 에 response를 적재를 하고 적재된 pendingCompletion 기준으로 Fetcher가 데이터를 가져오게 되는데 이 과정에서 Fetcher는 별도의 스레드로 동작하는지요? "Consumer Fetcher관련 주요 파라미터와 Fetcher 메커니즘의 이해: 13:22"
안녕하세요! 선생님 강의 잘 듣고 있습니다. 다름이 아니라 커넥트 내부 토픽이해 - 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 Config는 애플리케이션의 환경정보(이하 env)를 외부로부터 받아오기 위한 의존성이며, Spring Actuator의 /refresh는 단지 env를 업데이트 하기 위해 사용하는것 뿐이다. 둘 사이의 종속적인 부분은 없어보인다. 식으로 이해를 했습니다. 제가 생각한 것이 맞는지 궁금합니다. 혹은 참고해서 공부할 수 있는 키워드가 있다면 참고하여 학습하도록 하겠습니다. @Component 어노테이션으로 Spring Bean이 등록이 될 때, @Value 어노테이션을 통해 환경정보를 주입받을 수 있는 것을 알고 있습니다. 직접 확인을 해보니 /refresh는 Environment의 값은 바꾸지만, @Value를 통해 주입된 필드값은 수정되지 않음을 볼 수 있었습니다. Spring Cloud Config를 도입한다고 하면 @Value를 통해 주입받던 모든 곳을 Environment를 통해 가져오는 것으로 수정을 해야하는지 혹은 다른 해결방안이 있는지 궁금합니다. 감사합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 카프카를 기동해 두고, simple-topic 을 만들었습니다. 네트워크 설정도 강의와 같이 설정했습니다. 그리고 자바 클라이언트에서 producer로 메세지 전송을 하면 실패하고 있습니다. 다음과 같은 에러 메세지를 받고있습니다. 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. 윈도우 클라이언트에서 리눅스 가상 머신으로 핑은 잘 됩니다. 리눅스 머신에서 프로듀서 콘슈머 잘 작동도 하구요.