해결된 질문
작성
·
592
·
수정됨
0
환경 문제로 인하여 Oracle Cloud Vm 서버 3개를 별도로 띄어 실습 환경을 구성하였습니다.
문제는 Hbase 에 적재가 안된다는 것입니다.
일단 환경구성에서 모든 모듈들을 latest기준으로 구성을하여서 강의내용과는 다를수가 있을듯한데요.
데이터 수집 적재 파이프라인 에서 kafka 까지 들어오는것은 확인하였으나 storm 토폴로지에서 kafkaspout 에서 반응이 없는것으로 봤을때 bigdata.smartcar.storm-1.0.jar 에서 바라보는 어떠한 환경설정정보가 맞지 않아 생긴문제로 생각이되어 소스를 봤으나 별다르게 찾은것은 없습니다.
zookeeper cli 에서는 kafa producer 노드가 있는것은 확인했고 SmartCar-Topic 노드는 없는것으로 확인했습니다.
혹시 놓친부분이 있을까요?
답변 8
0
안녕하세요! 빅디 입니다.
문제 해결에 수고 많으셨습니다. 박주성님!
아마도 강의 내용보다...이런 문제 해결의 경험이 향후 박주성님께 큰~~~ 도움이 될겁니다.
파일럿 프로젝트 끝까지 파이팅! 입니다. -빅디 드림
0
네~ 박주성님!
파일럿 환경의 SW가 모두 강의 기준과 같다는 전제로 말씀 드릴께요..
제공드린 bigdata.smartcar.storm-1.0.jar는 반드시 jdk 1.8 환경에서 작동 해야 합니다.
그리고 주키퍼의 Zk노드의 /SmartCar-Topic는 스카트카 스톰 토폴로지가 작동하기 시작하면, 자동 생성이 되면서 오프셋 정보가 관리 되는 곳입니다. (참고로 /brokers/topic/SmartCar-Topic/partition.. 는 브로커 토픽 메타를 관리하는 다른 Z노드 입니다.)
현재 김주성님 환경의 스톰UI에서 보이는 "Topology Spouts lag error"는 스톰 토폴로지 최초 배포시 카프카 스파우트에서 일시적으로 발생 할 수 있는 메세지 입니다. 스파우트가 메세지를 정상적으로 수신하기 시작하면 자연스럽게 없어질 것으로 보입니다.
우선 스톰UI에서 "Topology Spouts lag error"는 무시 하고 문제 해결에 접근해 봐 주세요~
-빅디 드림
0
안녕하세요! 빅디 입니다.
파일럿 프로젝트가 수월하지 않아 박주성님의 주말이 편안하지 안을듯 싶네요...TT
사용중이신 환경이 상이해서 문제의 원인을 찾는게 쉽지만은 않네요.
그래도 포기 하지 말고, 원인 이라도 명확해 파악 하는게 중요합니다.
그래서 다시 초심으로 돌아가 하나씩 정리를 해보 겠습니다. ^^
먼저 JDK의 버젼 확인을 미쳐 못했는데요, Java 버젼이 매우 중요 한 건 아시죠?! Server01/02에 java -version이 어떻게 되는지요?
두번째로 주키퍼의 Z노드의 /SmartCar-Topic/xxxxx(offsetid) 를 못찾는 이유를 알아야 하는데요?! 못찾는건지 생성이 안된건지 다시 확인 부탁 드립니다. 주키퍼 cli로 접속해서 아래 명령 확인요~
[zk: localhost:2181...] ls /SmartCar-Topic
세번째로 스톰토폴로지(bigdata.smartcar.storm-1.0.jar)를 박주성님 환경에 맞춰 새롭게 빌드해서 사용 하셨는지요?!
요렇게 확인 부탁 드립니다. -빅디 드림
안녕하세요 빅디님.
주말까지 답변해주셔서 감사합니다.
빅디님 말씀처럼 포기하지는 않고 천천히 진행은 계속해볼예정입니다 격려 말씀으로 다시한번 마음을 다잡게 되네요.
첫째로 현재 사용중인 java version 은 11이며, 해결과정중 jdk 문제일 수 있다고 판단을 해서 jdk 8 로 변경후 진행을 예정하고 있습니다.
두번째로 주키퍼의 노드에는 해결과정 처음부터 /SmartCar-Topic 이 생성이 안된 상태였습니다.
예상하기로는 Storm 에서 /SmartCar-Topic 관련 노드를 생성하는 과정중 실패가 있었지만 인지하지 못하고 계속해서 찾는것처럼 보였습니다.
세번째로 스톰토폴로지(bigdata.smartcar.storm-1.0.jar) 는 올려주신 그대로도 사용해보았고, 제 환경에 맞게 java 빌드 (소스는 SmartCarDriverTopology.java 의 68 line 의 zkPathName 만 변경해서 java 11로 빌드해서 사용해보고 다시 원복하여 java 11로 빌드해서 사용해보았습니다) 후에도 테스트 해보았습니다.
결과는 생성되지도 않은 노드를 (/{변경한노드명}/{offsetId}) 참조하려고 생기는 오류 동일하게 났습니다.
0
안녕하세요! 박주성님!
생각 하시는것 처럼 사용중인 SW들과 파일럿용 스톰톨폴로지(bigdata.smartcar.storm-1.0.jar)간의 의존성 문제가 원인으로 보입니다.
초기 아키텍처링 및 환경구성시 늘 발생 하는 문제들이긴 합니다. TT
(저 또한 관련해 아키텍처링 및 환경구성시 같은 문제로 항상 어려움을 겪습니다. ^^;;)
방법으로 현재 구성하신 SW 버젼에 맞춰 스톰토폴로지를 새롭게 빌드 하는 방법이 있지만, 많은 시행 착오와 테스트 과정이 필요하실 겁니다.
아니면 카프카의 버젼을 파일럿 환경에서 표준으로 설치하는 2.2.1 버젼으로 재설치해 사용하는 방법을 추천 드리고도 싶습니다.
우선은 파일럿 프로젝트 전체 과정을 강의에서 제공 드린 표준 환경으로 마치고, 새로운 환경에 도전해 보시는건 어떠신지요?!
-빅디 드림
안녕하세요 빅디님.
kafka 버전을 2.2.1 , 1.1.1 두가지 모두 설치후 진행하였으나 동일한 결과를 확인했습니다.
혹시 몰라 zookeeper 버전도 3.7.1 사용해봤으나 동일하였습니다.
해결과정중 jvm 관련 오류 처리도중 추가적으로 나온 오류들이 있어 별도로 화면 첨부하였습니다.
의견주시면 감사하겠습니다.
HBASE 연결수립 관련 오류는 nc 로 포트 정상접근까지는 확인한 상태입니다. (소스상에서는 zookeeper 설정되어있는 부분 확인했습니다)
생각보다 문제해결에 많은시간이 소요되고있네요, 계속해서 도움주셔서 감사합니다.
ps. 제공해주신 표준환경과 cloudera 없이 vm 환경과 앱들을 설치하며 진행해온 상황이라 우선은 그대로 강의를 쭉 보고 이후에 다시 천천히 진행해볼예정입니다.
여러 환경에 의해 많은 변수들이 있는 만큼 향후에 강의는 docker 환경으로도 제공해주시면 더욱 도움일 될 것 같습니다. 감사합니다!
0
네~ 박주성님!
스톰토폴로지에 반응이 왔다니 다행입니다. ^^
보내주신 로그를 보면 스톰에서 카프카 토픽의 메세지에 대한 offset 정보를 찾을 수 없다는 오류로 보이는데요..
혹시 앞서 말씀 드렸던 1-9번 과정 진행해 보셨는지요?! -빅디 드림
안녕하세요.
네 말씀해주신대로 1-9 번 과정 진행했었고 +Topic 재생성도 진행해보았습니다.
zookeeper node 의 위치를 왜 '/SmartCar-Topic/6216a4f6-6ffa-4804-a14a-090a64726c21' dose not exists.;' 에서 보려고 하는지는 모르겠으나 Unable to get offset lags for kafka 의 Reason 으로 없는 위치의 zookeeper 노드를 참조하려고 하는 것 같아 보였습니다.
bigdata.smartcar.storm-1.0.jar 의 kafka 버전을 올려서 빌드해보려했으나 kafka.api.offsetrequest 가 버전 이후로 사라진듯하여 spout 배포에는 실패했습니다.
0
아~ 넵! 정확히 이해 됐습니다. ^^;;
스톰의 버젼이 좀 높아 보이네요!! 제공드린 스톰의 토폴로지 jar가 Version 1.2.3 에서 빌드된거라 실행 환경이 달라지면 호완성에서 문제가 될 수 있습니다. (만약 요 문제가 의심 된다면 스톰의 로그를 확인해 보시고, 스톰 버젼을 1.2.3으로 재설치후 테스트 해 보시고요~, 참고로 이런 트러블 슈팅을 할 땐 각 서버의 로그를 꼼꼼히 체크해 보시는게 중요 합니다. )
다음으로...
설치하신 소프트웨어들간의 의존성 문제가 없다면, kafka 브로커에 수신된 메세지의 오프셋(스톰이 마지막에 꺼낸 메세지 위치 정보)이 꼬여서 관련 현상이 발생 할 수 있습니다.
보통 다중화 되어 있는 실환경에선 발생하진 않지만, 싱글노드로 구성되어 강제 종료등이 빈번한 파일럿 환경에서 ZNode의 정보가 꼬이면서 자주 발생 하는 문제 입니다.
방법은, 아래의 절차대로 초기화 해보는 건데요...
1. 스톰 토폴로지 삭제 : $ storm kill "DriverCarInfo
2. CM에서 카프카 중지
3. Service 명령으로 Storm 중지
4. CM에서 주키퍼 중지
5. CM에서 주키퍼 시작
6. Service 명령으로 Storm 시작
7. CM에서 카프카 시작
8. 스톰 토폴로지 재배포
9. 실시간 테스트
위 2가지 케이스 테스트 해봐 주세요! -빅디 드림
의견감사합니다 빅디님
스톰 버젼을 1.2.3로 바꿔서 kafka spout 이 기존 무반응 -> 반응 하는것으로 보아 버전문제는 맞는듯합니다.
이후로는 kafka 버전과 호환이 안되는건지 spout에서 다음과 같은 오류를 내는데요
Unable to get offset lags for kafka. Reason: java.lang.IllegalArgumentException: zk-node '/SmartCar-Topic/6216a4f6-6ffa-4804-a14a-090a64726c21' dose not exists. at org.apache.storm.kafka.monitor.KafkaOffsetLagUtil.getOldConsumerOffsetsFromZk(KafkaOffsetLagUtil.java:396) at org.apache.storm.kafka.monitor.KafkaOffsetLagUtil.getOffsetLags(KafkaOffsetLagUtil.java:277) at org.apache.storm.kafka.monitor.KafkaOffsetLagUtil.main(KafkaOffsetLagUtil.java:127)
zk-node '/SmartCar-Topic/6216a4f6-6ffa-4804-a14a-090a64726c21' dose not exists. /SmartCar-Topic 이 zookeeper node 에는 생성되어있지 않은것은 확인하였습니다.
생각보다 해당오류의 원인에 대한 자료가 많이 없어서 다음 단계로는 kafka 버전 다운그레이드 또는 kafka spout 관련 library 버전 업그레이드 둘중하나 진행계획하고 있습니다.
의견주시면 감사하겠습니다.
0
네~ 박주성님! 빅디 입니다.
Zookeepr의 지노드로 SmartCar-Topic은 반드시 생성 되어 있어야 합니다.
왜 토픽정보가 안만들어 졌는지를 돌아 봐야 할 것 같은데요..
우선 깔끔하게 아래 토픽 삭제 명령을 날리고, 다시 생성해서 CLI로 지노드 확인 부탁 드립니다.
$ kafka-topics --delete --zookeeper server02.hadoop.com:2181 --topic SmartCar-Topic
$ kafka-topics --create --zookeeper server02.hadoop.com:2181 --replication-factor 1 --partitions 1 --topic SmartCar-Topic
-빅디 드림
ps. 혹시 설치한 카프카 버젼은 어떻게 되나요? 왜냐면 최근 카프카 진영해서 주키퍼에대한 의존성을 제거 한다고 발표한 뒤로 최신 버젼에 많은 변화가 있었기 때문입니다.
우선 바쁘신와중 빠른 답변 감사드립니다.
제가 글을 두서없이 적은듯하여 다시 현 상황을 정리해보면,
kafka 의 SmartCar-Topic 은 만들어진 것을 확인했습니다.
zookeeper 노드에서는 ls /brokers/topics/SmartCar-Topic 에 노드가 있는것을 확인했고
질문을 드리고자 했던 부분은 소스상의 68 line의 zkPathName 이 /SmartCar-Topic 으로 할당된 부분에 대해 여쭤본것입니다.
SpoutConfig 의 해당 파라미터를 봤을때는 spout 의 consumer offset 저장 부분과 관련된듯하여 아래와 같이 진행해볼 예정입니다.
우선 말씀해주신 부분 살펴볼 예정이며, 다음은 pom.xml 상의 라이브러리 버전을 올린 후 수정 배포해볼 예정입니다.
Big.D 님의 의견이 남겨주시면 위 과정 이후에 다시 또 반복 진행 해보겠습니다.
pc. 현재 사용하는 버전은 아래 버전을 사용중 입니다.
zookeeper: 3.8.1
storm: 2.4.0
flume: 1.11.0
hadoop: 3.3.5
hbase: 2.5.4
kafka: 2.13-3.4.0
redis: 7.0.11
안녕하세요, 빅디님
여러 일들로 오늘에서야 계획된 해결과정을 진행해볼 수 있었습니다.
결과는 성공했습니다. 문제는 생각보다 쉽게 해결되었는데요 (빅디님이 많이 도와 주신 덕분입니다.)
모든 근본적인 원인은 Java version 의 문제였습니다, hadoop 에서 버전 환경은 확인을 하였으나 hbase(https://hbase.apache.org/book.html#configuration) 지원 및 테스트 버전을 제대로 확인하지 않은 것을 시작으로 하여 storm 까지 영향을 입고 많은 고민을 하게 만들었네요.
파악한 문제는 hbase 에서 zookeeper 에 노드를 제대로 만들지 못한것과, storm 의 이상 동작 이였고 이는 java 버전이 원인으로 발생한것을 확인하였습니다.
꽤나 긴 기간동안 이것 저것 시도해보며 값진 경험을 했습니다. (버전별로 설치하고, 설정을 바꾸고 기동하고를 수십번 한것같습니다) 최신버전의 생태계일지라도 지원되는 java 버전을 확인하는 습관은 항상 들여야 한다는 걸 또 깨닫습니다.
아무쪼록 오랜 시간 지원해주셔서 감사합니다.
언제 또 뵐 수 있는 날 기대하겠습니다.